前言

本人最近给自己的Demo外包了若干角色动画,也遇到了一些坑。所以这里给大家分享一下相关经验,避免大家再次采坑,尤其是那些缺乏经验、精力的独立游戏制作者。当然本人对3DMax完全不熟悉,大部分信息都是本人与外包大哥沟通过程中产生的个人认知,如有错误还请指正,谢谢。

PS.本人因为布料碰撞问题导致重新导入6次角色,包括绘制布料、设置碰撞与编写动画蓝图。真是太痛苦了!

如果角色需要使用Ue4的布料需要额外确认的事情

  1. 使用的是否是3DMax。
  2. 场景单位问题:角色大小是否正常。
  3. 骨骼问题:根骨骼的缩放是否为1、旋转是否为0(与布料碰撞有关),骨盆骨骼也需要检查一下,防止因为fbx导出轴向问题导致骨盆骨骼旋转。换句话说就是在拿到绑定后的角色时,需要马上使用Ue4进行角色布料碰撞测试。

当然蒙皮与动画肯定是要检查的,一般靠谱的外包都不会犯这些错,所以这里我也不说了(主要是我也不太懂)。这里主要是我个人认为需要注意的问题:

第一点和第二点可以合起来说:因为3DMax的默认单位是英寸,在绑定时有可能会出现因为导入模型时的单位不正确而导致角色缩小问题。至少本人遇到了这个问题,整整郁闷了1个月。个人认为关键还是需要搞清楚max或者fbx文件的单位、max的系统单位以及输出单位。调整单位的方法有以下3个:

单位问题

设置Max场景单位

Max导出文件单位不正确的主要原因在于文件本身的单位不正确。Ue4的默认单位为厘米,而Max默认为英寸。所以我们可以通过调整单位来解决这个问题,大致步骤如下: 1. Cutomize-UnitsSetup,进度单位设置命令。 2. 选择SystemUnitSetup。 3. 将单位设置为厘米。 4. 此时打开单位为英寸的max文件就会提示Units Mismatch,选择Rescale The File Objects To System Unit Scale。 5. 之后导出Fbx注意将导出单位改成厘米。

场景缩放

对于蒙皮文件,这个操作可能会产生问题。操作步骤如下: 1. 在Utilities栏中找到RescaleWorldUnits,并打开。 2. 设置缩放因子后,点击确定。

UnrealEngine导入设置

在Ue4导入选项中有个单位缩放,你可以直接在这里设置导入缩放比例。在没有Max源文件,只有fbx文件的情况下只能选择这种方法。

注意:如果你的角色要使用布料系统,那么以上方法都会让布料的碰撞失效。经过试验,如果根骨骼的缩放不为1以及旋转不为0,就会出现碰撞失效的情况。因为这些方法本质就是缩放根骨骼。

一种简单的解决方法就是直接设置角色类骨骼模型的缩放。不过本人因为强迫症所以不推荐这种方法。具体的解决方法请参照Maya蒙皮传递这一节。这里我先说一下2个软件的骨骼系统,之后再细说解决方法。

骨骼类型

据我所知3DMax有CS(biped)与CAT骨骼系统,虽然它也有普通的骨骼,但是因为角色动画库基本都是以这些骨骼系统为基础所以基本不会使用。

我找的外包大哥用的是CS(biped)。CS有点不爽的地方就是会都出一个Biped节点。

至于CAT,结构和Ue4的HumanIK结构相似,但外包大哥说这个不太稳定,所以没有使用。

对应到Maya则是HumanIK工具,结构和Ue4的HumanIK结构相似(多出一节脚趾骨),当然我目前没有和专门外包Maya动画的公司沟通过,不太确定他们是不是使用HumanIK来做角色动画库的。如果公司打算专门给Ue4做动画,可以考虑使用Ue4的动画插件。

这些骨骼系统对于动画其实并没有影响,但如果你是一个和我一样的拿着自己的工资做Demo的傻逼个人开发者,因为资金有限无法外包所有的动画或是需要使用商场资源制作原型,亦或是想套用AdvancedLocomotionSystemV的动画系统。那么我推荐你使用Ue4的标准骨骼进行绑定,并使用重定向系统将其他骨骼系统的动画重定向到标准骨骼上。

理论上动画师还是会使用动画库对应的骨骼系统再绑定一个角色,因为动画需要根据角色模型进行调整。当然绑定的精度不用那么高了。

动画重定向

因为本人使用的是Maya,所以这里以Maya为主。首先需要制作用于重定向的标准的TPose,就是把角色摆成一个十字架,可以参考HumanIK工具的标准骨骼。其原因是因为TPose容易统一,方便对齐。重定向Pose将会直接影响重定向的质量。所以我推荐在Maya中制作,另一个原因在于Ue4的重定向工具无法根据现有骨骼动画处理IK骨骼动画。下面我将简单介绍Ue4与Maya中的重定向流程:

UE4:在Maya中制作完TPose后给骨骼K一帧动画并导出。在Ue4中导入后,在得到的AnimationSequence上右键Create-Create PoseAsset,之后就可以在RetargetManager左下的ManageRetargetBasePose界面中点击ModifyPose,指定创建的TPose。

根据重定向源与目标不同还可以分为(这里的非UE4骨骼动画以CS骨骼动画为准):

CS=》Mannequin与Mannequin=》CS:按照对应骨骼结构,在RetargetManager的SetUpRig中选择HumanIK模板并设置对应骨骼即可。如果两个绑定角色的身高相同,root骨骼可以置空。如果不同则需要在给CS骨骼再添加一根root骨骼。重定向过程中,可能会出现手臂、腿部不正确的问题,这可能是twist骨骼位移的问题,需要将部分twist骨骼需要置空。

CS=》CS:这种情况可能涉及到其他非标准骨骼,所以这里需要在重定向源骨骼Asset上右键Create-Create Rig,再按照对应骨骼结构填入。

Maya:选择Rigging模式,点击Skeleton-HumanIK运行。之后再点击CreateCharacterDefinition(创建角色定义)就可以指定对应骨骼了。

你可以手动指定,也可以套用官方模板(前提是你的骨骼没有改过名称),模板有CS、CAT与HIK。大致步骤如下:

https://www.youtube.com/watch?v=ms1wGBjykA8​www.youtube.com

如果你的骨骼改过名称了,就需要手动指定了。如果你的角色骨骼没有处于TPose状态,HumanIK界面中的大臂与手会显示为黄色,所以遇到这种情况就需要调整当前骨骼为TPose状态。

在设置完重定向源与目标角色后:

  1. 点击CreateControlRig添加控制,之后角色会被锁住,如果要再次修改,则需点击边上的锁按钮。
  2. 导入重定向源的动画。
  3. 在HumanIK的Character中选择目标角色,Source选择为重定向源角色,此时重定向源的动画数据就已经重定向目标角色上了。
  4. 如果你的目标角色为UE4标准骨骼,此时就需要将IK骨骼P(设置父子关系)到对应的控制器上。 应该是将IK骨骼和对应的骨骼建立父子约束(先选爹,再选儿子),这一步应该在设置TPose之前进行。
  5. 选中骨骼、模型与控制器,并且导出动画。(记住需要点击烘焙动画选项)

Maya蒙皮传递

大致操作如下:

  1. 复制原有蒙皮文件作为新的蒙皮文件。在删除历史、断开连接后,调整骨骼与模型大小,并且冻结缩放与旋转属性。
  2. 将原有蒙皮文件的骨骼进行批量重命名。
  3. 将原有蒙皮文件导入新的蒙皮文件中。因为之后需要将模型合并,所以需要确定UV通道是否正确(如果你像我那样扣了UE4角色的眼睛的话)
  4. 将原有模型与调整过大小的模型分别进行合并,之后切换到Rigging模型,运行skin-BakeDeformationToSkinWeights。
  5. 在大纲视图中选中对应项,按住鼠标中键拖拽到对应栏中以完成指定。指定完选项点击Apply。再等一把王者顺风局的时间,蒙皮的就传递好了。

Maya批量命名脚本

如果你的重定向源骨骼名称与目标相同,这就需要进行批量改名了。这是网上找来的脚本,对于骨骼需要按住Shift并且点击+,展开所有骨骼节点,再选中批量添加后缀。

from maya.cmds import *
sel = ls(sl=True)
numSel = len(sel)
for i in range(0,numSel,1):origName = sel[i]#print origNamerename(origName,origName+'_old')

结语

本文写的比较仓促,如有不明白的地方欢迎交流。

Maya中的重定向工作可以通过Python编写插件来实现批量重定向动画,本人将会在Demo完成后尝试编写这个插件。

maya导入abc动画_外包过程中的动画重定向以及蒙皮调整经验相关推荐

  1. android淡入淡出动画_在Android中淡入动画示例

    android淡入淡出动画 1) XML File: activity_main 1)XML文件:activity_main <?xml version="1.0" enco ...

  2. # Unity3d Mecanim动画如何应用3dmax中的动画位移

    Unity3d Mecanim动画如何应用3dmax中的动画位移 大家好!我是小周,这是我的第一篇博客,自己喜欢游戏,所以大学报了计算机专业,毕业以后也如愿以偿的进入了游戏开发者的队列,现在用Unit ...

  3. maya导入abc动画_三维文件格式知多少 | abc、glTF、fbx、obj、dae、stl、3ds...

    三维文件格式 三维软件之间互相导入导出一般会涉及到一些格式不兼容的问题,这里就给大家普及一下这些常用的三维文件格式.不同的格式有着不同的定位及用处,有开源的也有商业的.目前很多三维软件之间互导迫在眉睫 ...

  4. maya导入abc动画_(送给纠结自学3d建模的同学)自学maya,zbrush,substance一个月的感想...

    本人是大一工科新生,2019年入校,一个普通一本学校,但我还是挺爱自己的学校哈,起初我是没有想学建模板块的意识,专业也与这方面不搭边,起初因为学校实验室考核学了点c语言,后来接触c#与u3d,做了一款 ...

  5. maya导入abc动画_Unity3D 实用技巧 - 快速学会模型合理导入 Unity3D 引擎

    本文转自Unity Connect博主 北京琳云信息科技有限责任公司 学习模型合理导入 Unity3D 引擎 相信在游戏中,模型相当于游戏必要的元素,例如游戏的一个人物角色,我们可以称它为一个模型,今 ...

  6. maya导入abc文件到UE4

    由于使用的maya自动绑定QuickRigCharacter,FBX格式导入不了. 然后我就想着abc缓存是否能导入呢?可能这种想法注定是个悲剧.. 于是悲剧开始了~ 真的就像官方文档上说的一样是个实 ...

  7. figma下载_通过构建7个通用UI动画来掌握Figma中的动画

    figma下载 Originally published on my personal blog. 最初发布在我的 个人博客上 . Most designers will spend many hou ...

  8. [转]NS2仿真过程中解决动画仿真节点未定义问题

    原文地址:http://blog.myspace.cn/e/400266384.htm 其实,这个问题已经出现很长时间了,但是直到昨天问题才得到解决. 问题描述 用NS2运行无线仿真,然后运行动画程序 ...

  9. 万彩动画大师使用技巧_在设计中使用动画的4个技巧

    万彩动画大师使用技巧 Pas de Deux, Norman McLaren 1968 双人舞,诺曼·迈凯轮1968 Animation is not the art of drawings that ...

  10. unity重定向_关于Unity中Mecanim动画的重定向与动画混合

    应用 一个RPG游戏,里面有100种怪物,每种怪物其实都差不多的,行走,跳跃,攻击,难道动画师要调100次动画吗?其实不需要 Unity抽象出人形动画系统,用Unity简化版的骨骼来进行统一的管理,只 ...

最新文章

  1. 五千字详解消息通知!
  2. hdu 2531 Catch him
  3. RMI强制Full GC每小时运行一次
  4. jdbctemplate 开启事务_Spring(四):事务管理
  5. 点击按钮无法触发ajax_前端 | Ajax 入门与实战
  6. 正则表达式替换文本前n字符
  7. 按键精灵手机助手之数学函数
  8. win10装sql2000卡在选择配置_如何在WIN10/SERVER2016上安装MSSQL2000数据库和新中大老版本软件...
  9. 安卓手机上有适合学生的日程app?
  10. 没有捷径!没有捷径!没有捷径!
  11. 鸿蒙的境界是什么,“鸿蒙”究竟为何物?扶桑树上的神祇,还是混沌的状态?...
  12. 保留已经定位区域MATLAB,基于HSV肤色提取与连通区域过滤的人脸定位算法(Matlab)...
  13. Linux的基本指令(一):常用基础指令
  14. 深入浅出MFC:MFC的消息机制
  15. 关于计算机等级考试的资源网,计算机等级考试计算机网络题库
  16. R语言实现支持向量机(SVM)
  17. 云端软件平台:封装sandboxie?
  18. AToken波卡Staking模拟大赛活动攻略
  19. 如何自定义3CX电子邮件模板
  20. b2g Introduction(Boot To Gecko)

热门文章

  1. 磁盘配额超出 linux,Linux磁盘配额应用
  2. 高中数学解析几何解题方法,2019高考生没有掌握方法!
  3. Web The7安装
  4. Richpedia: A Large-Scale, Comprehensive Multi-Modal Knowledge Graph
  5. 超百个区块链应用落地福州,BSN助力数字应用第一城蓬勃发展
  6. Linux查看当前时间
  7. 苹果内存不够怎么办_内存硬盘不够用怎么办?手把手教你给自己的笔记本更换,超实用!...
  8. 哈尔滨啤酒集团有限公司盈利能力分析毕业设计
  9. 学校人脸识别门禁功能介绍
  10. Linux驱动里的wmb函数