unity骨骼动画学习

  • 问题1: 为角色选择骨骼动画模式而非传统网格动画模式
  • 问题2: 曲线
  • 问题3: layer
  • 问题4:逆向运动学
  • 问题5 逆向动画学:末端节点动画
  • 问题6 混合树blender tree
  • 问题7 子状态

本文所有学习内容来自
夏村散人韩老师-unity入门教程


问题1: 为角色选择骨骼动画模式而非传统网格动画模式

解决方案:
在模型的inspector里面可以找到rig选项,把animation type从legacy改为humanoid,实现类人骨架动画系统。这个使得角色动画的重定向变得容易。
apply-config可看见。

接下来在standard assets中导入character

问题2: 曲线

描述:希望人物边吹泡泡边走,泡泡大小与跑步速度相关

解决方案:
曲线用于打通动画时间线和参数的隔阂。可以用脚本读取到当前动画播放状态。
取消根节点运动(Apply Root Motion)可以让角色原地跑步

创建新的Animator Controller物体,为它添加parameter。叫做curve value。再为它创建一个空状态,叫curve。

在humoid run的运动动作来源中观察inspector,其中可以为这个动作添加curve,命名要和Animator Controller中的参数(parameter)一致。比如curvevalue。为其选择合适的曲线。

创建sphere物体。在角色子结构中寻找到头部,把bubble拖拽为头部的一个子物体。

问题3: layer

描述:希望人物达到按下鼠标就射击,并且是边走边射击,或者边跑边射击

解决方案:
为Animator Controller创建新的layer并命名为ArmUp, 创建空状态并将动作Jump拖拽到该状态中。修改walk层和ArmUp层所占的权重,可以调整人物动作。
要分身体部位进行控制时(举手,腿正常走路):使用mask进行遮罩
除了override之外可以选叠加addictive。Sync功能可以直接使用其它层的动作逻辑,但是其中的动作都可以改变。比如走路跑步和受伤跑步的姿势的不同。

也可以用脚本控制layer的权重,实现鼠标按下增加抬手权重。、

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Layer : MonoBehaviour
{public float speed = 1f;private Animator anim = null;// Start is called before the first frame updatevoid Start(){anim = GetComponent<Animator>();}// Update is called once per framevoid Update(){if (Input.GetMouseButton(0)){float w = anim.GetLayerWeight(1) > 1 ? 1 : anim.GetLayerWeight(1) + speed * Time.deltaTime;anim.SetLayerWeight(1,w);}else{float w = anim.GetLayerWeight(1) < 0 ? 0 : anim.GetLayerWeight(1) - speed * Time.deltaTime;anim.SetLayerWeight(1, w);}}
}

问题4:逆向运动学

描述:我们前面介绍的动画是利用现有的动画片段或者是外部的文件,或者说我们内部利用场景化的方式,再unity编辑器下新生成的这个动画。我们叫做前向运动性。什么意思呢?就是每个骨骼的配置状态都是按照他的父亲骨骼,一层一层啊,来演算出来的。那么,但是有有些情况下我们需要。用到一个叫做逆向运动学。比如这个角色够一个东西,他的手,这个末端节点需要触碰到某个位置。那就至于说其他。骨骼这边应该怎么配置呢?需要有一种数学方法给他演算出来还得比较自然,还有些时候比如说我的脑袋是吧,眼睛看什么地方形成一个动画,它会移动。但是呢。我们并没有动画师来做出来的,我是按照你最终的它的朝向也好,它的位置也好,这个终端节点来逆向演算出来,其他节点应该如何配置。

解决方案:
注意在属性中点上IKpass
OnAnimatorIK()是进行IK解算时会自动调用的函数

using System.Collections;
using System.Collections.Generic;
using UnityEngine;[RequireComponent(typeof(Animator))]
public class IK : MonoBehaviour
{protected Animator anim;// Start is called before the first frame updatevoid Start(){anim = GetComponent<Animator>();}void OnAnimatorIK(){Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);Plane plane = new Plane(Vector3.up, transform.position);float enter = 0f;if (plane.Raycast(ray,out enter)){Vector3 target = ray.GetPoint(enter);anim.SetLookAtPosition(target);anim.SetLookAtWeight(1f);}}// Update is called once per framevoid Update(){}
}

问题5 逆向动画学:末端节点动画

问题6 混合树blender tree

描述:希望角色在猫腰走、走、跑和左转、右转动作之间自然过渡
解决方案:
transition是两个动画之间平滑过渡
blender tree则是多个动画作用于同一角色
在动画层中创建新blender tree,为之添加motion。为这个tree取名字叫speed。blend type为1.融合了走路、跑步、猫腰走。通过调整speed可以调整三个状态之间的过渡。

blend type为direct时,用3个参数控制3个状态时,可以融合三个状态,共同控制这个角色。点击Normalized Blend Value之后姿态会变得更自然。

blend type为2D Freeform Cartesian时,会将运动布点到二维平面作为关键点,任意点的姿态由周围相关的关键点插值得到。使用速度和转向两个参数作为坐标轴。speed和turn。然后为这个blender tree添加上向左转的走路,向右转的走路和向左跑步向右跑步的动画。分别设置这些动画的speed和turn值。之后就可用脚本操作speed和turn值来控制角色的左右转并跑步了。

使用多平台用户输入支持。CrossPlatformInput.

问题7 子状态

一系列状态来组成一个状态。
可以用trigger类型的参数来控制有条件的动作转换。比如在idle和jump动作之间make的transition里的condition栏加上类型为trigger的参数。
然后用脚本控制这个trigger参数。

unity骨骼动画学习相关推荐

  1. Unity 骨骼动画

    Unity做骨骼动画,人物跑步时,胯关节的横坐标世界坐标是不变的,最多变纵坐标上下移动胯部.这样画的动画,才会在播放时合理. 脚的落地点要是同一水平面的地面.

  2. Unity 骨骼动画模型变形

    目录 一.问题描述 二.问题截图 三.解决办法 检查办法1: 检查办法2: 一.问题描述 从Maya导出骨骼动画至Unity后,在播放动画时的某一帧发生形变.产生变形的原因,是由于模型权重问题导致骨骼 ...

  3. Unity骨骼动画优化

    一:骨骼动画的原理 用Unity做游戏经常会用到3D角色,也就会用到骨骼动画.骨骼动画对性能的影响其实非常大的,在说这个问题之前,先来说说骨骼动画的原理. 我之前做过多种骨骼动画,包括写过2D的骨骼动 ...

  4. 【Visual C++】游戏开发五十三 骨骼动画学习资料推荐打包下载

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8865942 作者:毛星云(浅墨 ...

  5. 第三十一章 Unity骨骼动画

    关于骨骼动画的原理,我们这里不再详细介绍,有不清楚的可以回去看DirectX课程和3dsMAX课程.接下来,我们来讲解一下Unity的骨骼动画系统.Unity 的动画系统基于动画剪辑(Animatio ...

  6. 【Unity 骨骼动画】骨骼IK

    关于骨骼动画 3D模型 → 绑骨骼 → 刷权重 → K动画 →.FBX 带有轴心的一个 长方体 , 子父节点首位相连. 刷权重 让模型和骨骼形成相对位置的关系, 可以将多个点分配给一个骨头 IK &a ...

  7. 基于英雄大作战龙奥的Unity骨骼动画初探

    一.将美术资源图片拖拽入Unity项目,命名为Model,将Texture Type设置为 Sprite(2D and UI),点击Apply,随后点击Sprite Editor绑定骨骼,为方便后续操 ...

  8. Unity 骨骼动画 Anima2D

    Unity从2018版本开始引入不少2D的新功能,在资源包里加入很多新功能,一定要开启预览模式可以看到新功能, 2D Animation,2D IK,2D Pixel Perfect,2D Sprit ...

  9. unity animator动画学习(1)

    人物模型: 导入人物模型骨架后,选择Rig,选择动画类型为 Humanoid,再选择生成Avator的方式.可以从已经建立好的avator开始,因为并没有建立过avator,所以笔者这里选择通过此模型 ...

  10. Unity学习笔记(7) Unity2D骨骼动画制作流程

    用骨骼动画最大的好处就是方便之后做换装系统. 无论对3Dor2D游戏都是这样的. 这篇博文记录一下2D骨骼动画的制作流程,参考b站麦扣的系列教程: https://space.bilibili.com ...

最新文章

  1. 实验5 编写调试有多个段的程序
  2. 20155222卢梓杰 课堂测试ch06补做
  3. 在Delphi7中调试COM
  4. 不同的编译器:GCC G++ C C++的区别
  5. 聊一聊Load Average
  6. JS Math对象(算数、四舍五入、随机数)
  7. GDKOI2018发烧记
  8. 实验吧-杂项-WTF?(python 01代码转图片)
  9. C++学习笔记(10)运算符重载,友元函数,友元类
  10. 神经网络在关系抽取中的应用
  11. stardict词典全集
  12. SecoClient 百度云安装包 亲测有效
  13. USB3.0接口定义浅析
  14. 如何用photoshop调出梦幻冷色调
  15. mysql ndb集群_mysql的ndb集群
  16. adb 重命名_adb 常用命令-转载
  17. 设备描述符请求失败解决
  18. 高效下载Google Drive中的大量文件
  19. 智能定位系统实验报告
  20. 【渝粤教育】国家开放大学2018年春季 0049-22T法律文书 参考试题

热门文章

  1. 全民写作一夜成名 Web2.0:作家造富路线图
  2. 工作中遇到大小端数据存储格式
  3. ios逆向工具theos tweak make编译错误集合
  4. Ubutu 12.04LTS 安装搜狗拼音输入法+搜狗皮肤 步骤详解
  5. java指令打印 驱动打印总结 打印不需要手动选择打印机 愿你编码半生 都不会用到
  6. 任务管理器中的PID是什么 怎么查看
  7. 谷歌统计代码使用方式
  8. Vuepress 如何引入百度统计和谷歌统计
  9. 完美卸载itunes
  10. Siebel学习笔记