gpt4 book ai didi

three.js - 如何使用 THREE.InstancedBufferGeometry 动态添加和删除对象?

转载 作者:行者123 更新时间:2023-12-04 02:18:23 27 4
gpt4 key购买 nike

我正在尝试了解新的 THREE.InstancedBufferGeometry 功能的工作原理,以便我可以针对我的用例对其进行评估。具体来说,我需要一种方法,我可以在将来的某个时候添加一个对象的新实例并通过它们的属性更新它们,但是我不知道在初始设置期间我需要添加多少。理想情况下,我希望在设置和属性更新期间尽可能少地调用 GPU,这就是 THREE.InstancedBufferGeometry 看起来很有吸引力的原因。

我了解如何根据这些演示一次添加所有对象并动态更新它们的属性:

我不清楚的是是否可以在创建初始批处理后动态添加和删除对象,如果它实际上更像是合并几何体在 Three.js 中的工作方式,那么实际上不可能轻松删除合并后的特定单个对象。

为了保持专注,我将如何使用 THREE.InstancedBufferGeometry 动态添加和删除对象?

最佳答案

您可以绘制少于实例数然后增加或减少计数;因此,如果您一开始就在实例缓冲区中过度分配。

例如,您可以有一个代表 2000 个对象的 InstancedBufferAttribute,然后在 InstancedBufferGeometry 上设置 .maxInstancedCount = 1只画其中一个。

当你想添加另一个项目时,更新InstancedBufferAttribute并设置.maxInstancedCount = 2等,并以同样的方式减少;你可能需要做一些重新排列,因为它是一个连续的范围。

您还可以使用 updateRange使用 .needsUpdate(true) 仅更新缓冲区的一部分而不是整个缓冲区,如果您只想为新“添加”的实例更新缓冲区。

关于three.js - 如何使用 THREE.InstancedBufferGeometry 动态添加和删除对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32646531/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com