[英]threejs UV mapping in obj file
我在一个面上为STL模型应用了简单的UV映射,结果是:
现在,我从Blender导出.obj
和.mtl
文件。 如果需要,您可以在这里下载它们。 当我使用OBJLoader
和MTLLoader
加载此obj
和mtl
文件时,结果如下:
为什么映射不一样? 虽然three.js
可以从文件读取UV映射。 还有什么其他方法可以将UV贴图导出到模型,或者我做错了什么?
这是我用来加载obj
和mtl
文件的代码:
this.loadOBJ = function (baseURL, objFile, mtlFile, type) {
return new Promise(function (resolve, reject) {
console.log("Adding OBJ file '" + objFile + "' with MTL file '" + mtlFile + "'");
scope.clearScene();
// OBJ file loader
function loadOBJ(materials) {
var objLoader = new THREE.OBJLoader();
if (materials) {
objLoader.setMaterials(materials);
}
objLoader.setPath(baseURL);
objLoader.load(objFile, function (object) {
loadedMesh = object.children[0];
scene.add(loadedMesh);
centerCamera(loadedMesh);
render();
resolve();
}, function (xhr) {
if (xhr.lengthComputable) {
var percentComplete = xhr.loaded / xhr.total * 100;
console.log("Loading OBJ file: " + Math.round(percentComplete, 2) + '% downloaded');
}
}, function (xhr) {
console.log("Error loading OBJ: " + JSON.stringify(xhr));
reject();
});
};
if (!mtlFile) {
console.log("No MTL file specified, just loading OBJ");
loadOBJ();
}
else {
// Try to load the materials file first
var mtlLoader = new THREE.MTLLoader();
mtlLoader.setPath(baseURL);
mtlLoader.load(mtlFile, function (materials) {
// File loaded, load the OBJ file now
materials.preload();
loadOBJ(materials);
}, function (xhr) {
if (xhr.lengthComputable) {
var percentComplete = xhr.loaded / xhr.total * 100;
console.log("Loading MTL file: " + Math.round(percentComplete, 2) + '% downloaded');
}
}, function (xhr) {
// We couldn't load the MTL file, load the OBJ anyway
console.log("Error loading MTL file: " + JSON.stringify(xhr) + ". Will load only OBJ file");
loadOBJ();
});
}
});
}
在您的mtl文件中更改以下行:
map_Kd uv_checker large.png
至
map_Kd large.png
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.