冯乐乐 unity_地形系统挣扎录——从Blender到Unity

8b120415170b527491c08c3bfeb6d22c.png
欢迎参与讨论,转载请注明出处。

前言

  之前由前篇决定场景的制作模式为Tile流,这种面片堆砌的流派对于方方正正的场景(如室内)很有效。但是对于如山地草原一般的场景就很难受了:

684722489235560aa6283f78ae011e41.png


  上图可能粗看下去感觉还行,实际上是不禁细看的。地形是在方方正正的基础上揉捏而成,可以在斜边处可以到明显的采样变形,且草地边缘的石边是手动暴力贴上去的,制作起来非常的耗时且嗨奴。经此一役后美术决定引入业界更通用的场景制作方案——Terrain流:

9a23089aa0aa44af7851a111b0846fc0.png


  如上图所示,所谓Terrain流就是非常常见的那种在场景编辑器对模型揉揉捏捏塑形,涂涂抹抹上色的制作流派。对于制作地形复杂、贴图混杂的场景可谓相当受用。那么按理来说直接使用现有的地形编辑工具不就好了?——若是那么简单便没有本篇喽。
  首先经过一番实验后发现,由于美术风格、建模习惯等因素,决定采用传统建模方式,而非这些场景编辑器惯用的揉捏平面生成高度图。如此一来这些场景编辑器便都Pass,将目光放到了传统建模软件·Blender上……于是便有了本文的副标题:从Blender到Unity。Unity版本为2019.4(URP),Blender版本为2.9。

牛刀小试

  由于这波算是造轮子了,没得现有的套件可蹭,所以还是先整点最基本的实现吧。在抛开建模那块,Terrain流的贴图着色说白了就是由1张索引贴图+若干张地形贴图组成,通过工具绘制索引贴图,最终根据索引采样对应的地形贴图,实现贴图混杂的显示效果:

15058df8143157dbdc55b1d8814bb181.png

279575c9de17f28a3ecb7348b4ffa60a.png


大致Shader实现如下:

half4 Frag(Varyings input) : SV_Target
{
    
    half4 mask = SAMPLE_TEXTURE2D(_MaskMap, sampler_MaskMap, input.uv);
    half4 color1 = SAMPLE_TEXTURE2D(_TerrainMap1, sampler_MaskMap, input.uv) * mask.r;
    half4 color2 = SAMPLE_TEXTURE2D(_TerrainMap2, sampler_MaskMap, input.uv) * mask.g;
    half4 color = color1 + color2;

    return color;
}

  可见实现原理并不算复杂,将贴图的每个通道(RGBA)作为贴图的

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值