【发布时间】:2017-09-19 01:33:45
【问题描述】:
我正在构建一个使用three.js 呈现3D 模型的Web 应用程序。我已经通过选择基本模型(任何格式的 3D 模型,例如 .obj+.mtl、.3ds 等...)来实现创建项目的功能。现在我必须实现一个保存功能,它将活动的 three.js 场景作为 JSON 文件保存到服务器。问题是,当我将场景导出为文件时,大小变得非常大。
例如,当我将 24MB obj+mtl 模型(包括纹理大小)转换为文本文件时(使用 JSON.stringify(scene.toJSON()) ),文件大小变为 208MB! 我认为每次用户单击保存按钮时向服务器发送 208MB 数据不是一个好主意。因此,我尝试实现一个函数,该函数将使用两个 json 对象之间的差异创建一个补丁文件。如果我们在服务器端有与 json 相同的场景数据,我们只需要发送补丁文件,我们可以应用这个补丁来同步这两个文件。这里文件大小也是一个大问题,因为我们必须在用户第一次点击保存时将整个文件发送到服务器。
作为一种不同的方法,我导出了上述模型没有 mtl 文件,现在文件大小只有 31MB。 有没有什么方法可以导出没有纹理的场景?如果可能的话,如何从导出的文本文件中重新创建相同的场景并通过指定纹理路径来加载纹理? 还有哪种方法是将three.js场景保存到服务器的正确方法?我对这类实现没有太多经验,所以如果我完全错了,请纠正我。
【问题讨论】:
标签: javascript three.js client-server