如何在三.js中将 MTL 纹理添加到 OBJ

How to add a MTL texture to an OBJ in three.js

本文关键字:纹理 添加 OBJ MTL 中将 js      更新时间:2023-09-26

您好,所以我正在尝试弄清楚如何在三.js中将 MTL 文件添加到我的 OBJ 中。我加载了我的 OBJ,然后回来解决这个问题。现在,当我添加要加载的 MTL 文件的代码时MTLLoader它不会传递mtlLoader.load(url, ....)(就像添加这段代码后一样,现在只有场景被渲染,里面什么都没有)。我正在使用警报来跟踪代码的进度,并且从此语句之前而不是之后收到警报。我找到的所有解决方案都包括使用OBJMTLLoader,它不再是当前版本的三.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

现在,您可以通过以下方式将材料分配给 OBJ:

objLoader.setMaterials( materials );

如果要操作材料,mtlLoader在回调中为您提供的是THREE.MTLLoader.MaterialCreator的实例。因此,例如,您可以使用materials.getAsArray()获得材料。请参阅所有可能函数的来源:https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/MTLLoader.js#L138-L417