次元羊游戏资讯网

决战沙邑
当前位置:首页>游戏评测 >

玩游戏过场动画卡顿-满满干货-游戏性能是什么意思-电脑游戏动画不连贯

作者:次元羊 时间:2023-10-09 08:04:29阅读:(32)

之前有小伙伴后台留言,想了解动画压缩的技术,正好看到一本书上有介绍这方面的内容,就引用过来,说说技术动画师能做些什么。

如果嫌字太多,可直接看同背景色的文字部分大致耗时1分钟

对于动画性能问题,动画TA能做什么?取决于您的项目正在处于哪个阶段:

类型一:都很好,完全不需要 

如果你的项目程序大佬很厉害,把游戏性能控制的很好,动画表现也没有问题,各部门都没有这方面的需求那动画TA可以安心做其他事情,但要保持对性能指标的关注度

类型二:已经在优化,但是效果不理想(标题中的情况)

如果你的项目程序大佬很厉害,把游戏性能控制的很好,但是动画表现问题很大,动画师总是跟你吐槽说,“我做的动画,不仅仅是一帧没有了,连很多次元羊细节表现都没了”!(可以参见上一篇中,常见的动画师吐槽点)动画TA需要跟程序大佬沟通,了解程序大佬使用的是后文中介绍的哪种压缩方式,协商开放开放一些接口,以便我们可以调节参数,同时保证动画性能和动画质量。

类型三:刚刚开始做优化

      您的项目正在经历着性能问题,需要各种压缩,那么一定会至少有一位程序大佬负责引擎程序相关的工作作为技术动画师,请仔细了解后文中介绍的压缩方式,然后跟程序大佬沟通,选择某一个或者某几个方案,配合程序对动画做压缩方案的测试,解决各种可能出现的bug,确认结果符合动画师预期,最终将整套流程落实到项目中,成为规范。

类型四:还没开始

您的项目还没有经历任何性能问题,说明项目还处于比较早次元羊期的阶段技术动画师要提前做好知识储备(了解后文中提到的几种方法),在适当时机提出性能问题,在项目中,推进性能优化的事情。

正文开始

书籍来源《游戏引擎架构》[美] Jason Gregory 著其中,动画压缩技术提到以下几个方向:    1. 通道省略    2. 量化    3. 采样频率及键省略    4. 基于曲线的压缩    5. 选择性载入及串流

都不是人话,,,后面会逐条翻译成自己的语言(这不是个安利卖书的软文哈!)

首先,了解性能的背景知识:每根骨骼(关节)的数据信息包括:        Position(3个float)+ Quaternion(4个float)+ Scale(3个fl次元羊oat)        一共10个float的数据,其中,每个float占用4个字节(Byte)

假设,做动画一秒动画30帧率,那么,每一秒每个关节占用的内存:30 个pose x 10 个float x 4 Byte = 1200 Byte ~= 1.17KB/关节/秒记住这个结果:一根关节,一秒动画(30帧每秒)

需要占用 1.17 KB的内存空间

举例:假设一个游戏,同屏5个角色,平均每个角色身上50跟骨骼,一般每个角色携带最少10秒钟时长的动画数据(所有假设都是偏低的估计):该游戏,单纯动画方面占用的内存:5 * 50 * 10 * 117 = 292500KB  ~=  

258.6M单纯动画就次元羊占用了将近260M,如果不做性能优化,这个游戏不可能上线。所以,性能优化是每个游戏必然面临的问题!下面正式解释书中的专业术语:

1. 通道省略“通道”啥意思?每个关节10个float,就是10个通道,通道省略就是想办法减少float的个数比如Scale缩放,很多游戏不允许动画师缩放动画,那么Scale缩放的3个float就直接省略掉,这样可以最简单的减少 3/10的内存。

2. 量化一个float占4个字节(Byte),一个字节占8位(二进制:用0和1机器语言表示)所以一个float占32位通过程序大佬的努力,把32位变成n位整数,这个过程称作"量化"具体怎么操作,只能辛苦程序大佬了,从数据存储的次元羊最底层,节省了动画占用,但如果出了问题,也只能靠程序大佬解决。

3. 采样频率及键省略采样频率:每秒30帧变成每秒15帧,直接节省50%键省略:如果某些动画变化不大或者有规律性变化,那么就可以只保存这部分的首尾帧和其他必要参数但是本方法可能会出现其他必要参数的数据量更大,反倒不如不去省略中间的关键帧。

4. 基于曲线的压缩增加一个描述用的属性B,根据动画的曲线变化率来采样直观意思就是,不是每一帧每一帧的记录数据, 而是如果动作变化频繁,记录的帧就更密集一些,如果动作平缓,记录的帧就宽松一些,而这个密和宽松的规则,就是在前面说的属性B里面做记录。

这同样主要是引擎程序大佬的工作,技术动画师只能配合看看次元羊结果是否符合预期

5. 选择性载入及串流最节省内存的动画,就是不在内存中的动画换句话说,动画按需加载,用完卸载是最节省性能的比如,走跑跳战斗需要随时随地被玩家激活的动作,必须时时刻刻待命,而休闲类动作,或者npc、怪物身上的大部分动作,可以需要的时候再加载到游戏内存中,从而起到节省整体游戏内存的作用。

以什么逻辑加载卸载,用什么工具(基于不同的引擎)加载、卸载,结果是否符合项目需要,是否会出现什么诡异bug,都是程序和技术动画需要配合的地方。

在上述几个方案中,技术动画师需要关注什么?    在积极配合程序完成方法验证的基础上,确认没有bug之后,将方法落实并推广到正式开发的管线中,保证资源的正确性次元羊,保证性能的可控性,保证最终效果符合项目美术标准。

最终发现,动画性能方面,动画TA能做的不多,大多都是配合程序的工作事实也的确如此,动画TA这个职位,很多时候也只是程序和美术(动画师)之间的润滑剂,既保证性能也要保证动画质量也就是,鱼与熊掌,我都要!不说了,我要去找程序大大喝咖啡去了~

什么是游戏技术动画师?游戏技术动画师具体做些什么?怎样成为一名游戏技术动画师?感谢关注公众号游戏技术动画师希望可以给您职业方向带来一点启发~

推荐阅读