【问题标题】:is there a good tutorial on terrain editor? [closed]有没有关于地形编辑器的好教程? [关闭]
【发布时间】:2013-09-01 09:44:38
【问题描述】:

我是 3D 游戏编程的新手,现在在 Windows 上学习了很多关于 DirectX 和 OpenGL 的知识。 但是我想出了一个地形编辑器,但是我在网上找不到任何开放的教程或想法。

有没有好的教程或开源代码来学习这个?

简单的很好,我只是想知道如何升高或降低地形,或者在地图上放一棵树,就像下面的视频。

喜欢下面的视频:http://www.youtube.com/watch?v=oaAN4zSkY24

【问题讨论】:

    标签: opengl directx game-engine terrain heightmap


    【解决方案1】:

    首先我想说,如果您没有在 OpenGL 和 DirectX 之间进行选择,那么这样做是个好主意。 我的选择是使用 OpenGL,因为 OpenGL 是跨平台的,适用于 Windows、Linux、Solaris、Mac、智能手机等。而 DirectX 仅支持 Windows 机器。

    我不能给你教程或开源代码,因为这有点大,即使只是一个“简单的地形编辑器”,那仍然是一个非常复杂的东西。 虽然,我可以告诉你的是一些你需要了解和阅读的要点,如果你知道这些,那么你将能够创建一个“地形编辑器”。

    你需要能够做到的点。

    • VBO 的
    • 着色器
    • 多重纹理
    • 拾取/光线拾取/3D拾取

    VBO 的

    VBO or Vertex Buffer Object,是一种将顶点数据(位置、法线、纹理坐标、颜色等)上传到 GPU 本身的方法,这可以实现非常快速的渲染,这也是目前最好的渲染方式。 请注意,这是一个 OpenGL 功能,尽管 DirectX 可能也有类似的功能。

    着色器和多重纹理

    Shaders 用于对所有图元的顶点和片段进行着色/着色。 OpenGL使用GLSL,而DirectX使用HLSL,两者非常相似。

    多纹理基本上是绑定多个纹理,然后通过着色器计算用于当前顶点/片段的纹理。 通过这种方式,您将能够实现您在视频中看到的内容。

    拾取/光线拾取/3D拾取

    拾取是从相机(3D 空间)或鼠标(2D 屏幕空间)“射出”射线的过程,然后每次射线撞击/碰撞某些东西时,这些东西都会返回给用户。在您的情况下,您将使用鼠标(2D 屏幕空间)创建一个拾取射线,然后在射线击中的地形点处,即我们想要更改地形的点。

    如果您对 Picking 一无所知,请尝试使用 Google 搜索,我发现对于 3D 相关的事物也很难找到好的结果,因此如果您愿意,可以阅读我前段时间在 Stack 上发布的问题溢出(click here to see the post),帖子涵盖了 3D 相机拾取和 2D 屏幕空间拾取,还有代码,我也将最终代码添加到帖子本身。

    额外

    如果您将所有这些东西结合起来,您将能够创建一个“地形编辑器”。

    我解释过的一些东西可能与 OpenGL 相关,但 DirectX 中肯定有一些东西可以执行相同类型的东西。

    【讨论】:

    • 没有。我的意思是数学,用于在特定的圆圈区域中提升或降低高度图,该区域与我的鼠标位置一起移动,就像我的链接的视频一样。这种线性插值没有数学公式吗?
    • 这不是您在问题中提出的问题,因此您的问题似乎真的跑题了......
    猜你喜欢
    • 2010-11-22
    • 2010-12-28
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 2011-09-25
    • 2010-10-23
    • 2010-10-23
    • 2011-03-06
    相关资源
    最近更新 更多