簡體   English   中英

在一個對象上交替顯示材料

[英]Alternating materials on one object

我是使用three.js的初學者,我試圖在一個對象上定義兩種材料,並使用可見性標志在這兩種材料之間交替,但沒有成功。 還有另一種方法,還是可以做到這一點?

var materials = [
    new THREE.MeshPhongMaterial( { color: 0x00ff00,visible:true, shininess: 1 } ),
    new THREE.MeshPhongMaterial( { color: 0xff0000,visible:false, shininess: 1 } )
];

obj= THREE.SceneUtils.createMultiMaterialObject( geometry, materials );
scene.add( obj);

scene.traverse(function (node){
    if(node instanceof THREE.Mesh) {
        node.visible =!node.visible;
    }
});

我將把它最終應用到場景中的所有對象,這就是為什么我使用場景的原因。

看起來您正在嘗試對材質應用可見性,但是在遍歷過程中正在檢查網格。 從材料定義中刪除visibility: true/false ,然后添加以下行:

obj= THREE.SceneUtils.createMultiMaterialObject( geometry, materials );
obj.children[1].visible = false; // add this line
scene.add( obj);

這會將visibility = false應用於由createMultiMaterialObject創建的第二個網格。 這樣,遍歷將正確翻轉網格的可見性。

當您更好地了解THREE.js ,您將需要研究THREE.MultiMaterial和geometry組,以將多個材質應用於單個網格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM