多星点(4个及4个以上边的交点)
如果是在中模阶段,减少使用多星点,因为会在细分是时出现凸点问题,如果要使用多星点,需要通过布线技巧把它移动至平面处,不要让他出现在倒角边缘。
更改前,更改后
更改前,更改后
在模型上挖洞,且要保证都是四边面的情况下,是必然会出现五星点,五星点不可避免,但可以优化。也有叭五星点转换为假四边的方法(模型时把这种布线叫做假四边)
对于布线的合理性,大部分情况下都是指的低模,在次时代流程中,高模只需要做出效果,布线可以随意的来,因为高模的用途只是为了一张法线贴图。
由于Maya和Max中对于三角形的预划分有时是不同的,所以如果四边形的四个点不在一个平面里时,请连接对角线,否则会出现以下情况,这个同样会影响法线烘焙。
UV的合理主要是为了提高精度,也就是在资源有限的情况下,达到更好的效果。
UV基础规范:如果使用UDIM(多象限UV),从【0,1】框开始依次摆放,正常情况下全部UV放于【0,1】框内,虽然UV是平铺的,但我们常用的软件,例如SP,绘制过程中,只能再【0,1】框中绘制。
Maya,SP
打直UV能使我们更好的利用空间,提高空间利用率,这也是为什么合理利用UV可以提高精度,能打直的打直,能横竖打直的就不要斜打直,斜打直会成为锯齿的根源。
一般在为了提高利用率的情况下UV是允许有均匀拉伸的,特别是如果后期不会出现纹理制作的情况下,均匀拉伸不会存在任何问题,在精度够的情况下,拉伸也是没有问题的,只是你制作出来的贴图最后也会是拉伸的。
我们一般是使用棋盘格来检查UV的拉伸是否合格,同样带数字的棋盘格也可以拿来检查UV的方向是否和模型方向一致,虽然正放倒放不影响贴图制作,但是行业默认能和模型一致就和模型一致展开UV。
在烘焙时,如果有公用的UV需要挪出【0,1】框,如果不挪出去烘焙时会识别不了你需要烘哪一边作为结果,导致得到的法线贴图出现错误。
硬边的地方UV必须断开,UV边界才能按正确的法线去烘焙,否则烘焙出来的法线贴在模型上必然会出现接缝(不可修复),关于硬边和光滑组在下一节有介绍。
光滑组是中通过对面的定义来定义软硬边,软边就是如果点处于不同平面时,点会获得所在平面的平均法线,硬边这是拥有多个方向的法线(如图)
3Dmax中光滑组:
当平面1和平面2在一个光滑组时,此时相交边为软边
当平面2单独在另一个光滑组中时(平面1为光滑组1,平面2为光滑组2),此时相交边为硬边
值得注意的是,在三维软件中(maya,max)导出模型法线会处于锁定状态,而导入模型后解锁法线,由于maya和max定义软硬边的方式不同(maya直接对边定义软硬边,max通过定义面的光滑组定义软硬边),会导致光滑组/软硬边丢失,可以通过插件实现在保持软硬边的情况下解锁法线,也就是先记录软硬边信息再去解锁,解锁后重新赋予即可。
由于定义了软硬边,后期的烘焙过程中,烘焙时拾取的是你最后使用的模型的点的法线,如果你在烘焙结束后又去修改了软硬边信息,正常情况下软硬边信息不对等的地方法线会出现错误。
我们制作完模型导出时请检查一下基本信息:
1.该合并的点全部合完了
2.没有非法面,N边面等不规范面的存在
3.有UV,用于贴图
4.不出现镂空面穿帮
5.场景大小设置正确
6.拥有规范命名,方便资产整理(模型一般前缀使用“SM_”,及static mesh)
7.Maya模型请检查历史清除干净没有,Max模型请塌陷编辑器
8.模型的坐标轴归零(习惯问题,否则进入引擎后你可能法线坐标轴不在你模型的周围)
9.进入引擎前最好三角面化
SP导入模型时出错(可能是没有UV,UV没在(0,1)框内等等,SP的log里面一般会把报错原因直接写出来)。
Maya里制作的模型导入Max(或者反向导入),赋予软硬边缺没有效果变化(导出模型时发现会被锁定,所以请先解锁法线,再重新定义软硬边)。
Maya里制作的模型导入Max(或者反向导入),发现模型大小不一致(检查maya和max的场景单位设置是否一致)。
目录结点 | 说明 | 图例 |
项目最上层文件夹 | 项目最上层目录 里面包含项目所用到的所有资源、代码、插件等等 | |
主干 | 项目主要目录,一般工作都在此处。 | |
分支 | 简单理解为项目的备份,一般美术不需要关注此处,直接去主干工作即可。 | |
美术资源文件夹 | 美术用到的所有资源、插件等 | |
资源文件夹内部 | 可以简单分为几大块:模型、贴图、特效、材质球等。(文件夹内的文件必须用英文命名)具体需要根据项目来走。 | |
美术工程文件夹 | 里面也是有可打开的项目,主要给美术测场景、特效、镜头表现等等,不涉及复杂的逻辑功能,满足美术表现需求即可 | |
引擎资源文件夹 | 项目主工程目录(实际运行,打包),程序、策划日常的工作区域 | |
表格文件夹 | 项目中用到的各种表格,策划日常的工作区域 | |
声音工程文件夹 | 如果项目接入WWISE、FMOD等第三方音频引擎,就需要另创建一个目录 |
后续具体文件名都需要用英文命名,(首字母大写)
物体 | 命名 | 说明 | 图例 |
角色非战斗预制体 | xxProjectName_CharacterNamePre_Normal | Pre代表Prefab(预制体),在某些游戏中角色分为战斗与非战斗,预制体需要分开。(视项目而定,也可以只有一个预制体) | |
角色战斗预制体 | xxProjectName_CharacterNamePre_Battle |
xxProjectName视项目而定,如果公司只有一个项目,或者很少项目时不需添加,添加项目名还是为了外包收包检查,或者自身是外包人员定制的,防止各个项目的混乱。后续命名就不添加xxProjectName了.
物体 | 命名 | 说明 | 图例 |
角色模型 | CharacterNameMod | Mod代表Model(模型) | |
角色模型手部 | CharacterNameMod_Hand | 代表角色模型手部,如果是根节点下手部就不需要添加Mod了直接CharacterName_Hand | |
角色模型XX部分 | CharacterNameMod_XX | 代表角色模型XX部,依次类推 |
另外'_'下划线多不要怕麻烦,主要是为了后期好管理,维护。
物体 | 命名 | 说明 | 图例 |
角色身体法线贴图 | CharacterNameT_Body_Normal | T代表Texture(贴图) | |
角色xx部分yy贴图 | CharacterNameT_xx_yy | 角色xx部分yy贴图,以此类推 | |
带a通道的角色身体贴图 | CharacterNameT_Body_BaseColor_Aph | Aph代表apha值 | |
带a通道的角色xx部位yy贴图 | CharacterNameT_xx_yy_Aph | 依次类推 |
物体 | 命名 | 说明 | 图例 |
角色身体材质球 | CharacterNameMat_Body_01 | Mat代表Material(材质球) | |
角色xx材质球 | CharacterNameMat_xx | 角色xx材质球,以此类推 |
角色动画可以先简单分为两种
一种是通用角色动画,例如大街上行走的NPC,他们就是用的通用的角色动画。
另一种是主角专属动画,例如原神里每个角色都有各自不同的动画表现,需要单独命名。
物体 | 命名 | 说明 | 图例 |
通用角色女待机动画01 | CharacterComAnim_Female_Idle_01 | Com代表Common(通用), Anim代表Animation(动画),不要问为什么是4个字母。。个人感觉相较于Ani更好识别 | |
通用角色男待机动画02 | CharacterComAnim_Male_Idle_02 | 为了展现角色动画的多样性,一般都会给角色做多个动画,所以有02、03等一说 | |
通用角色女死亡动画01 | CharacterComAnim_Male_Dead_01 | —— | |
xx角色待机动画01 | CharacterNameAnim_Idle | Mat代表Material(材质球) | |
xx角色待机动画02 | CharacterNameAnim_Idle | 角色xx材质球,以此类推 | |
xx角色技能1连招动画01 | CharacterNameAnim_Combo01_01 或者 CharacterNameAnim_Skill01_01 | Combo代表连击、Skill代表技能,结合项目命名。 | |
xx角色技能1连招动画02 | CharacterNameAnim_Combo01_02 | —— | |
xx角色技能1连招动画03 | CharacterNameAnim_Combo01_03 | —— | |
xx角色死亡动画01 | CharacterNamAnime_Dead_01 | —— |
特写镜头这里就简单说下,特写镜头譬如原神5星角色开大招时都会有个不受玩家控制,固定死的镜头,这就是一个角色特写镜头。
物体 | 命名 | 说明 |
角色特写01 | CharacterNameAnim_ShowTime_01 | ShowTime(展示时间) |
角色特写02 | CharacterNameAnim_ShowTime_02 | 特写02,以此类推 |
有了角色命名规范,就很好推出场景,特效等的命名格式了,后续如果有需要在写。
规范项 | 说明 | 图例 |
坐标轴归0 | 如果模型是放在地面上那么以模型底部为坐标原点,如果模型以靠墙侧则中心点为坐标轴原点。 | |
单位比例统一 | 默认Unity系统单位1等于1米,需要将DCC工具单位对应到Unity中 | |
方向 | Unity默认左手坐标系,Max则是右手坐标系。 Max中先将坐标系设置为Local,然后点击AffectPivotOnly旋转茶壶坐标轴,将其调整为Y轴朝上,Z轴朝壶嘴方向,即可。 | |
清除新项目中的预制物体 | 如果是新建的项目,在建模前先将预制的物体清除(如灯光、cube、摄像机)。每种DCC不尽相同。 | |
多星点问题 | 减少多星点的出现 | |
合理的布线 | 出现不合理的三角面,或者多余的线,需要删除。 且低模阶段减少三角面及四边形以上多边形的出现,尽量全部是四边形。 | |
模型优化 | 以Blender为例,编辑模式下全选,然后右键选择合并顶点->按距离合并,防止出现顶点重叠的情况 | |
Mesh命名(不要出现中文命名,每个物体都要命名) | 物体命名是物体唯一的标识,物体与物体下模型需要命名两次!!命名规则 如:“物件名+部件名+类别名+编号” | |
顶点与面数量 | 移动设备每个网格模型控制在300~2500个三角面会达到比较好的效果。 |
规范项 | 说明 | 图例 |
打直UV | 打直UV,提高利用率,减少不均匀的拉伸,烘焙时,共用的UV移出01框(如重叠的UV),断开硬边避免接缝,接缝处的UV两边对齐,避免Tiling时出现错误 | |
UV保证在【0,1】范围内 | 超过【0,1】的话,后续在SP中绘图会绘不上 | |
断开硬边 | 如果硬边不断开的话,硬边处过渡时无法均匀过渡,导致烘焙时出错。 | |
保持连续性,允许均匀的拉伸 | 如果模型的贴图为四方连续的,UV要保持水平平齐,允许均匀的拉伸。 | |
UV焊接处尽量选择视线看不到的地方 | 选择看不到的地方,防止穿帮,比如人物的腋窝,手臂大腿内侧等。 |
规范项 | 说明 | 图例 |
规范项 | 说明 | 图例 |
再次检查是否有没用到或者重叠的顶点 | 防止出错 | |
再次检查是否坐标归零 | 防止出错 | |
再次检查是否单位统一 | 防止出错 | |
合并顶点 | 合并顶点,清除场景,删除没有用的一切物件 | |
UV通道 | 检查是否道出了多余的UV。并且检查材质UV是否在第一通道。 | |
导出设置 | 选择对应的导出项,场景、物件等一般只导出网格,带有动作的模型则把骨骼也勾选。(图例是Blender,其余DCC大体类似) | |
导出格式 | 一般来说导出的是FBX,具体看需求 | |
贴图导出 | 根据需要看是否导出贴图,PBR的话一般只导出白模,然后再SP里面进行贴图绘制。 |
规范项 | 说明 | 图例 |
先烘焙 | 导入新的模型后先烘焙一遍 | |
贴图导出 | 选择对应的贴图,或者自定义导出贴图 | |
导入Unity |
Metallic/Roughness 流程
规范项 | 说明 | 图例 |
Albedo贴图 | 勾选sRGB | |
MetallicSmoothness贴图 | 不勾选sRGB | |
Normal贴图 | TextureType改为NormalMap | |
效果对比 | SP Unity |
导出完模型和各种贴图后就可以导入引擎里面看效果了。
如果是外包发来的模型就需要另一步验收流程。
规范项 | 说明 | 图例 |
测试环境 | 先将模型,角色丢到一个测试环境,测试环境中包括几张环境贴图,模拟不同场景下的光照。 | |
原点位置 | 首先检查模型原点是否在正确位置。 | |
命名规范 | 然后检查命名是否付个规范。 | |
材质 | 检查模型上是否自带材质。 | |
贴图检查 | 检查贴图是否缺少、贴图命名是否规范,有自发光和Alpha通道的是否正常。 | |
动画 | 动画是否正常,命名是否规范。 | |
顶点、面数 | 检查顶点、面数是否超标。 | |
拉伸 | 对模型进行拉伸缩放,贴图位移、拉伸看是否正常。 | |
是否藏东西 | 切换视口模式,看角色、物体内部是否正常,是否有冗余的模型。 |
好多地方不完善,等后面更加熟悉DCC、以及整体流程时再来补充。。