2016-07-28 29 views
0

Dieses Gemälde ist mein JSON-Modell.Wie kann ich die Transparenz des JSON-Modells in der Three.js-Szene ändern?

painting

Ich verstehe, dass ich die Transparenz durch ändern "transparent" ändern kann: true, und "Opazität": 0,5 in der JSON-Datei.

Allerdings möchte ich die Deckkraft des Modells ändern, nachdem das JSON-Modell in die Three.js-Szene geladen wurde.

Ich verwende die Methode, aber es hat nicht funktioniert .....

mesh.material.transparent = true; mesh.material.opazität = 0,1;

Hier ist mein Code.

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); 
      } 

Ich möchte wirklich die Antwort auf diese Frage wissen ....

Antwort

0

Ihr Modell erzeugt mehrere Materialien, weshalb Sie verwenden MeshFaceMaterial. Wenn Sie die Transparenz festlegen möchten, müssen Sie diese auf den Materialien des Modells und nicht auf dem MeshFaceMaterial festlegen.

so sollte Code wie folgt aussehen:

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

Es funktioniert! ! Vielen Dank! –