Three.js - 大型网格的 BinaryLoader 与 BufferGeometry?
Posted
技术标签:
【中文标题】Three.js - 大型网格的 BinaryLoader 与 BufferGeometry?【英文标题】:Three.js - BinaryLoader vs. BufferGeometry for large meshes? 【发布时间】:2013-05-23 19:17:51 【问题描述】:我正在寻找一种将大型多边形网格(最多 1M 三角形)加载到 Three.js 的最有效方法。我正在考虑使用THREE.BufferGeometry
对象或使用THREE.BinaryLoader
加载。我的问题是:
THREE.BufferGeometry
对象?或者它是否创造了同样有效的东西?
如果没有,有没有人推荐使用哪一个?
一些附加信息:
我的模型在服务器上是专有格式,所以无论如何我都需要对它们进行转换/编码。 我还没有找到一个可以创建THREE.BufferGeometry
的 Three.js 加载器。看来我需要自己写。但我可以在服务器端准备数据以与THREE.BufferGeometry
结构对齐。
BinaryLoader.js 提供加载数据所需的所有基础设施,但需要在服务器端以特殊方式准备数据。
【问题讨论】:
CTMLoader 在参数参数useBuffers: true
指示时创建 BufferGeometry
@gaitat - 谢谢!这带来了另一种选择。 OpenCTM 是否仍在开发中?我在过去 15 个月内没有看到任何更新。另一种选择可能是webgl-loader,尽管我不确定 Three.js 支持是否仍然是最新的。我希望我有时间比较所有这些选择......
我认为 OpenCTM 已经完成了它应该做的事情,所以不需要更新。 webgl-loader 也是在three.js 的UTF8Loader()
中实现的,同样支持BufferGeometry 参数。此外,OpenCTM 还支持 WebWorkers。
@gaitat - 再次感谢!我会同时尝试并发布结果。
如果某些评论有用,我将不胜感激(评论左侧)
【参考方案1】:
了解一下 Three.js 的 glTF 格式和 glTFLoader。它使用 BufferGeometry。 性能要好得多;但是,它实现了自己的动画(不使用 THREE.Animation),并且我遇到了一些与 Three.js 相关的问题,例如无法克隆模型(至少开箱即用)
glTF:https://github.com/KhronosGroup/glTF
glTFLoader:https://github.com/mrdoob/three.js/blob/54a1e789c3a84557d6b05782f5cbd9f1064f5e4f/examples/js/loaders/GLTFLoader.js
【讨论】:
以上是关于Three.js - 大型网格的 BinaryLoader 与 BufferGeometry?的主要内容,如果未能解决你的问题,请参考以下文章
three.js - 网格组示例? (THREE.Object3D() 高级)