你好,我想弄清楚如何在 three.js 中将 MTL 文件添加到我的 OBJ。我加载了我的 OBJ,然后回来解决这个问题。现在,当我添加要使用 MTLLoader
加载的 MTL 文件的代码时,它没有通过 mtlLoader.load(url, ....)
(如添加后这段代码现在只渲染了场景,里面什么也没有)。我正在使用警报来跟踪代码的进度,并从该语句之前而不是之后收到警报。我找到的所有解决方案都包括使用 OBJMTLLoader
,它不再是当前版本 three.js (r74) 的一部分。
最佳答案
这段代码摘自官方加载一个obj+mtl的例子:
var mtlLoader = new THREE.MTLLoader();
mtlLoader.setBaseUrl( 'obj/male02/' );
mtlLoader.setPath( 'obj/male02/' );
var url = "male02_dds.mtl";
mtlLoader.load( url, function( materials ) {
materials.preload();
var objLoader = new THREE.OBJLoader();
objLoader.setMaterials( materials );
objLoader.setPath( 'obj/male02/' );
objLoader.load( 'male02.obj', function ( object ) {
object.position.y = - 95;
scene.add( object );
}, onProgress, onError );
});
http://threejs.org/examples/#webgl_loader_obj_mtl
您现在通过以下方式将 Material 分配给 OBJ:
objLoader.setMaterials( Material );
如果您想要操作 Material ,mtlLoader
在回调中为您提供的是 THREE.MTLLoader.MaterialCreator
的实例。例如,您可以使用 materials.getAsArray()
获取 Material 。查看所有可能功能的来源:https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/MTLLoader.js#L138-L417
关于javascript - 如何在 three.js 中将 MTL 纹理添加到 OBJ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35246590/