ThreeJS中的不透明度,未在材质上设置不透明度

时间:2018-01-12 16:24:48

标签: three.js blender

我想设置我从blender导入的网格的不透明度。

var weapons = imported_scene.getObjectByName("weapons");
weapons.material.opacity = 0.5;
weapons.material.transparent = true;

问题:此网格的材质也用于另一个网格,因此其他网格也会获得不透明度。

原因:我在Blender中创建了一个场景(有两个网格物体)。导出的JSON将与ObjectLoader一起导入。两个网格都出于性能原因使用相同的纹理文件。

有什么办法吗?

非常感谢!

1 个答案:

答案 0 :(得分:3)

你需要制作两种材料才能使一种材料透明而另一种材料不透明,但你可以在不加载相同纹理文件两次的情况下完成这项工作。最简单的方法是克隆材料:

var weapons = imported_scene.getObjectByName("weapons");
weapons.material = weapons.material.clone();
weapons.material.opacity = 0.5;
weapons.material.transparent = true;

THREE.Material docs。 three.js r89。