【发布时间】:2013-05-05 06:57:46
【问题描述】:
我正在尝试在挤压形状的正面和背面应用不同的材料,但不知道在哪里放置 side: THREE.FrontSide 和 side: THREE.BackSide。应该放在哪里?
我的相关代码部分是:
var materialFront = new THREE.MeshPhongMaterial({环境:0xffffff,地图:frontTexture }); var materialSide = new THREE.MeshPhongMaterial({color: 0xE68A00,ambient: 0xffffff}); 变种挤压设置 = { 数量:10, bevelEnabled:假, 斜面厚度:0.2, 斜角尺寸:0.2, bevelSegments: 8, 材料:0, 挤出材料:1 }; var geometry = new THREE.ExtrudeGeometry(形状,extrusionSettings); var 材料 = [materialFront, materialSide]; var material = new THREE.MeshFaceMaterial(materials); 网格=新的三。网格(几何,材料);更新: 根据 WestLangley 的评论,我成功地将不同的纹理添加到背面:
// ... var 材料 = [materialFront, materialSide,materialBack]; // ... for ( var face in mesh.geometry.faces ) { if (mesh.geometry.faces[ face ].normal.z == 1) mesh.geometry.faces[ face ].materialIndex = 2; }【问题讨论】:
-
THREE.FrontSide指的是face的正面,而不是mesh或shape的正面。究竟是什么不工作? -
使用上面的代码,当我从背面看网格时,
materialFront也在那里。我想在网格的背面添加不同的材料,比如stemkoski.github.io/Three.js/Textures.html 中的骰子。 -
在three.js 源中有“material:
// 正面和背面的材料索引”。这似乎意味着正反面不能有不同的材料,因为它们只有一个索引。这是问题的核心。我应该能够将一个索引用于后面,一个索引用于前面。 -
就是这样。您必须按照我的回答中的说明更改几何体背面所有面的材料索引。
-
我怎么知道哪些脸是背面?
标签: three.js