首页 > 其他分享 >(十二)Unity性能优化-动画优化

(十二)Unity性能优化-动画优化

时间:2023-09-26 13:23:04浏览次数:43  
标签:API 动画 Clip 曲线 Unity Animation 优化 Animator

原链接:https://github.com/lwwhb/Unity2022_SUNTAIL_Stylized_Fantasy_Village_Optimization

Animation的一些细节
播放单个AnimationClip速度,Legacy Animation系统更快,因为老系统是直接采样曲线并直接写入对象Transform
针对动画的缩放曲线比位移、旋转曲线开销更大
常数曲线不会每帧写入场景,更高效
Animator的一些细节
不要使用字符串来查询Animator
使用曲线标记来处理动画事件
使用Target Marching函数来协助处理动画
将Animator的CullingMode设置成Based On Renderers来优化动画,并禁用SkinMesh Renderer的Update When Offscreen属性来让角色不可见时动画不更新
Internal Animation Update

Animator VS Animation
Animation可以将任何对象属性制作成Animation Clip, Animator是将Animaiton Clip组织到状态机流程图中使用
Animation与Animator播放动画时的效率是有个临界点的,这个临界点是根据动画曲线条数来的,当动画曲线条数小于这个临界点时Animation快,当动画曲线条数大于这个临界点时Animator快
当Cpu核数较少时,Animation播放动画有优势,当Cpu核数较多时,Animator表现会更好
Animator Controller Graph中的所有动画节点的Animation Clip都会载入到内存中,当有海量动画状态机节点时,内存开销较大
Playable API VS Animator
Playable API优点

支持动态动画混合,可为场景中的对象提供自己的动画,并可以动态添加到PlayableGraph当中使用
允许创建播放单个动画,而并不会产生创建和管理AnimatorController资源所涉及的开销,可更加灵活的控制PlayableGraph的数据流,可以插入自定义的AimationJob。
可以控制动画文件加载策略,按需加载、异步加载等
允许用户动态创建混合图,并直接逐帧控制混合权重(甚至可以混合AniationClip与AnimatorController动画)
可以运行时动态创建,根据条件添加可播放节点。而不需要提前提供一套PlayableGraph运行时启动和禁用节点,可以做到自由度更高的override机制
可加载自定义配置数据,更加方便的和其他游戏系统整合
Playable API缺点

没有直接使用Animator直观
混合模式没有现成的,需要自己实现
需要开发更多的配套工具
有一定学习成本
解决方案选择
一些简单、少量曲线动画可以使用Animation或动画区间库如Dotween\iTween等完成,如UI动画,Transform动画等。
角色骨骼蒙皮动画如果骨骼较少,Animation Clip资源不多,对动画混合表现要求不高的项目可以采用Legacy Animation。注意控制总体曲线数量
一些角色动画要求与逻辑有较高的交互、并且动画资源不多的项目可以直接用Animator Graph完成
一些动作游戏,对动画混合要求较高、有一些高级动画效果要求、动画资源量庞大的项目,建议采用Animator+Playable API扩展Timeline的方式完成。

标签:API,动画,Clip,曲线,Unity,Animation,优化,Animator
From: https://www.cnblogs.com/zerobeyond/p/17729863.html

相关文章

  • (十三)Unity性能优化-优化思路
    原链接:https://github.com/lwwhb/Unity2022_SUNTAIL_Stylized_Fantasy_Village_Optimization性能优化问题的本质慢与快的问题前提稳定性:不能因优化造成稳定性变差兼容性:不能因优化导致兼容性变差性价比:优化要有度,考虑成本与复杂度性能优化的流程发现问题(什么平台、什么操作系统、......
  • flv.js的追帧、断流重连及实时更新的直播优化方案
    1.前言最近在处理前端直播的业务,根据业务需要,使用flv.js的方案播放实时的flv视频流。不得不承认,flv.js是一个伟大的库。在使用flv.js开发的过程中,遇到了一些问题,也无外乎是视频延迟,视频卡顿等问题,经过在githubissues里摸爬滚打,加上长时间的试错,将这些问题归纳出了对应的解......
  • 优化Linux服务器
    正常使用环境下的Linux服务器有精准、稳定、高效、安全等需求,其优化也是有着很多的窍门。本文分享了九条平时进行Linux服务器优化的经验,内容涉及邮件服务器、Web服务器、网络配置、内存管理等方面1时间同步正常使用环境下的服务器对时间的要求是精准的,我的邮件服务器的dovecot服务,......
  • VSCode 安装插件 Unity 后,一直弹 The .NET Core SDK cannot be located
    如题。明明已经安装了.Net7.0。并且添加到了PATH中。(也就是在终端/CMD可以通过dotnet命令访问到。)但Vscode还是一直弹The.NETCoreSDKcannotbelocated。然后开始下载.Net7.0。解决方案写在了.NETRuntimeInstallTool的细节描述里。按照描述去为对应的......
  • 论文研读_通过具有可扩展的小子种群的协方差矩阵适应性进化策略解决大规模多目标优化
    论文研读_通过具有可扩展的小子种群的协方差矩阵适应性进化策略解决大规模多目标优化问题创新点随着目标或决策变量的数量增加,收敛性和多样性之间的冲突变得更为严重,因此在它们之间取得平衡变得越来越困难。此时S3-CMA-ES,它使用一系列子种群来近似LSMOPs的PFs,并强调不同子种......
  • (十一)Unity性能优化-物理优化
    原链接:https://github.com/lwwhb/Unity2022_SUNTAIL_Stylized_Fantasy_Village_OptimizationUnity中的物理解决方案Box2DNvidiaPhysXUnityPhysicsHavokPhysicsforUnityTrigger与ColliderTrigger对象的碰撞会被物理引擎所忽略,通过OnTriggerEnter/Stay/Exit函数回调Collider对......
  • 编译器优化记录(死代码消除+“激进的”死代码消除)
    编译器优化记录(3)——死代码消除+”激进的“死代码消除0.什么是死代码消除相信大家在写C++的时候,如果你定义了一个变量但是没有对其使用,大部分IDE都会对这个变量进行灰色的染色。又或者说,当你开了一个空的循环,在里面定义并使用了一堆和输出值/返回值没有关系的变量,这个时候IDE......
  • uniapp项目实践总结(二十二)分包优化和游客模式
    导语:这篇主要介绍应用分包和游客模式相关的内容。目录应用分包游客模式应用分包微信对于小程序的打包压缩后的代码体积是有限制的,网页和APP也可以适用分包功能,因此需要进行分包添加以及分包优化。分包添加在pages.json文件中添加分包的信息。例如:有一个名叫user的分......
  • pytest + yaml 框架 -56. 输出日志优化+allure报告优化
    前言v1.4.8版本优化接口请求和响应输出日志,生成的allure报告也按步骤优化request和response详情日志优化日志用例test_log1:-name:log1request:url:http://127.0.0.1:8000/api/test/demomethod:GETvalidate:-eq:[status_code,200]-eq:......
  • 智慧工地系统源码,实现对施工全过程的实时监控、数据分析、智能管理和优化调控
    智慧工地是指通过信息化技术、物联网、人工智能技术等手段,对建筑工地进行数字化、智能化、网络化升级,实现对施工全过程的实时监控、数据分析、智能管理和优化调控。智慧工地的建设可以提高工地的安全性、效率性和质量,降低施工成本,是建筑行业数字化转型升级的重要抓手。智慧工地物......