【问题标题】:Where to start with voxel engine?从哪里开始使用体素引擎?
【发布时间】:2014-03-19 18:41:41
【问题描述】:

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

如果有人能指出我正确的方向,不胜感激。 我将至少每小时检查一次,以防有人觉得这个帖子已经死了。

【问题讨论】:

    标签: java perlin-noise voxel simplex-noise


    【解决方案1】:

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

    如果您要问如何开始制作体素引擎,我建议您先练习四边形(2D 版本)并专注于理解理论。一旦您对自己的理解感到满意,您应该专注于体素类(一个立方体) - 尽可能多地从中学习非常重要,然后添加更多内容,以便尽可能优化渲染,例如隐藏面不渲染,甚至顶点共享,如果不优化,体素引擎可能是最浪费的渲染器!

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

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

    【讨论】:

    • 我已经在 2D 方面做了很多工作,如果重要的话,更具体地说,我想问的是如何生成大量立方体来制作所谓的“体素引擎”。我不禁认为我措辞不好
    • 我已经知道要制作你所谓的体素类,在我的例子中,我将它命名为 BlockRender,它负责创建块(立方体)
    • @FeatheredOrcian 添加了我对渲染体素引擎的了解,您似乎希望能够尽可能多地渲染。
    • 好吧,我知道它的目标有点高,但我基本上是在制作我的世界克隆。但我不在乎这是否需要我 10 年
    • @FeatheredOrcian 我是这么认为的,我同意它可以教授很多关于 3D API 的知识,I also tried,我花了不到 6 个月的时间——这只是地形。
    【解决方案2】:

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

    【讨论】:

    • OP 正在询问如何在 JAVA 中制作它,而且可能是为了学习,所以简单地使用已经制作的东西是没有意义的。
    猜你喜欢
    • 2014-03-31
    • 1970-01-01
    • 2016-10-11
    • 2010-10-10
    • 1970-01-01
    • 2010-10-02
    • 2010-09-07
    • 1970-01-01
    • 2012-12-03
    相关资源
    最近更新 更多