如何将 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的主要内容,如果未能解决你的问题,请参考以下文章