如何在平面的一侧设置纹理,在另一侧设置颜色?

时间:2019-05-06 19:10:23

标签: javascript three.js 3d

我正在尝试在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});

然后双方都有颜色。有没有一种方法可以使一侧具有纹理而另一侧具有颜色?

1 个答案:

答案 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