美文网首页Unity探路营unity
[专栏精选]2018.3地形更新详解

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

作者: 洪智 | 来源:发表于2019-03-31 19:41 被阅读7次

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

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


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

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

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

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

    地形更新2018.3

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

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

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

    多地形支持

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

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

    快速创建相邻地形块.gif

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

    新的地形资产类型

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

    TerrainLayer

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

    添加TerrainLayer.gif

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

    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、编译后你就能在地形工具中看到这些小工具了。

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

    Utility(工具)

    Bridge 建桥工具

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

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

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

    Bridge工具.gif

    Clone 克隆工具

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

    1. 在被克隆点左Ctrl加点击
    2. 在克隆点左键点击,克隆点就会呈现和被克隆点一致的地形信息
    可以选择克隆的信息:地形起伏、贴图 克隆画刷.gif

    Mesh 网格工具

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

    • 左键点击来根据mesh抬升地形
    • Ctrl + 左键点击根据mesh降低地形
    • 按住Shift可以对网格进行旋转、缩放和位置修改。
    Mesh工具

    Sharpen

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

    Slope Flaten Height

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

    Slope Flatten Height.gif

    Erosion 侵蚀

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

    图片来源:百度百科

    Erode Height (Simple) 侵蚀高度

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

    侵蚀高度.gif

    Ridging Erosion 成脊侵蚀

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

    成脊侵蚀.gif

    Terrace Erosion 梯田侵蚀

    将地形侵蚀为梯田状。

    其中有两个参数:

    • Terrace Count:梯田的阶数。这个数值越大,两个阶梯之间的高度差会越小。
    • Interior Corner Weight:阶梯内部保留原来高度的权重,这个需要你自行体验,看看这个属性不同数值的差异。
    梯田侵蚀,是不是很有像素风

    Transform

    Pinch Height 挤压高度

    挤压(图片来源:有道词典)
    • 左键点击进行挤压(有点像成脊侵蚀)
    • Shift+左键点击进行膨胀(挤压的反向操作)
    挤压高度.gif

    Smudge Height 涂抹高度

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

    涂抹高度.gif

    Twist Height 扭曲高度

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

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

    扭曲高度.gif

    性能方面

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

    开启方法如图所示

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

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

    可编程的GPU工具

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

    API包括:

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

    总结

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

    今日思考题

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


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

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

    相关文章

      网友评论

        本文标题:[专栏精选]2018.3地形更新详解

        本文链接:https://www.haomeiwen.com/subject/rtiubqtx.html