对于 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 );
},
有帮助吗?
答案 0 :(得分:2)
您无法使用.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 );
} );