当前位置:首页 >教程首页 > 游戏设计 > 3D模型大师班 >《Trigger Rally》的WebGL地形渲染技巧(3)

《Trigger Rally》的WebGL地形渲染技巧(3)

发布时间:2018-11-17 19:57:24
  这次我们要看看地形高地数据是如何储存和处理的。(阅读本文第1第2部分

  《Trigger Rally》的地形高地数据主要资源,形成山地的整体形状,是瑞士阿尔卑斯山地图的真实卫星数据。

terrain4

  我写了一个工具把这个数据转化为无缝的1024×1024的16位图像。低8位储存在红色通道里,高8位存在绿色通道里。如下图所示:

nice-boosted

  在载入时,游戏把这个图像转化为单通道的32位浮动纹理,然后把赛车跑道曲线(每一条路道的曲线都是不一样的)绘制到这个图像中。

  以角秒的速度取样高地数据,以21米对应阿尔卑斯山纬度30米。我把这些数值除以大约3,以缩小游戏中的高山,所以主高地地图的各个象素其实是7.5米x10.8米。

  这样的分辨率对于高山是不错的,对于跑道只是刚好,而对于顺畅的驾驶和近景图像,就不太够了。

  平滑

  第一件要做的事就是修改高地地图。对于图像,线性过滤通常足够平滑了,但对于我们几何体,我们确实需要更高的连续性。这里有几个不同的办法,但我只采用三次厄密特条样函数插值法。

  我们得到的结果如下:

terrain7

  添加细节

  现在我们必须添加更高分辨率的细节,使地形更加有趣和真实。为此,我使用512×512的8位地图,其中高地储存在蓝色通道中,高地导数(注:一个变量随某个变量变化时的速度或变化率)存在红色和绿色通道中。

detail

  以每个顶点1象素,最高的地形分辨率,取样这个细节地图,然后添加到主要高地上,使地图更加生动。

terrain8

  调整细节地图上的地形渐变和接近跑道曲线的地方,使陡峭的区域更加崎岖,使山谷更加平整。这么做也使跑道更加漂亮和平整,尽管这是在编辑器中可配置的跑道曲线片段。

  表面地图

  着色器需要更多关于地图的信息,我把它存在“表面”地图中:

surface

  R: d(高度)/dx

  G: d(高度)/dy

  B: 表面类型 (尘土或草地/石块)

  A: 细节倍增器 (由渐变和路道邻近决定的)
学员作品赏析
  • 2101期学员李思庭作品

    2101期学员李思庭作品

  • 2104期学员林雪茹作品

    2104期学员林雪茹作品

  • 2107期学员赵凌作品

    2107期学员赵凌作品

  • 2107期学员赵燃作品

    2107期学员赵燃作品

  • 2106期学员徐正浩作品

    2106期学员徐正浩作品

  • 2106期学员弓莉作品

    2106期学员弓莉作品

  • 2105期学员白羽新作品

    2105期学员白羽新作品

  • 2107期学员王佳蕊作品

    2107期学员王佳蕊作品

专业问题咨询

你担心的问题,火星帮你解答
×

确定