Javascript three.js如何在mtl、obj文件上映射纹理
我正在尝试将png文件映射到mtl,obj文件 映射之前 但是映射之后,mtl纹理就消失了 映射后 我该怎么办? 我的英语不好。如果你不明白我的问题,请留下评论 这是我的代码:Javascript three.js如何在mtl、obj文件上映射纹理,javascript,three.js,mapping,Javascript,Three.js,Mapping,我正在尝试将png文件映射到mtl,obj文件 映射之前 但是映射之后,mtl纹理就消失了 映射后 我该怎么办? 我的英语不好。如果你不明白我的问题,请留下评论 这是我的代码: var onProgress = function(xhr) { var percentComplete = xhr.loaded / xhr.total * 100; console.log(Math.round(percentComplete, 2
var onProgress = function(xhr) {
var percentComplete = xhr.loaded / xhr.total * 100;
console.log(Math.round(percentComplete, 2) + '% downloaded');
};
var onError = function(xhr) {};
THREE.Loader.Handlers.add(/\.dds$/i, new THREE.DDSLoader());
var loader = new THREE.ImageLoader();
loader.load("../img/ang.png", function(image) {
texture.minFilter = THREE.LinearFilter;
texture.image = image;
texture.wrapS = THREE.ClampToEdgeWrapping;
texture.wrapT = THREE.ClampToEdgeWrapping;
texture.offset.set(-3, -9.5);
texture.repeat.set(13, 13);
texture.needsUpdate = true;
},onProgress,onError);
var mtlLoader = new THREE.MTLLoader();
mtlLoader.setPath('../models/');
mtlLoader.load('nag-green.mtl', function(materials) {
materials.preload();
var objLoader = new THREE.OBJLoader();
objLoader.setMaterials(materials);
objLoader.setPath('../models/');
objLoader.load('nag-green.obj', function(object) {
object.traverse(function(child) {
if (child instanceof THREE.Mesh) {
child.material.map = texture;
}
});
object.name = "object";
object.position.y = 0;
scene.add(object);
}, onProgress, onError);
});
我想做的是将“ang.png”文件映射到像这样的t恤上 谢谢你的回答,我试过了,但这不是我想做的
您已将相同的“ang.png”纹理应用于所有子网格。我认为在遍历函数中需要一个条件,以便仅将纹理应用于网格中需要纹理的部分 mtl应在物料首次加载时为其应用名称。例如,这里我假装材质名称为“躯干”。原始3d编辑器中的导出器将为其指定其他名称。在任何情况下,您都应该能够在以下条件中查询名称:
object.traverse(function(child) {
if (child instanceof THREE.Mesh) {
if(child.material != undefined){
if(child.material.name=="torso"){
child.material.map = texture;
}
}
}
});