我已经创建了建筑物的草图模型并将其导出到.dae
和纹理文件。我想使用three.js在浏览器中显示它,但我收到错误THREE.MultiMaterial has been removed. Use an Array instead
。我该如何解决这个问题?
答案 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 );
}
我很高兴这种改进。我不喜欢太多的理论和复杂的编程范式。最好的方法是:尽可能简化。