[英]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.