从哪里开始体素引擎?

时间:2014-03-19 18:41:41

标签: java perlin-noise voxel simplex-noise

我一直在研究体素游戏已经有一段时间了,但我真正完成的只是主菜单和Item系统。现在是制作体素引擎的时候了。我一直在寻找一些教程或电子书来教我这样,但我能找到的最好的是c ++中的某些教程,但我用Java编写了我的教程。我过去曾涉足c ++和c#,但翻译起来太难了,即它依赖于java没有的类。我所知道的是,体素引擎有不同的方法,它们都是从渲染单个立方体开始的,Perlin和Simplex噪声可用于随机化地形生成。

如果有人能指出我正确的方向,最感谢。 我会每小时至少检查一次,因为有人觉得这个帖子已经死了。

2 个答案:

答案 0 :(得分:2)

我不完全确定你在问什么,如果你问的是如何制作单一噪音,在体素引擎中实现它,或者如何开始制作体素引擎。

如果你问如何开始制作体素引擎,我建议先用四边形练习(2D版本)并专注于理解理论。一旦你对你的理解感到满意,你应该专注于体素类(一个立方体) - 尽可能多地从中学习,然后添加更多,这样你就可以尽可能地优化渲染,这样隐藏的面部不会被渲染,甚至顶点也会被共享,如果没有优化,体素引擎可能是最浪费的渲染器!

修改
优化可以通过多种方法完成,第一个也是最重要的是隐藏面部移除,这涉及移除接触的体素的面,这意味着在渲染之前需要检查任何体素的任何给定侧上存在的体素。面部(例如在渲染左脸之前,检查左侧是否有阻挡)。接下来是渲染方法,单独渲染每个面或每个组,对它们进行分组以便可以更快地渲染它们,这可以通过使用显示列表或更技术性的VBO来完成,这些确保了数据在GPU中,或者数据可以更快地提供给GPU。例如,Minecraft将它们分成大块的16x16x128组,并使用显示列表。如果你真的想要减少内存中的每个顶点,你也可以考虑使用条带绘制方法(在OpenGL中),这些将要求你在渲染的某个时间定义某些顶点,但允许你为多个面重用一个顶点。 / p>

接下来将会理解单纯形噪声,我可以将噪声生成算法用于网上没有太多材料,遗憾的是我无法链接我多年前使用过的材料。您可以在2D版本中实现噪声算法,以证明它在更简单的环境中工作,然后将其复制到体素版本。典型的用法是将值用作地形中的高度(例如白色= 255 = 255高)。

答案 1 :(得分:-5)

我建议使用Unity。该引擎已经制作完成,只需几行代码即可添加菜单和标题。所有的游戏创建都是在C#或Javascript中进行的,不应该是C ++的任何重大变化。祝你好运!