iT邦幫忙

2022 iThome 鐵人賽

DAY 8
0

它解決了什麼問題?

Three.js 是 WebGL 的高階封裝,讓開發者能夠專注在開發應用,而不用浪費太多心思在操作 WebGL。

WebGL

OpenGL 是一個用來和顯示卡溝通的 API 規範。
OpenGL ES (OpenGL for Embedded Systems) 則是 OpenGL 的子集。
WebGL 則是瀏覽器實作了 OpenGL ES,並透過 Javascript 供網頁使用的 API。

也就是 WebGL 是一個相對底層的 API,從這裡可以看到寫了一大串東西只得到一個綠色的正方形。

概述

Three.js 的使用方式整體而言大致如下:

  1. 有一個場景 (Scene)
  2. 有一個攝影機 (Camera)
  3. 有一個 Renderer
  4. 把一個 Canvas Dom 指配給 Renderer
  5. 把 Scene 和 Camera 指配給就能渲染畫面

接著

  1. 有一個光源 (Light)
  2. 有一個 Geometry
  3. 有一個 Material
  4. 把 Geometry 和 Material 指派給一個 Mesh
  5. 把 Mesh 加入 Scene,這時渲染發生的時候

最後

  1. 註冊一個 render 的函數到 requestAnimationFrame
function animate() {
	renderer.render( scene, camera );
	requestAnimationFrame( animate );
}

效果

比起聽我描述,自己體驗比較有感覺,這些都是用 Three.js 實現的效果。

Babylon.js

最後順便提一下,Babylon.js 是另外一個性質與 Three.js 相近的 Javascript 3D 函式庫,但是它的定位比起 Three.js 是單純的 3D 繪圖函式庫,更傾向於成為一個 3D 遊戲引擎,有支援更多諸如物理運算之類的功能。


上一篇
Day 07 甜死人不償命的 JSX 語法糖 (React 簡介)
下一篇
Day 09 「是糖,我加了語法糖」- R3F (React-Three-Fiber) 簡介
系列文
關於用 Javascript (Typescript) Stack 打造某種 Backend 3D Rendering 的東東這檔事23
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言