先得擺出幾個關鍵詞:場景、燈光、模型、材質、貼圖與紋理、相機、渲染器。
而後我開始裝模做樣地解釋:html
上帝說,要有場景!因而就有了場景,場景去納這萬事萬物。 上帝說,要有光!因而就有了光,燈光去現這大千世界,不然一片漆黑。
上帝以爲缺乏了些生氣,便用泥巴捏了一個小人兒,不叫亞當,她叫小芳。 上帝左看右看,上看下看,這小芳果真生得俊俏,五官精緻加長腿,此曰模型;
雖然小芳不是水作的,卻也在這晨光的照射下顯得皮膚吹彈可破,此曰材質;
上帝莫名竟害羞了,揮手便給他穿上一件花格子長裙,配上了烏黑的長髮,此曰貼圖與紋理;
上帝嘴角不揚卻滿心欣喜,他默默注視着本身的做品,上帝視角彷彿定格在了這一瞬間,這上帝之眼就是相機;
上帝之所見如何,由世界入眼以後大腦冥想計算所得,這智慧高效的大腦就是渲染器。 接下來預先恭喜你,你能夠成爲這網頁3D世界的一個小上帝。
【此段轉自https://juejin.im/post/5b0ace... 】git
相機和軌跡球(trackball)的綁定github
鼠標做爲 PC 端(移動端中的觸摸)的主要交互方式,咱們常常會經過它來選擇頁面上的元素。而對於 Three.js,它沒有相似 DOM 的層級關係,而且處於三維環境中,那麼咱們則須要經過如下方式來判斷某對象是否被選中。web
* 基於屏幕上的點擊位置建立一個 THREE.Vector3 向量。 * 使用 vector.unproject 方法將屏幕上的點擊位置轉換成 Three.js 場景中的座標。換句話說,就是將屏幕座標轉換成三維場景中的座標。 * 建立 THREE.Raycaster。使用 THREE.Raycaster 能夠向場景中發射光線。在下述案例中,從攝像機的位置(camera.position)向場景中鼠標的點擊位置發射光線。 * 使用 raycaster.intersectObjects 方法來判斷指定的對象中哪些被該光線照射到的, 返回包含了全部被光線照射到的對象信息的數組(根據距離攝像機距離,由短到長排序)。數組的子項的信息包括有:
distance: 49.90470 face: THREE.Face3 faceIndex: 4 object: THREE.Mesh point: THREE.Vector3
首先要知道動畫的實現原理,其實就是一個循環繪製.你要實現一個鼠標移到繪圖區物體中止轉動,添加一個鼠標事件監控鼠標位置,而後中止動畫操做便可.canvas
window.addEventListener('resize', onResize, false) function onResize () { // 設置透視攝像機的長寬比 camera.aspect = window.innerWidth / window.innerHeight // 攝像機的 position 和 target 是自動更新的,而 fov、aspect、near、far 的修改則須要從新計算投影矩陣(projection matrix) camera.updateProjectionMatrix() // 設置渲染器輸出的 canvas 的大小 renderer.setSize(window.innerWidth, window.innerHeight) }