我使用以下代码导入了OBJ模型:
var loader = new THREE.OBJLoader();
loader.addEventListener('load', function (geometry) {
object = geometry.content;
scene.add(object);
});
loader.load('ship.obj');
它可以正常工作,但是每当我尝试向其中添加 Material 时,它要么无效,要么模型消失。我以为我可以这样做:
var ship = new THREE.Mesh(object, material);
但这是行不通的。有谁知道这样做的方法,或者甚至可能吗?我也尝试过使用OBJMTLLoader,但这只会增加复杂性,同时仍然不允许我更改 Material 。
最佳答案
编辑:这个答案现在已经过时了。相反,请查看@mightypile的答案。
假设您已经正确定义了material
,请尝试以下操作:
loader.addEventListener( 'load', function ( event ) {
var object = event.content;
object.traverse( function ( child ) {
if ( child instanceof THREE.Mesh ) {
child.material = material;
}
} );
scene.add( object );
});
关于three.js - 在three.js中将 Material 分配给OBJLoader模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16200082/