簡體   English   中英

ThreeJS GLTFLoader材料陣列

[英]ThreeJS GLTFLoader material array

我正在嘗試使用GLTFLoader加載模型,並使用材質數組為對象(多維數據集)的每個面應用不同的顏色。 但這是行不通的。

            var materials = [ new THREE.MeshPhongMaterial( {color: 0x552811,specular: 0x222222,shininess: 25}),
                              new THREE.MeshPhongMaterial( {color: 0x552811,specular: 0x222222,shininess: 25})];

            loader = new GLTFLoader();
            loader.load( "./Model/cube.glb", function ( gltf ) {
                 var geometry = gltf.scene.children[ 2 ].geometry;
                 mesh = new THREE.Mesh( geometry, materials );
                 scene.add( mesh );
            } );

如果我將材質數組更改為單個材質對象,則可以正常工作,例如

     mesh = new THREE.Mesh( geometry, materials[0] );

我以為問題在於將網格材料賦予陣列,但是如果手動創建網格並將陣列作為材料給出,那么它也可以工作。

var geometry = new THREE.BoxBufferGeometry( 10, 10, 10 );
var mesh = new THREE.Mesh( geometry,materials);
scene.add(mesh);

問題僅在使用GLTFLoader加載網格並嘗試應用材質陣列GLTFLoader OBJLoader也發生了同樣的情況。 可能是什么問題呢。

使用BoxBufferGeometry ,生成的幾何會自動定義數據,這是使用多種材料的前提。 我高度假定,由於加載cube.glb而產生的幾何圖形沒有任何組,因此無法應用多種材料。

three.js R108

暫無
暫無

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

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