前情:将动捕动画数据给到了角色,取了几个案例测试了MD的布料解算效果。
本篇中大多数是自己的实验过程,请跳着读,前面有些写的流程,后面都会改掉重走换其他的。不具备指导性。
一、从Maya导出obj格式的角色模型
【1】从Maya导出模型
- T-Pose。确保人物基础模型为T-Pose(Maya HumanIK中已经做好了),这样方便在MD中给角色制作衣服,A-Pose的话胳肢窝会有很大的问题。
- OBJ。导出人物模型时选择OBJ格式(因为我们只需要在MD中解算布料的动画,只需取人物模型所占的空间大小进行碰撞计算,所以人物模型本身不需要那么精致化,也不需要材质)
记得导出前要删除历史,否则模型会有一堆问题。(一般是先清空历史,即取消绑定蒙皮)
【2】将模型导入进MD中
导入时确保跟Maya的设置一样。Maya和MD默认都是Y轴朝上,确保都是cm,30fps。
不要给Maya弄Z轴朝上,要不然往MD导ABC的时候会有很多问题,而且导ABC不能设置旋转方向。
cm,Y轴朝上,自动将脚部对齐地面。
二、用MD给角色制作衣服
跟PS、CAD和Geogebra的操作一样。
【1】整体网格
- 增加背景图片,H(多边形工具) 开始照着描多边形
- 然后C 编辑圆弧,把线条搞成圆弧。(V编辑曲线点是加点再变形,C则是不加点变形)
【2】选中中轴线 Unfold 展开网格
XY镜像对称。
【3】处理衣领和裙底的曲线弧度
- 衣领,C
- 裙底,生成圆顺(圆滑)曲线(选中中点向上平移,至两侧)
【4】镜像衣服,前后
1.镜像
2.Flip 后背衣服
3.将后背衣服移动至角色后面(三视图调节)
【5】Sowing 缝合衣服
镜像对称。
然后它就会形成这样的连接线,跟五线谱一样。
【6】物理模拟
1.在布料的属性栏,可以设置不同材料的物理模拟方式。
2.也可以选中衣服,调整粒子间距,粒子间距越小,则排线越多。布料效果更好。
3.如果出现穿模等问题的话,可以适当调节布料在三维空间的位置,比如布料的前后、上下等方位跟角色的距离,然后再模拟,直到能模拟出完美的效果为止。
4.恢复布料的初始位置(就是要模拟的那个位置)。每次调整完Ctrl+F一下,就相当于确定位置一样,如果布料模拟失败效果很糟糕,再Ctrl+F让布料返回初始位置即可,非常方便。
三、解算布料动画
【1】让角色从T-Pose变换到播放动画的Pose。
我们导T Pose是为了做衣服,让衣服贴合人身。之后我们导动画最初始的关键帧姿势。
一般是Maya第一帧导出(第0帧是HumanIK的T-Pose),OBJ格式。
导入MD的时候选择Morph Target,会产生一个过渡的动画。
【2】两种缓存方式:
两种方式:
前面提到过,尽量保证一致标准:Y轴朝上,cm,30fps。
1.ABC:
由于往MD导ABC格式动画没有角色朝向等设置,所以如果要导这种格式的话必须确保Maya和MD的设置一致。(MD调位置非常难受的,连世界坐标参数都没有)
尽管这里可以设置不同的坐标,但也没什么用。
但尽量不要动角色的位置,否则做动画会非常麻烦。(不要用这个软件调调,再用那个软件调调,会出乱子的)
2.几何缓存:
- MCC和MCX 格式的几何缓存,确保模型顶点数量一致(跟做Morph Target一样)
ABC格式的缓存,不可以设置朝向Z轴朝上。 但是几何缓存可以。
- MC对应Maya的MCC几何缓存格式
- MCX对应Maya的MCX几何缓存格式
可以设置。
但是会出现点问题。说顶点数不一致。我对比了下,是一致的。
但Metahuman的角色头和身体是分开的。所以如果导出有错误,脑袋和身体要Combine成一个模型。
但合并对做动画不太方便,面部表情、身体动作的。所以还是用ABC格式的缓存比较好。
【3】导入ABC缓存动画
确保帧数、朝向和Maya一样。
然后模拟一下,让布料匹配当前状态的角色。
【4】解算布料动画
Simulation切换到Animation。注意这个拖动。双向箭头不管用。
点击录制即可,录制就是解算。
【5】ABC导出布料解算动画
OGAWA(Maya 2014以后的版本)
导厚的,看谁导薄的。哈哈。
厚的效果更好。如下,二者在引擎中的效果对比。
四、导入引擎
【1】导入布料
X轴需要90度翻转。因为MD和Maya是Y轴朝上,游戏引擎是Z轴朝上。
把Maya 的Rotate.X=-90 中和掉。
重要的事情说三遍:
- 导ABC不要有中文路径,或中文名称的文件夹。
- 导ABC不要有中文路径,或中文名称的文件夹。
- 导ABC不要有中文路径,或中文名称的文件夹。
【2】导入角色模型
虚幻中的Metahuman角色是模块化的,是通过蓝图的方式组装起来的。
这里Torso是卫衣,Legs是裤子,那么我们只需要把这两融合一下变成BodyMesh,外面再加上我们解算的布料动画就好了。
Bridge资源路径如果移动了位置(C盘爆满的情况(默认存在于Document文档里)),只需重新指定位置,然后重启Bridge即可。
但尽量保持C盘不动,否则fx材质贴图引用路径会出问题,导致角色贴图材质丢失。
整理骨骼。为确保骨骼名称一致,我们需要在Maya中去掉骨骼后缀,也可以Transfer蒙皮权重。
我们只需要导出角色的身子。
骨骼重命名。
或者是用一些重命名插件。
身体相关的贴图。
导进来时,选择base_skel,跟ALS重定向动画一样。
红色隐藏,把Mesh换成从Maya导过来的躯干。
【3】导入角色动画,三种测试
Human IK Bake烘焙动画。
【测试法1】让角色初始关键帧的T-Pose变成A-Pose
确保初始帧姿态跟UE4中Metahuman的A-Pose一样。要不然会变形。对以下两个骨骼S打关键帧恢复一下,恢复初始的A-Pose。
- UpperArm,Rotation.Y,由0变成-55
- LowerArm,Rotation.Z,由0变成36
选中骨骼导出动画即可。
但是导入进来是这样子,明显是骨骼有问题。
【测试法2】Maya HumanIK 动画重定向 角色姿势必须为T-Pose
直接一开始的时候HumanIk就用原来的A-Pose,保持不动,变换动捕骨骼的Pose。
但如果把Mixamo的角色骨骼弄成A-Pose的话,HumanIK是不管用的。HumanIK必须是T-Pose(左右上臂要跟X轴平行)
【测试法3】不用Maya的HumanIK了,直接在UE中Retarget Animation。
用Mixamo角色,把动捕动画给它,然后UE中动画重定向,不用从Maya导出了。
跟Maya一样 旋转-55,36.
但是位置还有些问题,可能是HumanIK和Retarget Manager的解算规则不一样吧。
Sequencer整合整合。Geometry Cache。 对比下效果。 衣服还有点小问题。
基本流程就是这样,好的效果得需要自己多次测试。
【4】其他注意事项
同时需要注意,从Bridge导至Maya的Metahuman和导至UE4的Metahuman的头型不太一样。所以光取身体的话,会出现一定的缝隙。
那是因为Bridge分别导至Maya和UE4的角色二者基础Pose都不一样!所以头型不一样。
而且头的骨骼跟身体的还不一样,因为要做面部捕捉嘛。
肯定是不能从Maya导资产导UE当中的,材质贴图啥的都不会自动创建,会有一堆问题。
所以要用角色还是尽量统一。因为要用到身体,所以必须得从Maya重新导一次角色了,用导至UE角色的材质球即可。而且做布料解算做衣服还得用T-Pose。
或者说用Maya的身体,肩部那块在DCC中稍加处理缝合一下就好了,这种做法最简单。
总结:
- T-Pose
- MD做衣服
- Human IK动画重定向
- 动画-Pose
- MD Morph Target作为动画初始帧
- A-Pose
- Metahuman原生的。
【5】正确流程
哈哈,前面测试了一堆,感觉都有点问题。我觉得还是在UE中动画重定向吧,HumanIK有一堆问题。那个Maya调整-55 36的不太严谨,腿都没怎么动,之前测试ALS那套还好。
- Mannequin——T-Pose,root小写骨骼名称。
- Mixamo——T-Pose,Root大写骨骼名称
- Metahuman——T-Pose,root小写骨骼名称。
三套骨骼,UE官方的角色和Mixamo相互重定向动画是没有问题的,网上也有很多教程;UE官方的角色跟Metahuman的角色重定向动画也可以,ALS也测试通了。
而一般动捕的骨骼是Mixamo那套大写的,所以只需要把动捕动画扔给Mixamo就好了。然后重定向给我们的Metahuman。
【1】给Metahuman用RetargetPoseMedAvgMale_PoseAsset变成标准的跟小白人一样的A-Pose。
女性角色有自己的Pose,比如我下载的这个名字叫f_med_ovw,它自己就有相对应的变成小白人的A-Pose,具体问题具体分析,尽量不要让角色的身体形态发生太大变化。
f就是female,后面两个都是男性的,身体会变大。前面nrw的姿势跟小白人是比较匹配的。
看这个Pose的Name都叫Retarget_To_UE4_Mannequin_Pose
【2】取小白人的T-Pose
【3】让Metahuman角色和小白人的姿态都是A-Pose,重定向T-Pose动画。
【4】让Metahuman的重定向姿态从A-Pose变成T-Pose
可以看到T-Pose腿都收拢起来了,这才是正确的玩法。
【5】重定向Mixamo的动捕动画。
然后T-Pose加上头进MD走一套上面的流程就好啦。
需要注意的是从UE导出去的FBX模型一般都是三角面,所以MD中显示会有些问题,尽量用OBJ四边面比较光滑的模型。
另外感觉重定向的时候用Spine 245比Spine 234好一些。
看Retarget谁以及角色的体型情况。具体情况具体分析。(得实测,目测有时效果不好)
综合起来还是145比较好。如下134、145、234、245、345
145、245、345.
234到MD解算的时候感觉背太弯了。
这是234的。
这是245的。感觉245应该是比较正确的,而且关节各部位的位置都能跟小白人对的上。
上面T-Pose弄完之后。把原先的蓝图复制一份,删除掉所有的毛发和鞋子等物件,只留一个身体和头。
然后场景中转为StaticMesh,这样我们角色的T-Pose就有了,可以导出FBX或者是OBJ,随意。
然后用Sequencer录制角色动画,把动画(带模型)导出来。(注意不要选LOD Level of Details 或Morph Target等其他冗余的选项) 会导至导到Maya非常卡。(不用了,直接导出动画给Maya人物模型就好了)
而从UE到FBX动画到MD中会是这样子,所以还是用Maya的Geometry Cache。
因为角色的头部骨骼是用来做面捕的,把它们全都删掉,好像有800多个。然后进UE给到meta_base_skeleton。 (UE里面直接给头重指骨骼会报错)
从UE导面部动画进Maya(With Skin),结果是这样子的。面部骨骼太多了,800多个,很难不出问题。
所以还是得用很少骨骼的人头(人头比较麻烦,Deprecated)
以上都是废话。
用啥人头啊,直接UE动画导出给到maya角色就好了。