2015-06-12 30 views
0

我已创建使用如何在three.js中将不同的材质应用到飞机的两侧?

materials = []; 
material1 = new THREE.MeshPhongMaterial({ color: 0xff00ff, specular: 0xff00ff, shininess: -3, shading: THREE.FlatShading, side: THREE.FrontSide }); 
material2 = new THREE.MeshPhongMaterial({ color: 0xf0f0ff, specular: 0xf0f0ff, shininess: -3, shading: THREE.FlatShading, side: THREE.BackSide }); 
materials.push(material1); 
materials.push(material2); 
mat = new THREE.MeshFaceMaterial(materials); 

tri = new THREE.Geometry(); 
tri.vertices.push(1, 1 ,1); 
tri.faces.push(new THREE.Face3(0,1,2)); 
tri = new THREE.Mesh(tri, mat); 

scene.add(tri); 

简单的三角面,我没能获得不同材料的两侧加以应用。我该怎么做 ?

我想达致这样的效果 enter image description here

+0

什么是'F [I]'在你的代码?它应该是'mesh = new THREE.Mesh(tri,mat); scene.add(mesh)' – gaitat

+0

我编辑它。其三现在 – VMN

+0

平面和两侧?这是如何运作的?你用这个代码创建了什么样的网格?看起来像一个顶点和一个脸,不知道这是如何工作的?截图? – pailhead

回答

0

你需要的东西是这样的:

var face = tri.faces[0].clone(); 
face.materialIndex = 1; 
tri.faces.push(face); 

http://jsfiddle.net/j8k7yhLp/1/

+0

工作得很好......但是有没有办法在不克隆多边形的情况下创建它? – VMN

+0

当我们创造一架飞机时,他们只有一面。 –