Unity(三十七):3D模型动画、脚本控制模型骨骼IK动画
效果(左侧模型动画,右侧模型IK控制)
模型动画下载及导入
推荐模型动画下载链接地址
https://actorcore.reallusion.com/
Unity导入教程参见以下链接地址(需要科学上网)
https://actorcore.reallusion.com/learn-and-support/my-software/unity/getting-started
导入完成后模型相关查看
配置模型动画控制器
拖拽模型预设到视图中
配置动画控制器(可自定义动画控制器)
创建新的控制器状态
,向Motion
属性中添加模型中的动画
- 通过修改
Status
属性来改变播放的动画
监听动画状态的脚本
using UnityEngine;public class DanceAnimStateMachine : StateMachineBehaviour
{// 进入当前状态时override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex){Debug.Log($"进入当前状态时");}// 当前状态更新时,每帧都会被调用override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex){Debug.Log($"当前状态更新时,每帧都会被调用");}// 离开当前状态时override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex){Debug.Log($"离开当前状态时");}// 在Animator.OnAnimatorMove()之后调用,这里可以处理动画根节点的位移override public void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex){Debug.Log($"在Animator.OnAnimatorMove()之后调用,这里可以处理动画根节点的位移");}// 在Animator.OnAnimatorIK()之后调用,这里可以处理IK(反向运动学)动画override public void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex){Debug.Log($"在Animator.OnAnimatorIK()之后调用,这里可以处理IK(反向运动学)动画");}
}
脚本控制模型骨骼IK动画
创建自己的动画控制器
添加 T-Pose 动画到控制器
启用 IK Pass
模型骨骼IK控制脚本
using UnityEngine;namespace Example_01.Scripts
{public class ModelAnimByIK : MonoBehaviour{private Animator _animator;public Transform leftHandObj;public Transform leftFootObj;public Transform rightHandObj;public Transform rightFootObj;private void Awake(){_animator = GetComponent<Animator>();}private void OnAnimatorIK(int layerIndex){if (!_animator) return;// 设置动画权重_animator.SetIKPositionWeight(AvatarIKGoal.LeftHand, 1f);_animator.SetIKRotationWeight(AvatarIKGoal.LeftHand, 1f);_animator.SetIKPositionWeight(AvatarIKGoal.LeftFoot, 1f);_animator.SetIKRotationWeight(AvatarIKGoal.LeftFoot, 1f);_animator.SetIKPositionWeight(AvatarIKGoal.RightHand, 1f);_animator.SetIKRotationWeight(AvatarIKGoal.RightHand, 1f);_animator.SetIKPositionWeight(AvatarIKGoal.RightFoot, 1f);_animator.SetIKRotationWeight(AvatarIKGoal.RightFoot, 1f);if (leftHandObj != null){// 设置左手根据目标点而旋转移动父骨骼节点_animator.SetIKPosition(AvatarIKGoal.LeftHand, leftHandObj.position);_animator.SetIKRotation(AvatarIKGoal.LeftHand, leftHandObj.rotation);}if (leftFootObj != null){// 设置左脚根据目标点而旋转移动父骨骼节点_animator.SetIKPosition(AvatarIKGoal.LeftFoot, leftFootObj.position);_animator.SetIKRotation(AvatarIKGoal.LeftFoot, leftFootObj.rotation);}if (rightHandObj != null){// 设置右手根据目标点而旋转移动父骨骼节点_animator.SetIKPosition(AvatarIKGoal.RightHand, rightHandObj.position);_animator.SetIKRotation(AvatarIKGoal.RightHand, rightHandObj.rotation);}if (rightFootObj != null){// 设置右脚根据目标点而旋转移动父骨骼节点_animator.SetIKPosition(AvatarIKGoal.RightFoot, rightFootObj.position);_animator.SetIKRotation(AvatarIKGoal.RightFoot, rightFootObj.rotation);}}}
}
目录结构
Unity(三十七):3D模型动画、脚本控制模型骨骼IK动画相关推荐
- 实验三 lr分析器的设计与实现_三电平ZVS半桥的控制模型与仿真 基于PSPICE
前言: 因为最近有研究一些三电平的东西,所以找出了15年写的TL移相桥的文章,也算是旧文新发.必须要说的,5年前水平有限哈(但是蛮认真的),如果有错误请见谅. 正文:3650字 22图 预计阅读时间 ...
- UnityDOTween动画脚本控制播放与暂停。
Unity3D DOTween 动画播放与暂停的脚本控制 通过点击蝴蝶激活DOTweenPath使蝴蝶按照一定的轨迹运动后回到原来的位置,当蝴蝶回到原位置后,精灵动画激活,精灵从天而降. 蝴蝶点击事件 ...
- 17.Unity2D 横版 骨骼动画 之 动画中局部骨骼旋转+多层动画共同控制+局部骨骼索敌攻击
主目录 承接上节课 16.Unity2D 横版 骨骼动画 之 单张PSB图+PS像素画软件_ζั͡ ั͡雾 ั͡狼 ั͡✾的博客-CSDN博客上一节课我们学习了单张的切片图,是最简单的一种骨骼动画,但 ...
- unity 平移图片_Unity3D研究院之脚本实现模型的平移与旋转(六)
123 说: 雨松大大,有个问题想请教一下,我用UNET构建了个小场景,在电脑上可以客户端可以连接到服务器,Windows和Linux都可以,发布到安卓缺连不了,这是问什么呢 说: 求教一下,刚刚接触 ...
- 不同骨骼共享动画蓝图
在实际项目中,开发者有时希望不同的骨架间共享同一套动画蓝图,尤其是状态机的重用,从而实现动画转换逻辑的统一的配置.实际运行时仍然使用骨架对应的动画资源.例如不同种类怪物的动画状态机共享. 引擎中的动画 ...
- 【转】浅析Android动画(二),属性动画高级实例探究
2019独角兽企业重金招聘Python工程师标准>>> ObjectAnimator实现属性动画 为了写好Android动画这几篇博客,在动笔之前我是下过很大决心的,我对自己的要求是 ...
- Unity UI或3d模型的动画控制(Animation类)
文章目录 Animation动画控制类 一.动画设置: 二.模型的动作选择: 三.关键方法: 四:实践展示: 五.控制模型移动: Animation动画控制类 在Unity中,我们可以使用2D的Spi ...
- 【Unity 工具,简单学习】DoTween,脚本控制动画工具
DOTween:脚本控制动画工具 简单介绍 安装 简单使用 eg.1 简单移动,跳动 eg2. 缓动 Easing(动画插值) eg3. 循环 Looping eg4. 变换颜色,变换大小 eg5. ...
- 2022-07-06 Unity核心9——3D动画
文章目录 一.3D 动画的使用 二.动画分层和遮罩 三.动画 1D 混合 四.动画 2D 混合 五.动画子状态机 六.动画 IK 控制 七.动画目标匹配 八.状态机行为脚本 九.状态机复用 十.角色控 ...
最新文章
- 云效(原RDC)如何构建一个基于Maven的Java项目
- TMG 2010 建立站对站***隧道
- Vue CLI 3.0脚手架如何在本地配置mock数据
- 中国二手房行业发展形势与“十四五”前景规划建议报告2022-2028年
- Oracle数据库,当DML操作时执行触发器记录日志
- react sql格式化_为SQL Server数据库损坏做准备; 初步React与分析
- Microsoft visual FoxPro使用教程--添加csv文件数据到dbf文件中
- 基于javaweb+springboot的企业员工绩效工资管理系统(java+SpringBoot+FreeMarker+Mysql)
- python程序员前景-一个6年Python程序员的工作感悟,送给还在迷茫的你
- 【包邮送书活动】20210928期-开奖通知
- python:输出10行的杨辉三角 - 二项式的n次方展开系数
- win10应用已被java安全阻止,win10系统不能运行java提示“应用程序已被安全设置被阻止”的图文方法...
- 【Python】python脚本实例
- 2022全网最全的持续集成基础【你知道的和不知道都在这里】
- 多元线性回归分析理论详解及SPSS结果分析
- php dateparse,PHP date_parse_from_format() 函数用法及示例
- 符号函数(sign function)性质及应用
- Cannot resolve module 'fs'
- 网站推广最实用不过的七种方法
- 假币问题 (java)居然有假币!!!
热门文章
- 统计一个数所有质因数的个数
- Linux下如何查看 CPU 信息, 包括位数和多核信息
- p2p android端口,[收藏] 常见p2p软件端口、IP
- 动力电池系统介绍(九)——驱动电路
- 发货100个人虚拟商品自动发货系统PHP源码
- dg和ogg的区别--oracle数据库
- Android 仿 iphone 自定义滚动选择器
- 【论文笔记】EPro-PnP == Tongji U Alibaba DAMO ==CVPR‘2022 Best Student Paper
- 存储器金字塔层次结构
- 历史-大秦帝国1-4