将 threeJS 场景导出到 STL 文件导致文件大小非常大

Exporting threeJS scene to STL file results to very big file size

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

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

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

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

提前致谢,如有任何意见,我们将不胜感激。

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

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

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