[专栏精选]2018.3地形更新详解

本文节选自洪流学堂公众号技术专栏《大话Unity2018》,未经允许不可转载。

洪流学堂公众号回复专栏,查看更多专栏文章。


大智:“Unity2018.3已经发布有一段时间了,这次更新内容还是比较大的,这周我们来着重学习一下之前学习过的内容在2018.3中的重大更新。今天我们看一下地形系统有哪些惊喜的变化。”

[专栏精选]2018.3地形更新详解_第1张图片

地形系统的更新主要功能包括:

  • 多地形块的支持
  • 新的地形资产类型
  • 新的地形画刷
  • 新的地形绘制工具
  • 性能大幅提升,充分利用GPU
  • 开放地形API接口

下面我们一起来逐一研究一下具体的变化吧!

地形更新2018.3

Unity2018.3包含了地形系统的较多更新,主要体现在性能和易用性方面。

地形系统改进了制作地形的工具,在性能方面可以更充分地利用GPU。增加了HDRP和LWRP的支持,也兼容了内置渲染管线和现有的地形系统。

可以看出Unity在大地形方面已经有所布局,这次更新只是第一步。

多地形支持

现在Unity对多个地形块的支持更友好了。可以管理相邻地形的连接,然后可以跨地形无缝绘制,这在之前需要自己写脚本才能实现。

现在可以通过Create Neighbor Terrain工具快速扩展相邻地形块。

[专栏精选]2018.3地形更新详解_第2张图片
快速创建相邻地形块.gif

勾选Terrain Settings中的‘Auto connect’,地形会自动和相邻地形连接,使用相同的分组ID。这样在进行地形绘制时,可以跨地形无缝绘制。

[专栏精选]2018.3地形更新详解_第3张图片

新的地形资产类型

现在新增了两种和地形相关的资产类型,可以简化工作流,分别是TerrainLayer和Brush资产。

TerrainLayer

TerrainLayer来源于原地形系统对应的地形纹理材质,但是原来不同地形之间的地形纹理材质不能通用,需要手动添加。通过独立资产的方式可以让你独立于地形来定义地形材质,这样你可以在不同的地形之间复用这些材质,修改起来也更方便。

[专栏精选]2018.3地形更新详解_第4张图片
添加TerrainLayer.gif

经过上面添加后,会在工程中多一个NewLayer的资产,可以对这个资产进行重命名、移动、编辑修改。在其他地形中也可以直接复用这个材质。

[专栏精选]2018.3地形更新详解_第5张图片

Brush画刷

画刷资产代表了用于绘制和雕刻地形的GPU画刷形状。现在可以自定义画刷,包含自定义纹理以及参数,更好地调整画刷形状。

参数包含:

  • Falloff 衰减曲线
  • Radius Scale 半径尺寸
Brush资产.gif

同时你也能看到,现在画刷会有一个预览效果,这也是得益于画刷操作现在运行在GPU上,速度更快。

支持R16纹理

Unity现在支持R16格式的画刷纹理(一个通道有16bit,传统的纹理一个通道8bit)。这种类型的纹理会带来什么好处呢?

传统8bit的纹理能表示的数值范围比较小,在地形上可能会出现“阶梯”状的不平滑的效果。

而16bit的纹理表示的数值范围比8bit大得多,可以让地形更平滑。

8位笔刷标记产生的“阶梯”瑕疵(上)和16位笔刷标记的效果(下)

新的地形绘制工具

新的地形绘制工具没有直接包含在引擎中,你需要手动导入到Unity中使用。
下载地址:https://github.com/Unity-Technologies/TerrainToolSamples

安装方法:
1、下载Github的版本库,可以下载.zip或clone代码(如果不知道怎么操作,可以回去复习147课Github相关的操作哦)
2、将Editor和Shaders文件夹复制到工程中(需要Unity2018.3或之后的版本)
3、编译后你就能在地形工具中看到这些小工具了。

[专栏精选]2018.3地形更新详解_第6张图片

如果你在下面使用工具时发现没有效果,注意确认一下画刷的Opacity属性是不是太小了。

Utility(工具)

[专栏精选]2018.3地形更新详解_第7张图片

Bridge 建桥工具

这个工具可以让两个点之间变成平面

  1. 在起点Shift加点击
  2. 在终点左键点击,两次点击中间的区域就根据画刷的形状变平整

同时这个工具也给出了一些参数,你可以实践研究下这些参数的作用。

[专栏精选]2018.3地形更新详解_第8张图片
Bridge工具.gif

Clone 克隆工具

这个工具可以让一个点复制另外一个点

  1. 在被克隆点左Ctrl加点击
  2. 在克隆点左键点击,克隆点就会呈现和被克隆点一致的地形信息
[专栏精选]2018.3地形更新详解_第9张图片
可以选择克隆的信息:地形起伏、贴图
[专栏精选]2018.3地形更新详解_第10张图片
克隆画刷.gif

Mesh 网格工具

这个工具可以让你根据网格的形状修改地形的起伏。

  • 左键点击来根据mesh抬升地形
  • Ctrl + 左键点击根据mesh降低地形
  • 按住Shift可以对网格进行旋转、缩放和位置修改。
[专栏精选]2018.3地形更新详解_第11张图片
Mesh工具

Sharpen

这个工具可以让地形变得更陡峭。

[专栏精选]2018.3地形更新详解_第12张图片

Slope Flaten Height

做平滑地形的同时保持原来一定的坡度。

[专栏精选]2018.3地形更新详解_第13张图片
Slope Flatten Height.gif

Erosion 侵蚀

顾名思义,就是在地形上做出侵蚀的效果。

[专栏精选]2018.3地形更新详解_第14张图片
图片来源:百度百科

Erode Height (Simple) 侵蚀高度

这个工具的作用是:在地形上点击左键,画刷区域的最高点不变,其他区域会变低,增大了落差。

[专栏精选]2018.3地形更新详解_第15张图片
侵蚀高度.gif

Ridging Erosion 成脊侵蚀

成脊侵蚀是什么意思呢?就是将地形侵蚀成一个山脊。看下面的图可能会更直观。

成脊侵蚀.gif

Terrace Erosion 梯田侵蚀

将地形侵蚀为梯田状。

其中有两个参数:

  • Terrace Count:梯田的阶数。这个数值越大,两个阶梯之间的高度差会越小。
  • Interior Corner Weight:阶梯内部保留原来高度的权重,这个需要你自行体验,看看这个属性不同数值的差异。
[专栏精选]2018.3地形更新详解_第16张图片
梯田侵蚀,是不是很有像素风

Transform

Pinch Height 挤压高度

[专栏精选]2018.3地形更新详解_第17张图片
挤压(图片来源:有道词典)
  • 左键点击进行挤压(有点像成脊侵蚀)
  • Shift+左键点击进行膨胀(挤压的反向操作)
挤压高度.gif

Smudge Height 涂抹高度

你可以想象拿着一个画刷在一个画布上随意涂抹的效果。

[专栏精选]2018.3地形更新详解_第18张图片
涂抹高度.gif

Twist Height 扭曲高度

Twist我们在之前的Shadergraph课中见过,是扭曲的意思。

这个工具需要在高度有落差的地方使用,可以形成旋涡状的扭曲。

[专栏精选]2018.3地形更新详解_第19张图片
扭曲高度.gif

性能方面

Unity为地形增加了GPU-instanced的渲染路径。在大多数情况下,GPU实例化可以显著减少draw call的数量。经过测试,大多数情况可以减少超过50%的CPU消耗(实际情况取决于运行的平台和使用场景)。

[专栏精选]2018.3地形更新详解_第20张图片
开启方法如图所示

启用后,Unity会将所有大型地形数据,比如高度图和splat贴图等转换为GPU上的纹理。Unity会使用GPU实例化来复制单个网格、采样高度图纹理来生成正确的几何体,而不是使用传统的方法在CPU上为每个地形块生成网格。CPU的负载会有数量级的降低,因为几个实例化draw call就可以替代上千个自定义网格绘制。

同时呢,还可以改善加载时间。为什么能改善加载时间呢?现在Unity可以用GPU来构建basemap(预混合的LOD贴图),就不用预先构建占用存储空间了。GPU非常擅长这种事,速度很快。这也意味着,如果你要写自定义的地形shader,现在可以重写'build basemap'的shader并且生成匹配的basemap LOD贴图。

可编程的GPU工具

在编辑器中,Unity现在开放了地形的编程接口,你可以编写自己的地形工具,在GPU上实现跨地形块的无缝拼接、起伏雕刻和纹理绘制。

API包括:

  • TerrainPaintTool,一个地形工具的基础类
  • TerrainPaintUtility,包含修改地形数据的工具方法

Unity也将现有的地形工具都转到了GPU上进行运算。除了使用这些工具更流畅,也提供了更大的画刷尺寸,更好地画刷预览以及可以跨地形块的地形绘制(自动无缝拼接)。

总结

大智:“相信这些地形的更新会给地形带来很多增强,不管是在制作过程还是运行过程的性能。”

今日思考题

大智:“制作一个地形试试吧,看看新的地形能给你带来什么?”
小新:“好嘞!”
大智:“收获别忘了分享出来!也别忘了分享给你学Unity的朋友,也许能够帮到他。”


洪流学堂公众号回复专栏,查看更多专栏文章。

《大话Unity2018》,大智带小新学Unity2018的有趣经历,让你学Unity更简单。
所有订阅《大话Unity2018》的用户,可在《大话Unity2019》上线时获得1元换购资格。

你可能感兴趣的:([专栏精选]2018.3地形更新详解)