我是Three.js的新手,我正在尝试将纹理应用于加载的对象。
我已经尝试了很多东西,但仍不确定如何做到这一点。我没有得到任何错误,对象加载但没有纹理。
var loader6 = new THREE.OBJLoader();
// load a resource
loader6.load(
// resource URL
'models/Chair.obj',
// called when resource is loaded
function ( object ) {
object.scale.x = 20;
object.scale.y = 30;
object.scale.z = 20;
object.rotation.y = -0.3;
object.position.z = -500;
object.position.x = 30;
object.traverse( function ( child ) {
if ( child instanceof THREE.Mesh ) {
console.log(texture);
child.material.map = texture;
}
});
var texture = new THREE.TextureLoader().load('models/Chair.mtl');
object6 = object;
scene.add( object6 );
},
有帮助吗?
你不能使用.mtl
加载TextureLoader
文件,你必须使用MTLLoader
。 MTLLoader
应该加载纹理。然后你必须使用'setMaterial'函数将材质设置为OBJLoader
。
查看此代码 -
new THREE.MTLLoader()
.setPath( 'path to the material folder' )
.load( 'material_file.mtl', function ( materials ) {
materials.preload();
new THREE.OBJLoader()
.setMaterials( materials )
.setPath( 'path to the obj folder' )
.load( 'objModel.obj', function ( object ) {
object.position.y = - 95;
scene.add( object );
}, onProgress, onError );
} );