找回密码
 立即注册
查看: 415|回复: 5

米哈游的布料解算方案,在Unity是如何实现的?

[复制链接]
发表于 2023-2-3 10:57 | 显示全部楼层 |阅读模式
以原神为例:
1.角色在待机、跑动、攻击时,布料飘动的效果是固定的,不受速度、方向影响,显然不是实时物理模拟的解算方案。
更倾向于是Animator播放烘焙好的布料动画的方案。
2.大世界遇到地形高低差,实时计算的FootIK会影响布料(裙子)位置,同时也还包含布料正常情况下的飘动效果。
但这和1的结论并不一致。更不可能是单独为IK烘焙多套动画。
综上,这种布料方案在Unity是如何实现的?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2023-2-3 11:02 | 显示全部楼层
我猜大概率用了MagicalCloth,但是肯定魔改过。
MagicalCloth背后的算法叫FABRIK,我在这个帖子里讲了: https://www.zhihu.com/answer/2775116303
发表于 2023-2-3 11:11 | 显示全部楼层
工匠克算法,直接k死!算个鬼
发表于 2023-2-3 11:13 | 显示全部楼层
原神ik只在待机生效,ik最大高度也是有限制的
百分之90的摆动动画是k的
有些部分动画,会有少量微弱的动态骨骼效果,一般只在飘带的末端存在
毕竟原神是角色高转速,人物不支持换装,用k的动画能最大限度保证效果
发表于 2023-2-3 11:14 | 显示全部楼层
据我所知,大部分“飘动”效果都是预先烘焙好的动画。
小部分是基于物理的动态解算。
其基本可以靠unity的两款插件:《Final-IK》与《Magica Cloth》来实现。
https://assetstore.unity.com/packages/tools/animation/final-ik-14290Preventing penetration当然,插件永远解决的是“泛用性”问题,就好比《Dynamic Bone》性能巨差,但是他就是实现《VR Chat》模型mod的动态骨骼的首选插件。落实到项目中建议自己写一套捏。
爱吃菠萝不吃萝卜:【游戏开发】逆向运动学(IK)详解实际上,“烘焙动画”与“物理解算”并不冲突。除去Unity官方的《AnimationRigging》package把ik解算插入了Unity Mecanim动画管线中,其他的插件都可以视为一种“后处理”——比如在【LateUpdate】中更新骨骼的transform信息。
这样,一帧之内,动画管线的流程是:读取动画片信息、采样动画数据、把动画数据写入骨骼中、后处理(IK Solve,物理计算)、重新写入解算数据、渲染。
在此,我不得不提一句《Magica Cloth》在后处理阶段的策略:因为防穿模的物理计算其实蛮耗时的,为了保证帧率,《Magica Cloth》决定在当前帧输入物理计算的参数,在下一帧渲染前输出计算结果——所有布料的物理模拟全部延迟一帧。
由于此插件本就搭载了Unity的Job System,此计算不会阻塞主线程,采用多线程计算的同时延迟一帧出结果,效率其实已经很高了。
至于“布料”“穿模”的算法原理,还得靠大手子贴一贴论文or博文链接了,这方面我是一窍不通。
发表于 2023-2-3 11:17 | 显示全部楼层
有在网上看过有人提取了原神的动画,而这些动画都是包含了布料抖动的,所以可以得出,都是骨骼动画,不是实时解算,都是maya,max里面烘焙好的或者是动画师手动k。
<hr/>更新:
不好意思,没看题,请忘记我的答案。
再更新:
个人猜测,仔细分析foot ik,其实裙子在ik状态下只是单向抬起,所以,理论上,可以用animator的addition animation实现,通过脚的跨度计算weight实现。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-29 07:15 , Processed in 0.106693 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表