开始上班了瞬间更不动odos了..😭 做一下Unity HDRP下Layered Materials的学习笔记📒
Maps导入与制作基础材质
HDRP的lit shader主要用到3张材质:abedo,normal和mask。本文的贴图材质来自Textures.com。 将贴图文件导入unity后需要对文件进行设置:
- normal map需要将Texture Type改为Normal Map;
- mask map/height map以及其他所有非颜色信息的贴图需要取消勾选sRGB.
创建新材质,选择HDRP内置的Lit Shader,将abedo/mask/normal map置入对应的位置即可。
Mask Map
The mask map contains four grayscale Textures, one in each of its color channels.
Color channel | Map |
---|---|
Red | Metallic |
Green | Occlusion |
Blue | Detail mask |
Alpha | Smoothness |
可以使用ps制作mask map。在Channels的tag中新建一个通道,分别将metalness/ao/detail map/smoothness粘入各个通道。如果下载的是roughness贴图,注意要进行一次反向。 可以保存为.psd或者.tif以保存通道信息。注意,如果需要保存为.png,则需要把alpha通道作为蒙板而不是独立通道。
Detial Map
The detail map contains two grayscale Textures and one two-component Texture, which is the Material's normal map. Color channel Map Red Desaturated albedo Green Normal Y Blue Smoothness Alpha Normal X 这里暂时没用到,之后再补充。
Lit Tessellation Shader
Normal贴图可以制造表面的凹凸效果,但并不会真正影响模型的顶点位置。通过Tessellation,可以使模型产生真正的变形,使效果更加真实,但同时模型的面数也会大大增加,建议根据需求选择。 (如果不希望细分面数增加,也可以在lit shader中把displacement mode设置为pixel displacement以获得时差效果。) 首先需要选择Lit Tessellation Shader,并将Displacement Mode设置为Tesellation displacement。 为材质添加height map,建议将Parametrization设置为Amplitude,更方便调节。 根据需求调整Tessellation Factor。
layered材质
建议先阅读: 官方文档 创建新材质,选择LayeredLit Shader。 如果子材质有细分这里也选择layered lit tessellation,并正确设置Displacement Mode。 在Surface Inputs中设置层数,将Vertex Color Mode设置为Add,最后将对应材质填入Layering List中即可。 Layered shader最多混合四个材质,包括Main材质和RGB通道分别对应的三个材质。既可以根据layer mask混合,也可以根据顶点色进行混合。如果使用顶点色,平面模型也需要拥有足够多的顶点以实现自然的过渡效果。
顶点色绘制
在Unity中绘制
首先要在Windows-Package Manager里加载PolyBrush工具。然后从Tools中打开PolyBrush Window。 使用第三栏的顶点色绘制工具,选择需要的通道绘制即可。
在Maya中绘制
首先需要在mesh display-toggle display color attribute开启颜色显示。 mesh display标签页下有两个顶点色绘制工具,可以使用apply对选中顶点涂色,或使用paint笔刷工具上色。 笔刷有多种混合模式,在replace模式下完成基础绘制后,可以改为smooth来获得平滑的过渡。 绘制之后,记得在Edit - Delete by Type - History删除物件历史再导出。