javascript - 如何在 three.js 中将 MTL 纹理添加到 OBJ

标签 javascript 3d three.js

你好,我想弄清楚如何在 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/

相关文章:

javascript - Three.js 的被遮挡对象行为异常

javascript - 浏览器中在哪里定义了 keys() 函数?

c++ - 模型观察矩阵 - C++、OpenGL

javascript - 使用 Cesium.js 围绕顶点进行圆锥旋转

javascript - 将简单的自定义着色器应用于 Three.js 多维数据集

javascript - 如何找到物体相对于相机的旋转

javascript - 如何让函数返回多个值

javascript - 如何仅在上传正在进行时触发 window.onbeforeunload 警告

Javascript团体开发流程

swift - SceneKit 的立方体测试性能