0

我想将我的 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 个球体来说仍然很大。

提前感谢您,任何意见将不胜感激。

4

1 回答 1

1

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

  • 使用二进制 STL 文件格式。这是一个更紧凑的表示,每个方面使用 50 个字节。根据信封背面的一些计算*,这将需要每个球体约 0.1MB。three.js 存储库有一个二进制 STL 导出器示例
  • 降低用于导出数字的数字精度。如果您导出数字0.1而不是0.100001这样,则保存结果所需的字符更少(但您会失去精度)。
  • 如问题中所述,使用较少的三角形来构成您的球体。
  • 如果您真的很想使用 ASCII,您还可以尝试删除导出器生成的一些不必要的空格缩进,但这只会产生非常小的改进。

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

于 2016-01-18T04:24:41.997 回答