【发布时间】:2021-09-02 23:17:40
【问题描述】:
我们正在尝试在服务器端合并多个 GLTF,并将合并后的 gltf 作为最终结果导出到服务器。
我们已经证实有效而无效的事情:
-
我们使用了三种js GLTFLoader parse方法来加载多个gltf文件,合并加载对象的父子,并使用GLTFExporter导出最终模型。
-
我们已经使用jsdom解决了window、document等相关的问题。
-
上述几点适用于没有纹理的 gltfs
-
在加载带有纹理的 GLTF 时,响应会卡住。
a) 我们尝试将文件托管在服务器上,并使用 GLTFLoader 加载方法,将“localhost:******”作为加载器路径。
b) 在根本没有触发 onLoad 事件的情况下,TextureLoader 在内部调用了 ImageLoader。可能是 jsdom 没有调用这个。
c) 为了解决这个问题,我们将 ImageLoader 更改为具有画布图像:
const { Image } = require("canvas");
const image = new Image();
image.onload = onImageLoad;
image.onerror = onImageError;
d) 上述修改后,加载方式得到解决。
e) 下一步 - 导出 GLTF - 由于找不到 ImageData 错误,我们被卡住了。我们从画布中添加了 ImageData,并导出了 GLTF。
f) 导出的 GLTF 因图像中的数据损坏而无法查看
"images": [
{
"mimeType": "image/png",
"uri": "data:,"
}
],
如果有人纯粹在服务器端加载并合并 GLTfs 与纹理图像,请帮助!
【问题讨论】: