Unity 社区
9
3

Unity6 动画系统详解9:Target Matching是什么?

阅读 1014
2020年7月19日
大智
Unity技术探路者/VX:zhz11235
在游戏中,经常有这种情况:角色的手或者脚需要在特定时间放在特定的位置。比如角色需要用手撑着跳过一个石头或一堵墙,或者跳起抓住房梁。Target Match就是让动画的特定片段去匹配特定的位置。
大话Unity,让你快人几步。你好,我是跟着大智学Unity的萌新,我叫小新,这几周一起来复(yu)习(xi)动画系统。
小新:“大智,我有一个需求,感觉可以用IK去实现,但是使用IK会有问题,我就不知道怎么办了。”
大智:“具体是什么需求呢?”
小新:“绝地求生里面人物可以双手撑墙跳过一个堵墙或者窗户,我想让角色的双手能恰好放到墙上,这个应该怎么做呢?”

Target Matching(目标点匹配)

大智:“这种需求其实可以使用Target Matching的技术。在游戏中,经常有这种情况:角色的手或者脚需要在特定时间放在特定的位置。比如角色需要用手撑着跳过一个石头或一堵墙,或者跳起抓住房梁。Target Match就是让动画的特定片段去匹配特定的位置。”
小新:“那具体怎么用呢?”
大智:“API是Animator.MatchTarget,你可以先去看看文档”
小新:“好嘞”

API:Animator.MatchTarget

下面是小新的笔记:
Animator.MatchTarget的方法原型为:
public void MatchTarget(Vector3 matchPosition, Quaternion matchRotation, AvatarTarget targetBodyPart, MatchTargetWeightMask weightMask, float startNormalizedTime, float targetNormalizedTime = 1);
这个方法用来自动调节GameObject的位置和旋转。
参数的作用: matchPosition 匹配的位置 matchRotation 匹配的旋转 targetBodyPart 身体的部位,从AvatarTarget枚举中选择。 weightMask 设置位置和旋转匹配的权重 startNormalizedTime 开始匹配的时间,注意是单位化时间(动画开始位置是0,结束位置是1)。如果开始时间已经超过了当前动画的播放时间,会匹配下一次符合的时间。比如:startNormalizedTime传入0.2,但是当前已经播放到0.3,会匹配下一次循环的0.2的位置。 targetNormalizedTime 最终匹配到的单位化时间。如果值大于1,可以设置特定循环数后的位置。比如2.3代表第2次循环的30%位置。
Unity会自动调整GameObject的位置和旋转来保证到特定时间时角色的特定部位能达到指定的位置和旋转。Target matching只能对Base Layer(index 0)生效。同一时间只能有一个match target生效,后续一个的match target需要等待前面的执行完成,再后续的match target会被忽略。

参数详解

小新:“大概知道这个方法是什么了,那对于跳跃这个动画,如何应用呢?”
大智:“其实只要对这几个参数多研究一下,就知道怎么用了。首先前两个参数是匹配的位置和旋转,这个不用多说吧?”
小新:“嗯嗯,比如我要匹配墙上,那就是墙上的位置,旋转就是让手的角度贴合墙,应该可以用调IK的方式来调。
大智:“没错。targetBodyPart的类型是一个枚举,可以用来匹配对应的位置,比如说匹配左手,那就应该传入左手。weightMask是一个结构体,可以同时设置位置和旋转的权重,这个权重的概念我们已经接触很多次了,如果为1就是完全匹配到对应的位置和旋转。
小新:“嗯,这几个参数没什么问题,就是最后两个参数有些难搞清楚”
大智:“最后两个参数是开始匹配和完全匹配上的时间。比如你想在特定的时间匹配到对应的位置,那么肯定不能到那个时间点一下子把动画拉过去,是吧?”
小新:“对,那样太突兀了”
大智:“是的,我们动画中很多的混合都是为了让动画看起来更平滑,更自然。所以除了这个匹配到的特定时间,也就是targetNormalizedTime,我们还需要一个开始匹配的时间startNormalizedTime。开始时间到了就开始去进行匹配混合,到targetNormalizedTime时正好精确的到达匹配的位置。”
小新:“那我大概明白了,我得去亲手实践一下”
大智:“还要注意Target Matching只能对Base Layer生效”
小新:“好我记住了”

动画重定向

小新:“我突然想起来一个也叫什么Retargeting的东西,和这个好像啊,你顺便给我讲讲呗”
大智:“你说的应该是动画重定向,也就是Retargeting,比如将角色A的动画应用到没有动画的角色B上面,实现动画的重用。”
小新:“对对,就是这个”
大智:“其实要想重用动画不一定要用到Retargeting系统。如果两个角色的骨骼结构一样,那么动画其实是可以直接重用的。
小新:“哦,那为啥还要这个Retargeting系统呢?”
大智:“虽说两个角色的骨骼结构一样,动画是可以直接重用。但是要求很严格,包括骨骼的命名、骨骼的数量、骨骼的父子结构等等要求一模一样。这种情形一般只会出现在同一个动画师手里。如果骨骼稍微有些差别,那就没办法直接重用了。”
小新:“确实,如果我找到一个特别好的人物角色模型,但是却没办法用其他已有的动画,那是多么的折磨啊”
大智:“是的,这时候就需要用到Retargeting系统了,但是需要注意的是Retargeting系统只能用于人形动画。重定向相当于将不同的骨骼结构都映射到了Unity的Avatar上面。之前我们配置过AvatarMask,和那个有点像。配置的位置就是在模型导入设置的Rig标签里”
点击Configure可以进入配置界面,Unity会自动创建一个新场景用于Avatar的配置。
在Mapping页面下,可以将模型的骨骼节点映射到Unity的Avatar上面对应的骨骼节点。在Musule & Settings页面下可以设置每个骨骼节点可以旋转的范围,避免出现不合常理的骨骼旋转。
大智:“Retargeting系统就相当于将模型A和模型B的骨骼都映射到了一个Unity Avatar上面,这样最终都是用这个同一个Avatar来控制动画,达到重用的目的。”
小新:“明白了,相当于用了一个中间件,将两个不同的东西匹配了起来。”
大智:“没错。在设置模型的Rig的时候,需要注意的是,Avatar Definition除了Create From This Model这个选项之外,还有一个选项是Copy From Other Avatar,如果两个模型的骨骼结构是一致的,可以直接使用这个Copy From Other Avatar将Avatar复制过来,就不需要再重新设置一遍了,也能节省内存。”

总结

小新:“看来这两个东西里面虽然都有Target,但是其实是两个不同的东西。Target Matching用来匹配动画到特定的位置,Retargeting系统是用来重用动画,让骨骼结构不同的动画可以复用。”
大智:“说的没错”

今日思考题

大智:“给你布置个作业,去用Target Matching把跳跃的动画好好调一调” “收到!我去也!” “收获别忘了分享出来!也别忘了分享给你学Unity的朋友,也许能够帮到他。”

扩展阅读

  • 【视频课】大话Unity之动画系统 https://learn.u3d.cn/tutorial/dahua-animation
【扩展学习】大话Unity公众号回复动画可以阅读本系列所有文章,更有视频教程等着你!
呼~ 今天小新絮絮叨叨的真是够够的了。没讲清楚的地方欢迎评论,咱们一起探索。
我是大智(微信:zhz11235),你的技术探路者,下次见!
别走!点赞收藏哦!
好,你可以走了。
动画
发布于 技术交流
推荐阅读
Unity6 动画系统详解10:子状态机是什么?
大智
2020-08-16
阅读 1327
Unity6 动画系统详解9:Target Matching是什么?
大智
2020-07-19
阅读 1014
Unity6 动画系统详解8:IK是什么?
大智
2020-07-12
阅读 1667
Unity6 动画系统详解7:Layer是什么?
大智
2020-07-05
阅读 1198
Unity6 动画系统详解6:如何做好角色的移动动画...
大智
2020-06-28
阅读 1619
Unity6 动画系统详解5:BlendTree混合树是什么?
大智
2020-06-14
阅读 1185
3条评论
App 内打开
分享到微博

玻璃钢生产厂家罗湖玻璃钢造型雕塑户外绿地玻璃钢卡通雕塑订做拉丝玻璃钢雕塑制造厂家哪儿有玻璃钢造型雕塑厂家玻璃钢吉祥物狗雕塑北京珠海玻璃钢雕塑商场美陈岗位要求商场美陈装饰设计公司耒阳玻璃钢座椅雕塑佛山玻璃钢卡通人物雕塑厂家河北小区玻璃钢雕塑生产厂家漯河玻璃钢人物雕塑厂家电话江苏季节性商场美陈生产企业荆州卡通玻璃钢雕塑玻璃钢仿铜雕塑平台潮州玻璃钢雕塑制作厂家河南大型商场美陈批发价深圳红色杯形玻璃钢花盆玻璃钢雕塑拼接工艺商场美陈清洁注意事项动物玻璃钢雕塑价位许昌玻璃钢雕塑加工商水玻璃钢雕塑定制河南景区玻璃钢雕塑生产厂家德州卡通玻璃钢雕塑价格玻璃钢火锅卡通雕塑宿州欧式玻璃钢雕塑供应大型玻璃钢雕塑定西市玻璃钢雕塑庆阳抽象人物玻璃钢雕塑哪家好香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化