如何将 obj 和 mtl 文件导入到 three.js

Posted

技术标签:

【中文标题】如何将 obj 和 mtl 文件导入到 three.js【英文标题】:How to import obj and mtl file to three.js 【发布时间】:2015-01-15 19:22:10 【问题描述】:

我很难导入这些 obj 和 mtl 文件来加载三个 js 的模型。我试试这个代码:

var loader = new THREE.OBJMTLLoader();

loader.load("test.obj", "test.mtl"); loader.addEventListener("load", function (object) scene.add(object);, false);

我应该做更多的事情吗?我发现了一些关于将 js/OBJMTLLoader.js 之类的脚本导入到 html.if 我应该从某个地方下载它们吗?

【问题讨论】:

loader.load() 中的对象路径很可能是错误的。查看示例threejs.org/examples/#webgl_loader_obj_mtl 并尝试加载您的对象。 不,路径是正确的,我知道您共享的示例..我将它们与脚本放在同一个文件夹中以加载它们。我找不到任何错误..还有其他帮助吗? 我的 OBJMLTLoader.js 出错了! 请问你能告诉我它有什么问题吗? 我相信可能是脚本本身。 【参考方案1】:
            var onProgress = function ( xhr ) 
                if ( xhr.lengthComputable ) 
                    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() );

        if (name == "House")
            var loader = new THREE.OBJMTLLoader();
            loader.load( 'models/House/house_obj/house_obj.obj', 'models/House/house_obj/house_obj.mtl', function ( object ) 
                object.traverse( function ( child ) 

                    if ( child instanceof THREE.Mesh ) 

                        child.material.side = THREE.DoubleSide;

                    

                 );


                object.rotation.x = Math.PI/2;
                 var scale = 0.15/ (MapWidth*0.5/3);//upsos tabani
                object.scale.set(scale,scale,scale);
                House = object;


            , onProgress, onError );
            

这是我使用的代码。在此示例中,我检查用户是否选择插入房屋模型。 onProgress 和 onError 函数说明加载程序的完整性。我使用 OBJMTLLoader.js 和 DDSLoader.js

【讨论】:

以上是关于如何将 obj 和 mtl 文件导入到 three.js的主要内容,如果未能解决你的问题,请参考以下文章

如何导入 3D 场景(.obj 文件和 .mtl 文件)

threejs加载geojson

创建自定义 .OBJ / .MTL 文件并使用 three.js 进行渲染

3d模型一般怎么导入到到Threejs中使用

如何将带有 mtl 和纹理的 obj 上传到存储桶?

vue使用maptalks地图+three加载video视频obj+mtl和gltf模型