贴花是游戏引擎当中常用的一类贴图技术,通常是把图片绘制到另一个物体的表面,游戏当中我们常常看到的污迹,弹孔,脚印,墙面涂鸦等等这些都归功与decals神奇效果。
这类技术有很多种,有的纯粹是面片加透明贴图,有的是分层材质,所以说贴花技术不只是单纯的一种技术,它可以是一种材质,也可以是模型,或者是两者效果的混合,有很多种表现方式
一般运用于游戏当中decal的技术是屏幕空间的延迟贴花,具有很好的可视化布置效果,也具有很好的性能
比如ue4当中的延迟贴花,一般的Decals是一种材质,这种材质使用如下设置后,就可以像模型一样拖入场景的空白区域(和正常材质不同,正常材质只能拖到模型上),这种材质会有一个框表示投射的范围,放入其内部的模型就会被投射上贴图。
当然贴花不只是投射颜色(也就是材质中一般的diffuse),它也可以投射其他的属性,包括自发光,粗糙度之类,这个一般看引擎,ue4支持的还是比较多的,还能投射视差3d效果。这种贴花一般要注意的就是过于垂直它的平面会使纹理产生拉伸,但是也可以通过材质计算切掉多出来的部分
贴花还能辅助制作一些薄的模型部分
比如作为水塘和积水之类有很好的作用,一般传统方式通常使用平面
http://forums.joinsquad.com/topic/28637-free-assets-puddle-decal-material/
ue4还有一种贴花是mesh decals,国内有翻译为网格模型多重贴图,是4.13才开始有的,这种贴花又恢复到普通材质了,材质是直接赋予到模型上的是结合模型使用的,普通贴花是一个平面的投射,但是mesh decals是一个立体的贴花,可以方便地在非平面的地方利用弯曲或者其他包裹的模型来丰富模型的细节,这种贴花一般制作模型细节的补充,例如柱子上的凹痕或者武器上的细节,至于这些为什么不做成贴图,因为贴花更方便更换。
这种贴花要注意的就是包裹模型需要比本身模型略大一点,防止模型之间穿插,可以用于骨骼物体模型也是很好的优势
离线渲染我见过的decal技术比较少,类似功能更多使用层材质
下面是利用maya中projection节点和arnold层材质模拟的decals
在maya2018 arnold5下测试效果,材质连起来比较麻烦,一开始简单,但是有置换的话,置换部分需要另外连比较麻烦。
如果只有一个材质可以用aimix材质,但是这个只能混合surface shader,而不能混合材质前面的结果,所以也比较麻烦,最后多个decals用了ailayer材质
但是因为maya中材质系统实在比较差,基本没法和ue4材质编辑器或者substance designer相提并论,缺少太多功能,所以很多材质方式都显得比较鸡肋,在实际项目中不好控制也不方便使用
maya 的projection可以参考
https://knowledge.autodesk.com/support/maya-lt/downloads/caas/CloudHelp/cloudhelp/2018/ENU/MayaLT-CharacterAnimation/files/GUID-B7E73748-5F8E-4E66-BE88-DF3C2A3DF438-htm.html
http://wiki.bk.tudelft.nl/toi-pedia/Texture_positioning_-_Projection_mapping
ue4 decals
https://docs.unrealengine.com/en-us/Resources/ContentExamples/Decals/1_1
MeshDecals
https://docs.unrealengine.com/en-us/Engine/Rendering/Materials/MeshDecals
https://docs.unrealengine.com/en-us/Engine/Rendering/Materials/HowTo/MeshDecals
decal参考
http://martindevans.me/game-development/2015/02/27/Drawing-Stuff-On-Other-Stuff-With-Deferred-Screenspace-Decals/