【博客节选】再谈Unity 的 root motion

节选自 【Unity实战笔记】第二十三· root motion变更方向攻击 (OnStateMove + rootmotion + rigidbody 使用的一些问题)

小伙伴们应该对root motion非常困惑,包括那个bake into pose。

在这里插入图片描述
当xz bake into pose后,角色攻击动画与父节点产生偏移,动画结束后,模型还会瞬移归位。

如何理解?先看一下这位看过Mecanim源码的人的介绍:

根节点运动(Root Motion)

  • 这里的根节点运动并不是一般意义上的“动画中的根节点的运动”,而是Mecanim动画系统处理根节点运动的一些列相关功能,以下都直接称之为RootMotion,而Mecanim一般称原本动画中对根节点的运动为< Root Transform >;
  • Mecanim有很具有特色的RootMotion处理功能,这里首先要提出两个概念:
    - Scene Root,模型文件中骨骼中真正的根节点,一般名称就是Scene Root,
    - Model Root,是Mecanim系统中模型语义上的中心节点;
  • 在非人形动画(Generic)中,默认没有Model Root,开发者可以指定任何节点为Model Root,而人形动画(Humanoid)中,Model Root不是任何一根具体的骨骼,而固定是人形骨骼的重心,在Unity给出的API中,根据导入配置选项差别,也称为Body或者Center of Mass;
  • 一旦骨骼对象拥有Model Root,其上的动画就会有RootMotion的语义,其详细意义是将Model Root在模型空间内的变换映射至Scene Root上,换句话说,RootMotion可以在原动画中不包含RootTransform时在Runtime时根据设置计算得到RootTransform;
  • RootMotion为开发者提供了两种处理计算得到的RootTransform的方法,一种是保留根变换,一种将根变换烘焙进Model Root中,也就是Unity官网解释的RootTransformBodyTransform方法;具体使用方法取决于Animator和AnimationClip的设置;
  • 应用RootTransform,也就是在Animator处开启Apply Root Motion,计算得到的RootTransform就会实际变换Scene Root,而应用BodyTransform,也就是选择对应Bake Into Pose,计算得到的RootTransform就会只变换Model Root,Scene Root会保持不变

    根节点运动(Root Motion)逻辑控制方案
  • Unity提供了一套代码支持逻辑管理RootMotion而不是让Animator直接管理的需求,在Animator组件的同级任意组件中实现OnAnimatorMove()回调接口即可;
  • 实现接口后Animator原本的RootMotion就不会生效,但是RootMotion计算得到结果会分别保存在Animator.rootPosition,Animator.rootRotation,Animator. deltaPosition, Animator. deltaRotation中,代码中根据需求使用;

在这里插入图片描述

  • ① Scene Root,对应 RootTransform
  • ② Model Root,对应 BodyTransform

如果不应用root motion,不bake into pose,就是一个原地动画,①不动和②也不动。
如果不应用root motion,bake into pose,①不动,②动。
如果应用root motion,bake into pose,①不动,②动。
如果应用root motion,不bake into pose,那就是②跟随①运动。

如下(出自我 第十一篇文章《动画基础》7.6.2 节):
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/41159.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从零开始的大模型强化学习框架verl解析

之前在职的时候给一些算法的同学讲解过verl的框架设计、实现细节以及超参配置&#xff0c;写这篇文章姑且作为离职修养这段时期的复健。 本文中提到的做法和思路可能随着时间推移有变化&#xff0c;或者是思想迪化&#xff0c;仅代表个人理解。如果有错漏的地方还请指出。 现…

回归——数学公式推导全过程

文章目录 一、案例引入 二、如何求出正确参数 1. 最速下降法 1&#xff09;多项式回归 2&#xff09;多重回归 2. 随机梯度下降法 一、案例引入 以Web广告和点击量的关系为例来学习回归&#xff0c;假设投入的广告费和点击量呈现下图对应关系。 思考&#xff1a;如果花了…

【AVRCP】深度解析蓝牙高速(AMP)在封面艺术传输中的应用:低延迟体验的工程实践

目录 一、AMP 技术架构与封面艺术传输需求 1.1 蓝牙高速技术背景 1.2 AMP技术原理 1.3 蓝牙协议栈演进&#xff08;AMP 协议栈架构&#xff09; 1.4 封面艺术传输的技术挑战 1.5 AMP 关键特性&#xff08;BR/EDR vs AMP 对比&#xff09; 1.6 封面艺术传输模型&#xff…

Spring Boot 连接 MySQL 配置参数详解

Spring Boot 连接 MySQL 配置参数详解 前言参数及含义常用参数及讲解和示例useUnicode 参数说明&#xff1a; 完整配置示例注意事项 前言 在 Spring Boot 中使用 Druid 连接池配置 MySQL 数据库连接时&#xff0c;URL 中 ? 后面的参数用于指定连接的各种属性。以下是常见参数…

智能科技与美学融合,赵伟辰荣膺 2025 iF 设计大奖

近日,全球设计界享有盛誉的 iF 设计奖(iF Design Award)正式公布 2025 年度获奖名单。设计师赵伟辰凭借其创新力作Multi-Scenario Modular Control System(多场景模块化控制系统),从全球 10,000 余件参赛作品中脱颖而出,斩获这一全球瞩目的奖项。他凭借卓越的用户体验优化能力与…

NotePad++与Navicat工具的下载 完全免费无套路

https://qr61.cn/o7ciDN/qINyVn3 打开链接 获取下载即可 免费 免费 免费 重要的事情说三遍&#xff01; 这是本人自己搜集资源与发布和共享的最新版&#xff0c;无任何费用 需要工具自行下载即可。 由于人少力薄 资源更新较慢 请大家耐心等待 多多关注 谢谢~ 下面给大家截图…

K8S学习之基础五十一:k8s部署jenkins

k8s部署jenkins 创建nfs共享目录&#xff0c; mkdir -p /data/v2 echo /data/v2 *(rw,no_root_squash) > /etc/exports exportfs -arv创建pv、pvc vi pv.yaml apiVersion: v1 kind: PersistentVolume metadata:name: jenkins-k8s-pv spec:capacity:storage: 1GiaccessMod…

印刷电路板 (PCB) 的影响何时重要?在模拟环境中导航

我和我的同事们经常被问到关于 PCB 效应的相同问题&#xff0c;例如&#xff1a; 仿真何时需要 PCB 效果&#xff1f; 为什么时域仿真需要 PCB 效应&#xff1f; 当 PCB 效应必须包含在仿真中时&#xff0c;频率是否重要&#xff1f; 设计人员应该在多大程度上关注 VRM 模型中包…

车载以太网网络测试 -24【SOME/IP概述】

目录 1 摘要2 车载SOME/IP 概述2.1发展背景以及应用2.1.1车载 SOME/IP 背景2.1.2 车载 SOME/IP 应用场景 2.3 什么是SOME/IP2.3.1 SOME/IP定义2.3.2 SOME/IP在协议栈中的位置 3 SOA是什么4 SOME/IP主要功能5 SOME/IP标准 1 摘要 本文主要介绍SOME/IP的背景以及在车载行业的发展…

如何在 Postman 中导入和导出 cURL 命令?

cURL 是一款广受欢迎的命令行工具&#xff0c;专门用于执行 HTTP 请求。它在 Web 应用或 API 测试中极为实用&#xff0c;让用户得以借助在 API 开发者社区广为流行的成熟语法&#xff0c;直接通过命令行与 API 进行交互。若你需要在多个环境下运行众多 cURL 命令&#xff0c;可…

K8S学习之基础五十五:k8s中jenkins部署blueOcean

jenkins部署blueOcean 安装插件 BLUE OCEAN 之后会多出一个菜单&#xff0c;可以更详细方便的查看pipeline流程

宝塔docker flarum默认登录账号密码,crazymax/flarum镜像默认登录账号密码

docker flarum默认账号密码 刚创建完毕时的登录账号和密码都是flarum 来源说明 宝塔安装的这个1.8.5版本的docker flarum的版本是&#xff0c;用的是 Docker库 https://hub.docker.com/r/crazymax/flarum Github库 https://github.com/crazy-max/docker-flarum

3.26学习总结

今天主要学习了内部类&#xff0c;但总感觉有点混乱&#xff0c;和之前的抽象啊&#xff0c;接口&#xff0c;多态等概念联系在一起感觉更混乱了&#xff0c;所以打算先把最近学的理清一遍&#xff0c;敲一遍代码再往后学

如何快速解决 Postman 报错?

介绍一些 Postman 常见的报错与处理方法&#xff0c;希望能够对大家有所帮助。 Postman 一直转圈打不开的问题 Postman 报错处理指南&#xff1a;常见报错与解决方法

高铁监控存储扩容-DS SAN存储磁盘阵列

国家高铁建设之内蒙包银高铁线路段--近期升级改造车站监控设备存储扩容&#xff0c;每个车站的机房承载本站数百个监控点位的数据&#xff0c;现因监控服务器存储空间不足&#xff0c;选用Infortrend DS SAN存储磁盘阵列升级设备存储空间&#xff0c;单台DS最高支持448颗硬盘容…

rnn的ho的维度 (num_layers * num_directions, batchsize, hidden_size)

因为是多层rnn 所以h0 需要 num_layers 来定义几层 这里的hidden_size 其实也就是h中有多少个神经元的个数

同旺科技USB to I2C 适配器 ---- 多从机设备混合调试

所需设备&#xff1a; 内附链接 1、同旺科技USB to I2C 适配器 1、还在为一条I2C总线上出现多个从机设备而烦恼吗&#xff1f;现在这些都可以轻松解决了&#xff0c;在 "发送数据" 栏里面&#xff0c;修改指令的从机地址就可以了&#xff0c;同时支持7Bit、8Bit地址…

如何下载 Postman?快速指南!

Postman 是一款非常受欢迎的 API 测试工具。它最初是作为一个 Chrome 插件发布&#xff0c;后来发展成为一款独立的跨平台软件&#xff0c;支持 Windows、Mac、Linux 等操作系统。 Postman 怎么下载教程&#xff08;2025最新版&#xff09;&#xff1f;

VSCode 抽风之 两个conda环境同时在被激活

出现了神奇的(toolsZCH)(base) 提示符&#xff0c;如下图所示&#xff1a; 原因大概是&#xff1a;conda 环境的双重激活&#xff1a;可能是 conda 环境没有被正确清理或初始化&#xff0c;导致 base 和 toolsZCH 同时被激活。 解决办法就是 &#xff1a;conda deactivate 两次…

idea接入 AI 编程助手:Copilot

1.1 安装 GitHub Copilot 插件 打开 IntelliJ IDEA&#xff0c;进入 File > Settings&#xff08;Windows&#xff09;或 Preferences&#xff08;Mac&#xff09;。在 Plugins 搜索 GitHub Copilot。点击 Install 并重启 IDEA。 1.2 配置 GitHub Copilot 进入 Settings &g…