2013-02-25 74 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。