美术 2.8 资源规范基础说明
资源规范基础说明
资产命名和储存规范
好的资产命名能让项目结构部署更明朗,不会发生找不到资产的情况,同时也能方便进行批处理相关的操作。如:
1.命名都用英文,防止中文字符编码导致的bug
2.把模型放入svn等管理平台中相应的资产文件夹内,再导入。方便朔源,并且尽量保持文件路径和引擎路径一致。
3.具体的命名因项目而异,比如FreeKnight\Assets\Textures\Character\Goblin,里面放的哥布林的贴图,可以是Tex_Goblin_Weapon_Normal,也可以在这个基础再进行缩写。
Tex代表这个文件是贴图,比如MF-Material Function代表它是材质函数,MI-Material Instance代表它是实例化材质。
Goblin指这个角色是什么,Weapon是更具体的特征,这里代表是哥布林的武器。
Normal代表代表这个文件是法线,也可以是Albeodo,Roughness,并进行缩写。
以Texture为例:
Texture | Characters | (Name) | 存放对应名称角色用的贴图 | |
Effects | (Type) | (Name) | 存放特效用的贴图 | |
Environments | (Name) | 存放环境用的贴图,Cubemap之类的东西 | ||
Objects | (Type) | (Name) | 存放物件用的贴图 | |
Others | (Name) | 存放暂时无法分类的其他贴图 | ||
UI | (Type) | (Name) | 存放UI用的贴图 | |
RenderTarget | 存放渲染目标图 |
材质资产制作环境规范
为什么要标准环境?
1.PBR流程的贴图上不要储存光影信息,这时看到的效果并不是项目的效果。
2.光与环境和后处理对材质的影响很大,即使是同一个的材质但是在不同的环境下看到的效果也不统一。
因此我们需要统一制作环境,减少环境测试的差别。包括光照差别、曝光差别、Shader差别、后期差别,包括Tonemapping、贴图差别,如压缩、fliter、mip等。
Substance Painter:显示设置中使用和UE同样的HDRI,旋转270°(Environment Rotation 270);
EV -0.45,打开Temporal AA;Shader设置中打开ACES Tonemapping(需要下载);
UE里关闭Directional Light仅使用IBL,背景Environment Color 0.04;关闭Bloom,Vignette,AO,SSR;对比效果两者有少许区别,但已非常接近。
ACES Tonemapping链接:http://share.substance3d.com/libraries/4450
制作标准环境
1.三个不同光比的主要制作光照环境
通用要求:
①.亮度适中,曝光稳定。(辅助辨识固有色)
中低光比:
①.光影必须无色趋向。(规范固有色)
②.没有过强的明暗对比。(辅助辨识pbr材质)
高光比:
①.某几个方向带有较强的光源。(辅助辨识光滑度和法线)
②.镜面反射变化丰富。(辅助辨识金属度)
还可以加入的内容:
2.几个辅助检验光照环境
比如:阴天、晴天、室外、室内、夏季、冬季等辅助光照情景。
3.现实校色
如果有需要的话可以使用现实拍摄的色卡对引擎里的标准环境进行校色。
4.或者更多——由美术提需求
材质和模型预览场景,也可以预设好不同光比的灯光预览参数。
这样可以不用进到标准场景,也可以粗略对一下大概效果。
材质相关规范
材质参数
1.材质参数尽量定死(除了贴图),方便合批和效果统一,不然就会在批处理上产生麻烦。具体如把所有同母材质的参数烘到一张贴图里,然后去读。
2.如果材质需要调试,可以连一个测试材质函数到母材质,但是最后得把Switch开关关掉,美术测试完效果后,再把参数合入写死参数的shader。版本构建前,再检查一下,如果由勾选则给美术报错。
混合模式
材质尽量使用不透明。其次Mask材质,最后再考虑半透明。
因为半透明材质默认无投影,还会产生乱序问题,需要付出其他计算去解决,性能消耗也比较高。mask材质在手机里消耗和半透明其实差不多,但是不会有乱序等问题。
而如果这个材质只有部分透明,如果没有特殊情况的话务必把他们的材质分开。
Mask,alphaTest,手机上消耗都是最高的,半透明的消耗则是又overdraw产生的(同一个像素多次绘制)
透明材质
自动手动排序(手动改画的顺序)比如地面污渍 UI 这些永远画最后或者最先的物体
OIT(不接近不透明的半透明用)
写深度在画半透明前(接近不透明的半透明用) 但是消耗大
植被材质
树叶和草,最好不要烘焙光照。因为会坑坑洼洼还占内存,美术效果也不好。
树制作完球形法线后,自己写一个特殊的光照模型,再到外部烘AO图进来用(仅手游)
草把法线掰向上后,也是同理,自己写一个特殊的光照模型,再到外部烘AO图进来用(仅手游)
贴图通道的合并与大小统一
因为引擎采图有限,亦或是包体大小问题,因此贴图大小尽可能的压缩。
1.动态物体
采样:3张PBR贴图+Shadowmap
贴图大小:Albedo2048/1024, normal+Smoothness1024,AO+metallic+其他512
2.静态物体
采样:2张PBR贴图+烘焙好的Shadowmap+Shadowmap
贴图大小:Albedo2048,normal+Smoothness2048,AO+metallic+其他1024,烘焙的Shadowmap2048
3.素材内容与格式标准
Albedo(带透明度)占RGB(A),Normal占RG + smoothness占B,AO占R+metallic占B,G备用,格式使用TGA。
不过项目不同,这种规范也会不同,要注意根据项目本身来进行调整。
逻辑模块化
把材质上层的逻辑模块化,我们最后的材质使这些模块的叠加总和,而不是胡乱连一大片材质节点。非常方便后期维护和新人学习,同时不用每次出一个新效果就得重新连一遍。
根据不同的层分类,可以把材质层分为:
1.DataProvider层:负责提供最基础的Shading数据
2.MaterialLayerBlender层:负责混合不同层的数据
3.EffectMaterialLater层:自己本身就是一个效果,负责直接和其他层混合,比如冰,雪,泥土,污渍
最后开放给美术使用这些材质的Materialinstance的时候各个材质层关系就十分清楚了。
模型规范
布线合理性
1.应顺应模型拓扑结构,网格尽量大小均匀,不然模型绑定时候权重不好刷,而且形变会很奇怪。[尽量参照大佬的拓扑结构]
2.不要出现重合的点(最常见的麻烦是会导致在ue4里刷不了布料),而且占用没必要的资源
3.四个点需要一个平面内,不然转三角面的时候,可能会出现自己不想要的结果。
4.避免三边面和多边面的产生,还是会影响绑定和形变。
5.控制面数,会占用没必要的资源。
UV展开合理性
以提高贴图利用率,减少接缝和拉伸为目的。
1.提高空间利用率
2.尽量把大块的面缝在一起,不要让UV看起来太过零散,因为UV的接缝处在贴图后也会有断开的效果,要尽量避免接缝,或者把缝藏在模型背面等不显眼的地方。
3.尽量减少2D图像的扭曲,让其符合3D模型的规律,扭曲的UV会让贴图也产生扭曲的效果。有的扭曲不可避免,一定范围内的扭曲也可以忽略。
4.大部分将uv拉直,可以进一步的提高空间利用率,但是如果会导致图像过分扭曲,可以不拉直。
5.合理地放置UV,利用重合的UV(完全先沟通的或者镜像的部位),可以提高贴图的利用效率。例如我们在UV展开一个人物模型时,我们可以把左右手脚UV重合放在一个地方,让更重要的位置(例如脸)拥有更多贴图像素面积。
6.针对光照UV,不能堆叠,收光复杂度高的地方,摄像机经常看到的地方,尽量给多一些面积比。如果分配的分辨率预算很小,硬边很多时候都得尽量切开,以防渗透色。
光滑组
这里着重介绍在模型中体现的效果,大于45°效果,光滑组单个与2个光滑组下效果对比。
硬边点有所接面数的法线,软边只有一个法线,所以平时才材质里做顶点动画的时候,得注意,不然会断边。
对于一些二次元模型有修改了法线的,导入模型的时候记得点选导入法线,而不是自动生成。而有需要圆滑的法线,可以直接用一个圆滑的物体来传递。做法线描边的时候,可以用平滑过的模型吧法线烘焙在原本顶点色上去挤出描边(或者放切法线也可以,但是如果是pbr项目,改了切线法线贴图的效果会不对)
模型动画导出
根据项目需求写插件定死数据就行。
导出什么视情况而定。
一般步骤是:首先Presets-CurrentPreset 还原默认
之后Geometry 勾选SmoothGroup 和 Tangents and Binormals 选项
然后直接导出即可。
参考链接