簡體   English   中英

obj文件中的threejs UV映射

[英]threejs UV mapping in obj file

我在一個面上為STL模型應用了簡單的UV映射,結果是:

在此處輸入圖片說明

現在,我從Blender導出.obj.mtl文件。 如果需要,您可以在這里下載它們。 當我使用OBJLoaderMTLLoader加載此objmtl文件時,結果如下:

在此處輸入圖片說明

為什么映射不一樣? 雖然three.js可以從文件讀取UV映射。 還有什么其他方法可以將UV貼圖導出到模型,或者我做錯了什么?

這是我用來加載objmtl文件的代碼:

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();
                });
            }
        });
    }

好吧,這只是Blender的出口問題。 我剛剛使用此設置導出了模型,它運行良好!

在此處輸入圖片說明

在您的mtl文件中更改以下行:

map_Kd uv_checker large.png

map_Kd large.png

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM