DCC中模型导出注意事项
模型
- [[DCC]] 软件中,单位统一使用米(m)。
- Unity 内部使用 .fbx 文件格式作为其导入链。最佳做法尽可能使用 .fbx 文件格式。
- 避免模型上出现长条的三角面。
- 针对建筑物和园林景观相关模型,要尽量使面片平均分布,这样可以避免之后在添加光照时出现奇怪的光照效果。
- 导出的网格必须是多边形拓扑网格,不能是贝塞尔曲线、样条曲线、NURBS、NURMS、细分曲面等。
- 烘培Deformers,在导出之前,确保变形体被烘培到网格模型上,如骨骼形变烘培到蒙皮权重上
- 如果你需要导入blend shape normals,必须要指定光滑组 smooth groups。
- DCC导出面板设置, 不建议携带场景信息导出,如不建议导出摄像机、灯光、材质等信息,因为这些的信息与Unity内默认都不同。
纹理贴图
- 贴图使用2的幂次(POT),Unity在处理2的次方尺寸的纹理时更高效,不需要再做额外的缩放操作。
FBX Importer
Model 模型
- 不必要不要开启网格读写。
- 如果不需要,禁用法线或切线。
Scale Factor
- 尽量不要在场景中改变物体的缩放比例。从理论上来讲,导入模型时将其缩小为原来的1/100与在场景中将物体缩小为原来的1/100,看起来是一样的。但实际上,在场景中缩放物体会带来很多麻烦,如子物体也会一起被缩小,引擎无法判断模型的渲染精度,从而影响运行速度。
Rig 骨骼绑定
Animation Type
- Generic:适合没有骨骼或者不是人形的角色。
- Humanoid:适合人形骨骼模型,Unity对人形骨骼有优化,功能更多,使用也更方便。
T-Pose 问题
- 如果模型导出时不处于 T-Pose,需要在骨骼映射下方的 Pose 菜单中选取 Enforce T-pose 强制设置为T-pose。但最好还是让美术把模型修改为 T-Pose 状态。
- 如果动画不处于T-Pose,动画映射也需要T-pose,可以在所有帧的前面创建一个 Tpose。(需要验证)
Animation 动画
Root Transform
- Root Transform Rotation,根的旋转。
- Root Transform Position (Y),根在y轴上的位移。
- Root Transform Position (XZ),根在水平面(xz平面)上的位移。
Bake Into Pose
- 对确定需要改变的位置或旋转,取消勾选Bake Into Pose选项。
- 对不改变的值需要勾选 Bake Into Pose。
- 以跑步动作为例,逻辑上跑步直接影响水平方向的位置,这是显然的。但对动画设计师来说,人物跑步时高低重心是有变化的,上下颠簸才自然。但这种上下的颠簸只是视觉上的,不能真的去影响物体的位置,换句话说,跑步时逻辑上只做水平运动,不会上下运动。勾选了该选项,代表这个运动只是骨骼动画运动,不属于根节点;而不勾选该选项,则代表它是真正的根节点的运动。只有根节点的运动才会变成物体实际的运动。
Mask
- 绿色代表动画可以让这一肢体运动。
- 红色则代表动画不会让这一肢体运动。
如果想要对状态机某一层中的动画统一应用遮罩,见:[[Animator#设置 Layers设置]]
Event 动画帧事件
- 由于动画帧事件的标记必须在动画的时间轴上,因此会和动画数据本身耦合在一起。纯粹从程序逻辑的角度看,多种不同系统的耦合并不是好事,但为了增强游戏表现力,这么做也有充分的理由。
- 动画会查找当前对应物体的所有脚本,只要有名称和类型符合的Function,都会被调用。如果一个函数都没找到,就会产生一条错误信息。
- 事件函数仅可以带一个参数,可以是 float, int, string, Object 其中一种类型,参数的值可以在编辑动画帧事件时指定。
Materials 材质
原始模型文件对性能的影响点
- 最小化面数,不要使用微三角形,分布尽量均匀
- 合理的网络拓扑和平滑组
- 尽量少的使用材质个数
- 尽可能少的使用蒙皮网格
- 尽可能少的骨骼数量
- FK与IK节点没分离,IK节点没删除
模型优化
- 尽可能的将网格合并到一起
- 尽可能使用共享材质
- 不要使用Mesh Collider
- 使用合理的 [[LOD]] 级别 - 内存换CPU和GPU
- Skin Weights受骨骼影响个数过多
- 合理压缩网格
- 不需要rigs和BlendShapes尽量关闭
- 开启Project Settings—>Player—>Optimization下的Vertex Compression与Optimize Mesh Data选项
- 模型的Bounds不应过大,会影响相机裁剪。