2013-02-25 109 views
2

我有Three.Shape,我可以申請擠出 爲了得到一個平面,我畫一個正方形,然後再申請擠出three.js所 - 不同材質應用於擠壓型材

var squareShape = new THREE.Shape(); 
squareShape.moveTo(0,0); 
squareShape.lineTo(0, sqLength); 
squareShape.lineTo(sqLength, sqLength); 
squareShape.lineTo(sqLength, 0); 
squareShape.lineTo(0, 0); 

var geometry = new THREE.ExtrudeGeometry(squareShape,extrudeSettings); 

現在3D廣場正在出現在我的瀏覽器上。

接下來我想在其頂面應用256x256的圖像紋理。這個怎麼做?

回答

4

如果您查看THREE.js中的src/extras/geometries/ExtrudeGeometry.js,您將看到這些註釋。

  • 材料://爲正面材料指數和後端面
  • extrudeMaterial:擠出//材料指數和斜面的面孔

因此,例如,你可以說(顯然不會直接運行因爲它是不完整)

// The face material will be index #0. The extrusion (sides) will be #1. 
var extrudeSettings = { amount: 10, bevelEnabled: true, bevelSegments: 3, steps: 4, bevelThickness: 8, material: 0, extrudeMaterial: 1 }; 

當您創建網格創建2層的材料,並將它們分配給您的網格。

var mesh = THREE.SceneUtils.createMultiMaterialObject(geometry, [ new THREE.MeshLambertMaterial({ color: color }), new THREE.MeshBasicMaterial({ color: 0x000000, wireframe: true, transparent: true }) ]); 

希望這能讓你走上正確的道路。

在旁註中,與其他答案相關,您希望使用拉伸來創建尺寸與正方形類似但具有斜角的東西。一個例子是如果你試圖繪製骰子,並希望圍繞邊緣。

0

如果你想要的只是一個立方體你爲什麼擠壓?你爲什麼不使用CubeGeometry。