尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

一帧动画到底在算什么:Unity动画流水线拆解

一帧动画到底在算什么:Unity动画流水线拆解 上次写完动画为什么费CPU,评论区有个哥们儿问得挺犀利:你老说每帧要重新算一遍,那具体算了些啥?CPU到底花哪儿了?问得好。我当时也是这么一步步搞明白的——光知道"动画费性能"没用,你得知道费在哪一步,不然优化就是碰运气。这篇我就把一个角色一帧里的动画计算从头到尾捋一遍,讲讲每步在干嘛、为啥费,顺便说说哪些地方你能动手。先建立个整体印象一个角色的动画,从数据到屏幕上会动的模型,中间大概要过这么几关:先是状态机判断现在该播哪个动作、要不要切换;然后去动画数据里把这个时刻每根骨头的位置读出来;如果身上叠了好几个动作(跑步同时瞄准同时换弹那种),还得把它们混在一起;接着有些地方靠预设动画搞不定,比如脚要踩在斜坡上、手要握住枪,得用IK再修一遍;修完了算出每根骨头在世界里的绝对位置;最后拿这些骨头去带动网格模型上的每个顶点。这一整套,每帧、每个角色,都得走一遍。你场上二十个敌人,就是二十遍。一秒六十帧,再乘六十。数字一叠加就吓人了。下面挨个说。第一关:状态机在那儿不停地问自己问题Unity现在主流用Animator,就是那个界面里连线连来连去的东西。它每帧干的第一件事,是搞清楚现在的状态。你可以把它想象成一个一直在自言自语的家伙:现在播到哪个动作了?速度参数变了没?够不够条件切到跑步?如果正在从站立过渡到走路,过渡到百分之几了?这些判断本身就要花时间。状态越多、过渡条件越多、Layer分层越多,它自言自语的内容就越长,花的时间也越多。这里有个我踩过的坑:只要Animator开着,哪怕角色戳在那儿一
返回列表