2014-10-17 83 views
1

我在r68上,我試圖找到一個人創建一個矩形金字塔的例子,我可以將THREE.MeshFaceMaterial()應用到大多數例子看起來相當過時,並將錯誤與我當前的構建投擲。如何在three.js r68中製作一個矩形金字塔?

我只需要能夠

  • Texturise每個面
  • 旋轉它,因此長方形臉是位於-Y位置提前

謝謝!

+1

您可以使用'CylinderGeometry'創建一個矩形金字塔。 – WestLangley 2014-10-17 06:57:25

+0

它最終有5個頂點嗎? – 2014-10-17 07:06:34

+1

試試看,如果您有問題,請發佈您的代碼。 – WestLangley 2014-10-17 14:38:17

回答

3

由於@WestLangley指出,使用THREE.CylinderGeometry()做,這是正確的方法,這裏就是我做我的

var geometry = new THREE.CylinderGeometry(1, TILE_SIZE*3, TILE_SIZE*3, 4); 
var material = new THREE.MeshBasicMaterial({color: 0xffff00 , wireframe:true}); 
var cylinder = new THREE.Mesh(geometry, material); 
this.scene.add(cylinder); 

完美的作品!

6

上面的答案只適用於基數相等的金字塔。如果您想用直角尺金字塔,你可以這樣做:

var geometry = new THREE.Geometry(); 

geometry.vertices = [ 
    new THREE.Vector3(0, 0, 0), 
    new THREE.Vector3(0, 1, 0), 
    new THREE.Vector3(1, 1, 0), 
    new THREE.Vector3(1, 0, 0), 
    new THREE.Vector3(0.5, 0.5, 1) 
]; 

geometry.faces = [ 
    new THREE.Face3(0, 1, 2), 
    new THREE.Face3(0, 2, 3), 
    new THREE.Face3(1, 0, 4), 
    new THREE.Face3(2, 1, 4), 
    new THREE.Face3(3, 2, 4), 
    new THREE.Face3(0, 3, 4) 
];  

現在你有一個的1 x 1方形底座和1高度金字塔的幾何形狀。通過應用分級矩陣,我們可以讓這個金字塔到任何所需的width/length/height組合:

var transformation = new THREE.Matrix4().makeScale(width, length, height); 

geometry.applyMatrix(transformation); 

這也可以被包裹在一個自定義Pyramid幾何課,所以你可以使用它像這樣:

new THREE.Pyramid(width, length, height);