THREE.MultiMaterial已被删除。请改用数组

时间:2017-08-01 05:34:11

标签: three.js

我已经创建了建筑物的草图模型并将其导出到.dae和纹理文件。我想使用three.js在浏览器中显示它,但我收到错误THREE.MultiMaterial has been removed. Use an Array instead。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:6)

在新版本的three.js中,你必须使用带有(items)materilas而不是multimaterials的简单数组。这是一个例子:

var geometry = new THREE.BoxBufferGeometry( 1, 1, 1 );
var materials = [
    new THREE.MeshDepthMaterial(),
    new THREE.MeshNormalMaterial(),
    new THREE.MeshBasicMaterial( { wireframe: true } ),
    new THREE.MeshLambertMaterial( { color: 0xff0000 } ),
    new THREE.MeshPhongMaterial( { color: 0x0000ff } ),
    new THREE.MeshStandardMaterial( { color: 0x00ff00 } ),
];
var mesh = new THREE.Mesh( geometry, materials );

同样重要!访问看起来像:

if ( Array.isArray( object.material ) ) {
    for ( var m = 0; m < object.material.length; m++ ) {
        object.material[ m ].color.set( 0xffffff );
    }
} else {
    object.material.color.set( 0xffffff );
}

我很高兴这种改进。我不喜欢太多的理论和复杂的编程范式。最好的方法是:尽可能简化。