2016-07-28 178 views
0

这幅画是我的JSON模型。如何更改Three.js场景中JSON模型的透明度?

painting

我明白,我可以更改修改“透明”透明度:在JSON文件0.5:真实的,“不透明度”。

但是,我想在Three.js场景中加载JSON模型后更改模型的不透明度。

我用的方法,但它没有工作.....

mesh.material.transparent = TRUE; mesh.material.opacity = 0.1;

这是我的代码。

jsonLoader2.load("models/pic.json", addPicToScn); 

function addPicToScn(geometry, material) { 
    var mtl = new THREE.MeshFaceMaterial(material); 
    var mesh = new THREE.Mesh(geometry, mtl); 
    mesh.scale.set(1.3, 1.3, 1.3); 
    mesh.material.transparent = true; 
    mesh.material.opacity = 0.1; 
    mesh.castShadow = true; 
    mesh.receiveShadow = true; 
    mesh.rotation.set(2.8*Math.PI/5, 0, -Math.PI/2); 
    mesh.position.set(0, 6, 21.8); 
    scene.add(mesh); 
      } 

我真的想知道这个问题的答案....

回答

0

你的模型生成多种材料这是为什么你正在使用MeshFaceMaterial。当你想设置透明度时,你需要在模型材质上设置透明度,而不是在MeshFaceMaterial上。

所以代码应该如下:

jsonLoader2.load("models/pic.json", addPicToScn); 

function addPicToScn(geometry, material) { 
    var mtl = new THREE.MeshFaceMaterial(material); 
    var mesh = new THREE.Mesh(geometry, mtl); 
    mesh.scale.set(1.3, 1.3, 1.3); 
    mesh.material.materials.forEach(function(m){ 
     m.transparent = true; 
     m.opacity = 0.1; 
    }; 
    mesh.castShadow = true; 
    mesh.receiveShadow = true; 
    mesh.rotation.set(2.8*Math.PI/5, 0, -Math.PI/2); 
    mesh.position.set(0, 6, 21.8); 
    scene.add(mesh); 

}

+0

它确实有用! ! 非常感谢! –

相关问题