UE4·锤纹银

UE生成材质+RT烘焙纹理

不务正业的一篇。

在P站看到一个blender材质,用voronoi噪音制作的锤纹球,就在blender里复刻了一下,然后,想着在UE4里也整个一样的。

Blender里的shader如下,

Voronoi

Voronoi是挺出名的一种cellular noise。根据距离相邻cell中心位置的长度计算当前cell的颜色,可以创造出形似细胞的图形。The Book of Shader有一章专门讲这个。(下图是processing做的一个交互voronoi图,鼠标点击下方图片可以在鼠标位置新建cell。

在UE4中烘焙贴图

UE4中有一noise节点,提供几种常用噪音算法,其中包括voronoi。在实践中,出于消耗上的顾虑,不应该直接使用节点生成噪音,而是应该将其制成贴图。

首先新建一个空Render Target

一个材质。材质如下,使用noise节点的voronoi噪音生成需要的噪音。

然后新建一个Actor蓝图。蓝图内容如下,把刚才新建的材质和RT填进去即可。

此时compile蓝图,材质的内容即可被烘焙到RT上。

这里要注意几个问题——

材质的shader要选有emission通道的shading mode(比如unlit),噪音图样要连接到emmisive上,否则bake不出图案。

此外在我第一次compile时,bake出的贴图alpha通道是全0,这是因为Draw material to render target实际上是将材质图案与RT这张”图片”混合以改变RT的内容,这就涉及到blend mode的选择。

这里的blend mode应该选择AlphaComposite,然后设置opacity为0!(是0不是1)。

AlphaComposite用于已经预乘透明通道的材质,这一模式经常用于UI或者特效贴图。该模式的混合计算如下,

$$Final_{rgba} = Source_{rgba} + (Dst_{rgba} * (1 - Source_{a}))$$

这样只要dst(即clear render target)的clear color设置为(0,0,0,1),然后将source的alpha设为0,就可以保证最终获得我所需要的source的rgb和dst的a。

(当然这个blend mode不是唯一选择,测试了一下addictive在这个例子中似乎也没什么区别,只是alpha又要根据相应的计算规则调整成其他数值。)

成功获得噪音图到RT后,右键→create static texture即可根据RT获得一张Texture。

锤纹材质

这个…没啥好讲的,就改改法线和颜色,over。

参考

  1. Getting the Most Out of Noise in UE4

  2. [4.13] How to write alpha channel when rendering to RenderTarget from Blueprints

  3. UE Forums - AlphaComposite finally!

  4. EBlendMode - Unreal Engine 4 Documentation

  5. UDK - Materials Overview