我使用以下代码导入了 OBJ 模型:
var loader = new THREE.OBJLoader();
loader.addEventListener('load', function (geometry) {
object = geometry.content;
scene.add(object);
});
loader.load('ship.obj');
它工作正常,但每当我尝试向其中添加材质时,它要么没有效果,要么模型消失。我以为我可以这样做:
var ship = new THREE.Mesh(object, material);
但这是行不通的。有谁知道一种方法可以做到这一点,或者是否可能?我也尝试过使用 OBJMTLLoader,但它只会增加复杂性,同时仍然不允许我更改材质。
编辑:这个答案现在已经过时了。相反,请参阅@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 );
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)