2017-05-19 11 views
0

私はFBXLoader2経由でロードする.fbxモデルを持っています。 シーンに3つのメッシュを含むモデルを追加すると、それがグループとして追加されます。今度は、グループ内の1つのメッシュの色を変更しようとしましたが、3つのメッシュすべてが色を取得しています。それで、私は彼らがグループのために "つながっている"かもしれないと思った。だから私はそれらを切り離した(SceneUtils.detach)。 今、私はすべてのメッシュをシーンに持っています。それでも、1つのメッシュの色を変更すると、3つすべてが色を取得します。私がconsole.logにメッシュ(グループ内または分離した)を表示すると、正しいメッシュが表示されます。Three.js FBXLoader2、単一のメッシュの色を変更する(グループ内または切り離された)

var loader = new THREE.FBXLoader(manager); 

loader.load('somemodel.fbx', function(object) { 

    model = object; 
    var modelLength = model.children.length; 

    for (i=0;i<modelLength;i++) { 
    THREE.SceneUtils.detach(model.children[0], model, scene); 
    } 
    scene.children[0].material.emissive.setHex(0xff0000); 
} 

メッシュの位置やサイズを変更しようとすると、正常に動作します。 誰も前に問題を抱えていましたか?

+0

これは同じMaterialインスタンスを共有しているためです。このインスタンスの色を変更すると、すべてのメッシュが変更の影響を受けます。 色を変更する代わりに、更新したいメッシュの新しい色で新しいMaterialインスタンスを作成してみてください。 –

+0

それは理にかなっています!ありがとう、私はこれをチェックします! – Paul

答えて

0

素材を複製して元に戻してください。

scene.children[0].material = scene.children[0].material.clone(); 
scene.children[0].material.emissive.setHex(0xff0000); 
関連する問題