SkeletalMesh之MorphTargets技术
利用变形目标(Morph Targets) 可以将网格体从基础形状变为目标形状。 通常它们将作为动画系统的一部分与SkeletalMesh一同使用。
Morph Target也称为BlendShape(简称BS),是一种动画的制作方式,相较于骨骼动画,BS更适用于模型里的局部动画。
原理也很简单,简单理解就是两个网格体顶点的插值运算,也称为Morph动画,常见的应用就包括脸部表情、捏脸等
目前的模型动画的基本原理都是让模型中各顶点的位置随时间变化,按种类去分主要有Morph动画、关节动画和骨骼蒙皮动画
从数据的角度来说,三者基本都是采用关键帧数据去驱动变化,他们的区别也就在关键帧的数据是不一样的。
导入含有MorphTargets数据的SkeletalMesh
预览SkeletalMesh的MorphTargets效果
在AnimationSequence中添加MorphTarges数值的控制
在AnimationSequence中添加材质颜色控制
创建M_Morph_Material_Example材质:
从M_Morph_Material_Example上创建M_Morph_Material_Example_Inst材质实例:
在AnimationSequence编辑器中添加名为MorphColor的Curve:
编辑MorphColor的Curve曲线:
注:点击菜单“Window” -- “Anim Curves”,打开Anim Curves面板,将MorphColor设置为Material(勾上绿勾)
最后效果:
注:对于fbx文件格式,仅仅支持在base mesh上自定义顶点法线(custom vertex normals),而所有的morph targets使用是计算法线(calculate normals,generated normal)。
如果base mesh使用自定义顶点法线,可能在变形时有显示上的瑕疵(artifacts)。
开启GPU MorphTargets
r.MorphTarget.Mode 1 // 使用GPU计算MorphTarget
r.MorphTarget.Mode 0 // 使用CPU计算MorphTarget
在SkeletalMesh编辑器中也可以开启和关闭CPU Skinning来预览结果
参考
扩展:静态网格体变形目标