Three.js 导出的 Blender 模型没有纹理。

6
我正在尝试使用来自Three.js 73的导出器(来自github主分支)导出这个https://www.dropbox.com/s/zz1g38xaci2ibod/sailor.blend?dl=1 Blender模型。但是当我加载它时,我看不到纹理:
    var loader = new THREE.JSONLoader();
    loader.load("assets/sailor.json",
            function (geom, mat) {
                console.log(mat);
                var model = new THREE.Mesh(geom, mat[0]);

                model.castShadow = true;

                scene.add(model);
            });

enter image description here

该模型有两个网格(身体和眼睛),但似乎这个导出器只能导出一个网格... 所以我暂时没有导出眼睛。

enter image description here

导出器设置:

enter image description here

导出输出文件: sailor.json

无论日志级别如何,io_three.export.log都为空。

1个回答

1

我不确定这会不会解决你的问题,但至少可以给你一个问题所在的提示。

我比较了我的转换后的JSON文件和你的文件,并注意到你使用的JSON文件没有指定对象应该使用什么纹理。

请在你的代码中添加:

"mapDiffuse" : "纹理名称.png",

即可。

"materials: [{
    ...,
    ...,
    ...
}]"

数组。

祝你好运。

编辑

当我将此行添加到材质属性数组中时,您的模型对我似乎可以使用纹理。


是的,我知道我的JSON文件中不包含纹理。但是我没有任何纹理文件可以手动指定。至少不是作为单个文件,如果我从.blend中解压“外部数据”,我会得到多个纹理文件(皮肤、布料等)。我认为导出器应该以某种方式导出并在JSON中指定它。顺便说一下,这个模型不是我创建的,我是从blendswap(CC0)上获取的。 - Alex P.
抱歉打扰了,但这对我来说完美地解决了问题,尽管在我看来有点hacky。您知道为什么Blender在导出时不默认执行此操作吗?我的漫反射贴图已经正确设置了。 - Andrew Li

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接