Three.js-导入带有纹理的三维对象

Three.js - Import a 3d object with textures

本文关键字:三维 对象 纹理 js- 导入 Three      更新时间:2023-09-26

我有一个从3ds max导出的.obj文件和一个包含材质的.mtl文件。我想用three.js渲染这个对象,但它似乎没有加载纹理。这是我的javascript代码

var texture = THREE.ImageUtils.loadTexture( 'items/m16/m16.jpg' );

var loader = new THREE.OBJLoader();
loader.load( "items/m16/m16.obj", function ( object ) {
for ( var i = 0, l = object.children.length; i < l; i ++ ) {
     object.children[ i ].material.map = texture;
}
//  object.position.y = -100;
scene.add( object );
} );

以下是.mtl文件的上下文

newmtl Material__25
Ns 10.0000
Ni 1.5000
d 1.0000
Tr 0.0000
Tf 1.0000 1.0000 1.0000 
illum 2
Ka 0.5880 0.5880 0.5880
Kd 0.5880 0.5880 0.5880
Ks 0.0000 0.0000 0.0000
Ke 0.0000 0.0000 0.0000
map_Ka m16.jpg
map_Kd m16.jpg

我看不出我错在哪里了。

由于您有一个.mtl文件,因此应该使用OBJMTLLoader。这样,你发布的所有代码都将变成:

var loader = new THREE.OBJMTLLoader();
loader.load( "items/m16/m16.obj", function ( object ) { scene.add( object ); } );