javascript - 将 ThreeJS 场景导出到 STL 文件结果导致文件大小非常大

标签 javascript three.js filesize exporter

我想将我的 ThreeJS 场景导出到 STL 文件。 我正在使用这个导出器:https://gist.github.com/kjlubick/fb6ba9c51df63ba0951f

我的问题是我得到的文件大小。例如,对于 4 个球体(通过 new THREE.SphereGeometry(1,32, 32) 创建),我得到了一个 15MB 的文件,如果您认为这里的这个球,我认为这个文件很大: http://archive3d.net/?a=download&id=469e26a6小于 0.5 MB。

有什么办法可以减小文件大小吗?为什么只有 4 个球体就这么大? 一种方法是在导出时创建一些低分辨率( new THREE.SphereGeometry(1, 16, 16) )临时球体,然后将其删除,但是还有其他更好的方法吗?

编辑:我在导出过程中犯了一个错误,当我更正它时,大小下降到 6 MB,但对于 2 个球体来说仍然很大。

预先感谢您,如有任何意见,我们将不胜感激。

最佳答案

您链接的导出使用 ASCII STL format ,它本质上是相当冗长的,并且占用大量字节来存储单个三 Angular 形。每个球体都由数千个三 Angular 形组成。选项是:

  • 使用二进制 STL 文件格式。这是一种更加紧凑的表示形式,每个方面使用 50 个字节。根据一些粗略计算*,每个球体大约需要 0.1MB。 Three.js 存储库有一个 binary STL exporter example .
  • 降低导出数字时使用的数字精度。如果您导出 0.1 等数字而不是 0.100001,则需要更少的字符来保存结果(但会丢失精度)。
  • 按照问题中的讨论,使用更少的三 Angular 形来组成球体。
  • 如果您真的非常渴望使用 ASCII,您也可以尝试删除导出器生成的一些不必要的空格缩进,但这只会带来非常小的改进。

* 假设每个球体有 32 * 32 * 2 个三 Angular 形,则 32 * 32 * 2 * 50 = ~100e3 = ~0.1MB

关于javascript - 将 ThreeJS 场景导出到 STL 文件结果导致文件大小非常大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34839871/

相关文章:

javascript - three.js 的 gltf 加载器是否与 ie11 不兼容?

javascript - Three.js和html slider

json - 将 Jupiter Tessellation(JT) 文件转换为 JSON 以在 THREE.js 中渲染

r - 如何在打开前检查文件大小?

Iphone 应用程序 - 不使用 WiFi 可以下载的最大文件大小?

javascript - 利用 Javascript 将多个动态命名的下拉菜单更改为一个值

javascript - 我们将如何维护在 fabric js 中添加到 Canvas 的对象列表

sed - 尽管内容已清空,但打开的文件仍在不断增长

javascript - 将对象属性转换为对象数组

javascript - Devtools 不显示控制台或扩展弹出请求?