ThreeJS中的不透明度没有在材料上设置不透明度

nan*_*hen 1 blender three.js

我想设置从搅拌机导入的网格的不透明度。

var weapons = imported_scene.getObjectByName("weapons");
weapons.material.opacity = 0.5;
weapons.material.transparent = true;
Run Code Online (Sandbox Code Playgroud)

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

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

有什么办法吗?

非常感谢!

Don*_*rdy 5

您需要制作两种材质才能使一种透明而另一种不透明,但是您可以在不加载相同纹理文件两次的情况下执行此操作。最简单的方法是克隆材料:

var weapons = imported_scene.getObjectByName("weapons");
weapons.material = weapons.material.clone();
weapons.material.opacity = 0.5;
weapons.material.transparent = true;
Run Code Online (Sandbox Code Playgroud)

请参阅THREE.Material 文档。三.js r89。