在体素世界中'剔除'

时间:2014-04-21 20:52:54

标签: javascript three.js culling voxels

我有一个充满体素的世界,让我说我的世界是320 * 320 * 96体素。我的想法是将整个世界加载到我的显卡的内存中,以便在将新的“块”传输到GPU时不会丢失性能。显示体素世界所产生的面部数量应该很容易融入现代图形卡的记忆中。

然而,我现在面临的问题是如何不显示那个世界的部分,我想将这个世界的视图限制为(例如)128 * 128 * 96并将世界或相机转移到显示不同的部分。

为了演示我的问题,请看一个(简单)场景,其中包含一个白色的“可视”区域,我正在寻找合适的WebGL / three.js函数来将视图限制为白色一部分。

the voxelworld

1 个答案:

答案 0 :(得分:3)

您可以删除不想从场景中显示的体素。

scene.remove( mesh )

当您想要显示它们时,将它们添加到场景中。

scene.add( mesh )

我建议将你的体素世界分成块(如Minecraft)并将这些块分别制作成网格。将想要显示的块网格添加到场景中,并在想要隐藏它们时将其删除。