我已经能够加载OBJ文件并将MTL关联到它以赋予它纹理。然而,我似乎无法从代码中直接告诉我想要与模型关联的纹理,我只能在MTL文件中提到纹理时才会出现在模型上。
我看了文档,我看了例子,我一遍又一遍地搜索,但我就是不知道如何应用纹理。
这是我当前加载模型和材料文件的代码
var mtlLoader = new THREE.MTLLoader();
mtlLoader.setPath( '/3Dproject/models/' );
mtlLoader.load( 'tshirt.mtl', function( materials ) {
materials.preload();
var objLoader = new THREE.OBJLoader();
objLoader.setMaterials( materials );
objLoader.setPath( 'models/' );
objLoader.load( 'tshirt.obj', function ( object ) {
object.position.x = 0;
object.position.y = -50;
object.scale.x = 2;
object.scale.y = 2;
object.scale.z = 2;
scene.add( object );
}, onProgress, onError );
});
这是我的素材文件
# MTL written from 3Dprojectmodelstshirt.obj
newmtl texture
Kd 0.48 0.48 0.48
Ns 256
d 1
illum 2
Ka 0 0 0
Ks 0.04 0.04 0.04
map_Kd texture.jpg
如果我像这样在Javascript中加载纹理
var texloader = new THREE.TextureLoader();
var skinTexture = texloader.load('/3Dproject/models/texture.jpg', function (tex) {
skinTexture = tex;
});
然后我如何将它应用到我的模型中?
工作示例:http://creativiii.com/3Dproject/old-index.html
通常纹理是通过material.map
属性分配的。
object.material.map = skinTexture;