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

Posted

技术标签:

【中文标题】Three.js 导出没有纹理的 Blender 模型【英文标题】:Three.js exports Blender model without texture 【发布时间】:2016-02-27 04:46:09 【问题描述】:

我正在尝试使用 Three.js 73(来自 github master 分支)的导出器导出这个 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);
            );

该模型有两个网格(身体和眼睛),但看起来这个导出器只能导出一个网格......所以现在我没有眼睛导出。

导出器设置:

导出器输出文件:sailor.json

io_three.export.log 为空,具有任何日志记录级别。

【问题讨论】:

【参考方案1】:

我不确定这是否能解决您的问题,但它至少可以提示您问题出在哪里。

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

添加:

"mapDiffuse" : "nameoftexture.png",

给你的

"materials: [
    ...,
    ...,
    ...
]"

数组。

祝你好运。

编辑

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

【讨论】:

是的,我知道我的 JSON 不包含纹理。但我没有任何纹理文件来手动指定它。至少不是作为单个文件,如果我从 .blend 解压缩“外部数据”,我会得到多个纹理文件(皮肤、布料等)。我认为导出器应该以某种方式导出它并在 JSON 中指定。顺便说一句,我还没有创建这个模型,我是从 blendswap (CC0) 中获取的。 抱歉打扰了,但这对我来说非常有效,尽管我认为这是一个 hacky 解决方案。你知道为什么blender在导出时默认不这样做吗?我的漫反射贴图设置正确。

以上是关于Three.js 导出没有纹理的 Blender 模型的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 Three.js 加载从搅拌机导出的纹理 Collada

THREE.JS 从搅拌机中导出 JSON 模型(包括纹理)

将 Blender 粒子系统头发导出到 Three.JS

Blender 导出到 Three.js

Blender 导出到 JSON 以获取 THREE.js 缺少的材料

以 gltf 格式从 Blender 导出组到 Three.js