前言

  在完成了前面两部入门教程之后,我开始着手Unreal材质的学习。
  后续要看的教程我都已经筹划好了。

  材质入门的教程也已经看完,大部分内容其实都和 Lynda 的入门教程重合了。
  一些细枝末节的东西,比如 metallic 属性的讲解其实和 PBR 材质讲解一样的,这些我都接触过了。
  因此很多东西我也只是过了一遍。
  不过教程提到的一些材质制作方法还是很有意思的。

Baker蓝图 输出贴图

  虚幻引擎可以在材质编辑器中生成程序化贴图

Baker蓝图

  但是程序化贴图使用比较耗费资源,每一次移动都需要重新计算贴图。
  于是有没有办法将这种程序化生成的贴图转换成我们所熟知的贴图就不需要一次又一次地计算
  教程就通过蓝图实现了这个效果

Baker蓝图

  首先新建一个 actor 蓝图,并添加一个 sphere 命名为 TextureSphere

Baker蓝图

  再创建一个 RenderTarget 用来显示贴图输出

Baker蓝图

  添加蓝图自定义事件,将获取蓝图中球上的材质渲染输出到 RenderTarget 上

Baker蓝图

  在脚本编译过程中触发这个自定义事件

Baker蓝图

  将刚才看到的噪波材质添加到球上,需要注意的是材质必须连到发光通道上才可以正确渲染出贴图
  然后点击编译按钮就可以看到 RenderTarget 上有了贴图了

  这里 RenderTarget 和 Unity 里面的应该没有什么区别,相当于动态生成的贴图。
  如果需要静态贴图,可以右键 RenderTarget 输出静态贴图,也可以双击 RenderTarget 进入编辑器调整生成贴图的大小。

Baker蓝图

Blinker 闪烁材质

Blinker

  下面要实现这种一闪一闪的信号灯材质
  需要注意的是,这种材质发光效果和灯光是不一样,它无法照亮其他物体,或者展现其他物体的影子。
  如果要实现光照效果还需要添加额外的灯光去实现。

Blinker

  这里使用了 time函数加载 sine 函数实现了 -1 到 1 的来回变化
  通过 clamp 函数将输出数值限制到 0-1 的区间上
  将输出值输出到 lerp 函数中就可以实现 由蓝色到黑色的来回变化。

Strip 条纹材质

Strip

  这个材质其实是教程里面作为传送带用的。
  我自己加了一些修改。

Strip

  教程里面条纹贴图是自己做好导进来的,我这里通过 Unreal 动态生成的。

Strip

  通过 spaner 节点可以实现UV的动态偏移,实现平移效果,有传送带的感觉。
  后面是UV分段的控制,可以让UV多次重复。

Strip

  这里就是我自己研究出来生成条纹贴图的方法。
  首先是生成黑到白的线性过渡值,然后通过内置的 valueStep 函数将过渡效果去掉,变成无过渡效果。
  通过提高UV重复的值,实现多个条纹效果。
  其实 valueStep 函数就是一堆写好的数学计算,打开节点可以看到。

Strip

  到这里就是根据输出的条纹贴图生成对应的颜色贴图、粗糙度贴图以及法线贴图。
  由于贴图转法线没办法通过生成的贴图完成,只好通过 Baker 输出一张条纹纹理,然后导入到 NormalFromHeightMap 进行转换。

距离变色材质

距离变色材质

  这个材质根据当前的摄像机位置变色

距离变色材质

  其实构建非常简单
  主要是获取了 摄像机 和 物体 的位置计算距离,根据距离来输出 lerp 节点的透明度,就可以实现远近颜色的过渡变化。

总结

  教程中比较有意思的点主要是这三个材质。
  当然后续也介绍了一些有用的概念

  • Parallax Mapping - POM and Bump Offset - 通过近快远慢的透视原理,模拟深度效果
  • World Space (WS) Normal Maps - 细节不会跟随物体运动旋转,比如说雪永远在物体的上面覆盖
  • blueprint - 蓝图切换材质

  不过这些概念都讲得很浅,我就不再做进一步的总结了。
  而教程的其他部分都是一些材质基础的讲解以及 材质实例的使用,我觉得都做得很好,但是过一遍就可以了。
  最后四节课还专门分享了一波网站资源以及Unreal的官方案例Demo,真的很良心。