我正在尝试在three.js中制作一个平面,其中一侧是纹理,另一侧是颜色。我尝试过:
var material = new THREE.MeshBasicMaterial({color: 0xff0000, side: THREE.FrontSide, map: texture});
var geometry = new THREE.PlaneGeometry(width, height);
plane = new THREE.Mesh(geometry, material);
但是,这使平面只有一侧具有纹理,而另一侧是完全透明的。如果我去:
var material = new THREE.MeshBasicMaterial({color: 0xff0000});
然后双方都有颜色。有没有一种方法可以使一侧具有纹理而另一侧具有颜色?
答案 0 :(得分:1)
如果想要在网格的正面和背面使用不同的材质,则可以遵循以下一种模式:
var group = new THREE.Group();
scene.add( group );
group.add( new THREE.Mesh( geometry, new THREE.MeshBasicMaterial( { map: texture } ) ) );
group.add( new THREE.Mesh( geometry, new THREE.MeshBasicMaterial( { color: 0xff0000, side: THREE.BackSide } ) ) );
另一种方法是编写自己的自定义ShaderMaterial
,但是如果您刚开始使用three.js,则以上是最简单的
three.js r.104