Three.js記事[二]

在Three.js的世界里,以點畫面的三維剖析是比較基礎(chǔ)的概念

我一直不知道如何去正確的,更好的理解這個空間概念,只能以盡量簡單白話式的去總結(jié),來讓自己清晰的明白此處概念,此篇記錄這種方式,提醒自己

1,建立幾何體的vertice(頂點),這里以方塊為樣本來解釋

在代碼中寫到:

//粗俗理解,x為左右方向;y為上下方向;z為遠近方向;

? ? var vertices = [

? ? ? ? ? ? ? ? ? ? ? ? newTHREE.Vector3(1,3,1),//+x+y+z? 上前右

? ? ? ? ? ? ? ? ? ? ? ? newTHREE.Vector3(1,3,-1),//+x+y-z 上后右

? ? ? ? ? ? ? ? ? ? ? ? newTHREE.Vector3(1,-1,1),//+x-y+z 下前右

? ? ? ? ? ? ? ? ? ? ? ? newTHREE.Vector3(1,-1,-1),//+x-y-z 下后右

? ? ? ? ? ? ? ? ? ? ? ? newTHREE.Vector3(-1,3,-1),//-x+y-z 上后左

? ? ? ? ? ? ? ? ? ? ? ? newTHREE.Vector3(-1,3,1),//-x+y+z? 上前左

? ? ? ? ? ? ? ? ? ? ? ? newTHREE.Vector3(-1,-1,-1),//-x-y-z 下后左

? ? ? ? ? ? ? ? ? ? ? ? newTHREE.Vector3(-1,-1,1)//-x-y+z? 下前左

? ? ];

? ? 一幅自己繪制的理解圖:(紅色代表XYZ,黑色代表三角面角點索引)

2,建立face(面)

? ? ? ? ? ? var faces = [

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//三角面角點a,b,c的索引

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?newTHREE.Face3(0,2,1),

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?newTHREE.Face3(2,3,1),//方塊top面

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?newTHREE.Face3(4,6,5),

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?newTHREE.Face3(6,7,5),//方塊bottom面

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?newTHREE.Face3(4,5,1),

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?newTHREE.Face3(1,3,4),//方塊right面

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?newTHREE.Face3(7,6,2),

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?newTHREE.Face3(2,0,7),//方塊left面

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?newTHREE.Face3(5,7,0),

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?newTHREE.Face3(0,1,5),//方塊front面

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?newTHREE.Face3(2,6,4),

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?newTHREE.Face3(4,3,2),//方塊back面

? ? ? ? ? ? ? ? ? ? ? ? ? ? ?];

3,建立幾何體

vargeo=newTHREE.Geometry();

geo.vertices=vertices;

geo.faces=faces;

geo.computeFaceNormals();

geo.mergeVertices();

4,建立材質(zhì)

var materials= [

newTHREE.MeshLambertMaterial({opacity:0.6,color:0x44ff44,transparent:true}),

newTHREE.MeshBasicMaterial({color:0x000000,wireframe:true})

];

5,建立網(wǎng)格

var mesh=THREE.SceneUtils.createMultiMaterialObject(geo,materials);

mesh.children.forEach(function(e){e.castShadow=true});

6,添加至場景

scene.add(mesh);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容