我正在使用Bevy渲染一个点云,但目前为每个点生成一个icoshpere,速度相当慢,有775k个点。使用网格实例化来减少开销的最简单方法是什么?
这是我目前如何做的代码:
for point in &pointcloud_assets.get(&pointcloud.church).unwrap().points {
commands
.spawn_bundle(PbrBundle{
mesh: sphere.clone(),
material: material.clone(),
transform: Transform::from_translation(*point / 10.),
..Default::default()
});
}
我发现了这个例子:https://bevyengine.org/examples/shader/shader-instancing/但它被称为着色器实例化,我不确定它是否是同一回事。它看起来也很复杂,所以我想知道是否有更简单的解决方案。
如果您不需要它在浏览器上运行,并且您可以使用多维数据集,那么https://github.com/ForesightMiningSoftwareCorporation/bevy-aabb-instancing/(也许这也可以做非矩形?(。它对我有效而且速度很快。
你可以尝试的另一个选择是https://github.com/Shfty/bevy_instancing这是关于bevy如何选择支持实例化的建议。我还不能评论它在浏览器上是否有效。
目前,这似乎是唯一的3个选项,除非你想编码第4个。观看此空间:https://github.com/bevyengine/bevy/issues/89