Unity(2022.3.41LTS) - 动画融合术

news2024/9/22 7:39:11

目录

一、动画融合的概念

二、动画融合的类型

三、动画融合的实现方法

1.简介

2.创建新的图层

3.创建遮罩

4.遮罩配置

5.预览效果

6.使用代码灵活控制

7.全部代码

四、动画融合的优化和注意事项



一、动画融合的概念

在 Unity 中,动画融合是一种强大的技术,用于在不同动画之间实现平滑过渡和混合效果。

动画融合是指将两个或多个动画进行混合,以产生一个新的动画效果。这种混合可以基于不同的因素,如动画的权重、过渡时间、动画参数等。通过动画融合,可以实现更加自然和流畅的动画效果,避免动画之间的生硬切换。

比如把一个走路的下半身动作,和拿枪站立的上半身动作,融合,就可以做出来拿枪行走的动作.

二、动画融合的类型

  1. 线性融合

    • 线性融合是最简单的动画融合方式,它将两个动画按照一定的权重进行线性混合。例如,如果有两个动画 A 和 B,权重分别为 0.5 和 0.5,那么融合后的动画将是 A 和 B 的平均值。
    • 线性融合的优点是简单易懂,计算量小,适用于简单的动画融合场景。缺点是融合效果比较生硬,不能很好地处理复杂的动画过渡。
  2. 基于参数的融合

    • 基于参数的融合是一种更加灵活的动画融合方式,它根据一个或多个动画参数来控制动画的融合程度。例如,可以根据角色的速度参数来控制行走动画和奔跑动画的融合程度,当速度较慢时,主要播放行走动画;当速度较快时,逐渐增加奔跑动画的权重,实现从行走到奔跑的平滑过渡。
    • 基于参数的融合需要在动画控制器中设置动画参数,并在脚本中动态地修改这些参数的值。这种融合方式可以实现更加复杂和自然的动画效果,但需要一定的编程经验和对动画系统的深入理解。
  3. 分层融合

    • 分层融合是一种将动画分为不同层次进行融合的方式。每个层次可以包含一个或多个动画,并且可以设置不同的权重和过渡时间。例如,可以将角色的动画分为基础层、动作层和特效层。基础层包含角色的基本动作,如站立、行走、奔跑等;动作层包含角色的特殊动作,如攻击、跳跃、闪避等;特效层包含角色的特效动画,如火焰、光芒、粒子效果等。
    • 分层融合可以实现更加复杂和丰富的动画效果,同时也可以提高动画的可维护性和可扩展性。但是,分层融合需要更加复杂的动画控制器设置和脚本控制,对开发者的技术要求也更高。

三、动画融合的实现方法

1.简介

  1. 使用动画控制器

    • Unity 的动画控制器(Animator Controller)是实现动画融合的主要工具。在动画控制器中,可以设置不同动画状态之间的过渡条件和过渡时间,以及动画参数和动画层等。通过合理地设置动画控制器,可以实现各种类型的动画融合效果。
    • 例如,可以在动画控制器中设置一个基于速度参数的过渡条件,当角色的速度超过一定值时,从行走动画过渡到奔跑动画。同时,可以设置过渡时间和过渡曲线,使过渡更加自然流畅。
  2. 使用脚本控制

    • 除了使用动画控制器,还可以通过脚本控制来实现动画融合。在脚本中,可以动态地修改动画控制器中的动画参数和权重,以实现不同的动画融合效果。
    • 例如,可以在角色的移动脚本中,根据角色的速度动态地修改动画控制器中的速度参数,从而控制行走动画和奔跑动画的融合程度。同时,也可以在脚本中直接控制动画的播放和暂停,以实现更加复杂的动画效果。

2.创建新的图层

点击加号,并且命名为RunLayer

3.创建遮罩

点击设置按钮

在弹出的页面选择遮罩.

如果为空的话,就创建一个新的遮罩

4.遮罩配置

点击遮罩再检查器页面配置,

先把模型的骨架拖进去,

然后鼠标点击,把不需要这个图层控制禁用.

然后把这个图层的配置选择这个新建的遮罩,并且把权重更改为1.

5.预览效果

就可以看到人物的下半身和上半身动作不一致了.

这个效果不明显,再换一个.

把跑步的上半身换上

6.使用代码灵活控制

更改权重默认为0.

这时候播放正常

然后使用脚本

   if (Input.GetKeyDown(KeyCode.Space))
   {
       animator.SetLayerWeight(1, 1);
   }

按下空格之后就会发生变化.

7.全部代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AbunatorCon : MonoBehaviour
{
    private Animator animator;
    // Start is called before the first frame update
    void Start()
    {
        animator = GetComponent<Animator>();


    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            animator.SetLayerWeight(1, 1);
        }
        
    }
}

四、动画融合的优化和注意事项

  1. 优化动画资源

    • 动画融合需要同时播放多个动画,因此会占用一定的内存和计算资源。为了提高性能,可以优化动画资源,减少动画的顶点数量和关键帧数量,以及使用动画压缩等技术。
  2. 避免过渡冲突

    • 在动画融合过程中,可能会出现过渡冲突的情况,即多个过渡条件同时满足,导致动画状态机无法确定应该过渡到哪个动画状态。为了避免过渡冲突,可以设置过渡优先级,或者使用条件逻辑来控制过渡的触发。
  3. 测试和调试

    • 动画融合是一种比较复杂的技术,需要进行充分的测试和调试,以确保动画效果的正确性和稳定性。可以使用 Unity 的动画预览窗口和调试工具,以及在游戏中进行实际测试,来检查动画融合的效果和性能。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安装 Let‘s Encrypt certbot 生成多个域名免费 https 证书实录(linux pip 方式)

本文记录了我在华为云 EulerOS linux 云主机使用 python pip 方式安装配置 Let’s Encrypt certbot, 并为我的网站的多个域名生成免费 https 证书的整个过程, 包括 python 环境配置, 下载 certbot 及 certbot-nginx, 一次性生成多个域名的证书及注意事项, 以及最后配置 certbot…

5G农业大数据中心顶层设计

1. 政策背景与规划 国家政策大力推动大数据发展和应用&#xff0c;特别是农业农村信息化发展规划&#xff0c;强调数字化在农业现代化中的关键作用。《数字农业农村发展规划&#xff08;2019-2025年&#xff09;》明确了农业农村数字化的重要性。 2. 国际农业大数据现状 美国…

超图iServer 11i在Java中调用REST接口点线面增删改查方法

一、引入iServer的Jar包 需要到iServer安装目录/webapps/iserver/WEB-INF/lib下寻找以下几个jar包&#xff0c;把它引入到项目里&#xff1a; iserver-all-*.jar service-model-*.jar rest-sdk-*.jar然后再引入几个maven依赖包&#xff1a; <dependency><groupId&g…

MyBaits 二级缓存原理

优质博文&#xff1a;IT-BLOG-CN 一级缓存原理 默认关闭&#xff0c;一般不建议使用。为什么不建议使用我们要清楚。 先给不建议使用的原因&#xff1a; MyBatis的二级缓存是和命名空间绑定的&#xff0c;所以通常情况下每一个Mapper映射文件都拥有自己的二级缓存&#xff0c;…

关于谷歌账号的三个“错误的”问题:谷歌有客服吗?登录不了的账号如何注销?登录不了的账号绑定的手机还能注册新账号吗?

这段时间GG账号服务收到很多朋友的反馈&#xff0c;其中有一些具有典型的问题&#xff0c;而且是错误的问题——主要是对谷歌账号或者谷歌账号使用的误解&#xff0c;从而浪费了时间&#xff0c;或者走了弯路&#xff0c;或者反复试错给账号带来了更大的风险。 今天就来给大家…

Spring 框架下 Redis 数据结构的全面解析

Hello , 大家好 , 这个专栏给大家带来的是 Redis 系列 ! 本篇文章给大家带来的是如何通过 Spring 来操作 Redis 中的常见数据结构 , 以及如何通过代码执行 Redis 中的原生命令 . 本专栏旨在为初学者提供一个全面的 Redis 学习路径&#xff0c;从基础概念到实际应用&#xff0c;…

【C++题解】1088 - 求两个数M和N的最大公约数

问题四&#xff1a;1088 - 求两个数M和N的最大公约数 类型&#xff1a;需要找规律的循环。 题目描述&#xff1a; 求两个正整整数 M 和 N 的最大公约数(M&#xff0c;N都在长整型范围内&#xff09; 输入&#xff1a; 输入一行&#xff0c;包括两个正整数。 输出&#xff…

Antv a-table 表格行/列合并,在合并后的td中使用插槽slot

【需求】 这次的表格需要实现行列合并&#xff0c;并且要在合并后的 td 中使用子组件或弹出弹窗&#xff0c;难点在于&#xff1a; 1. 根据提供的data&#xff0c;自行判断是否合并项的 getRowspan方法 2. customCell 、scopedSlots 冲突导致的子组件无法展示 &#xff08…

Cesium 实战 - 自定义纹理材质 - 流动线(精灵线)

Cesium 实战 - 自定义纹理材质 - 流动线(精灵线) 核心代码完整代码在线示例Cesium 给实体对象(Entity)提供了很多实用的样式,基本满足普通项目需求; 但是作为 WebGL 引擎,肯定不够丰富,尤其是动态效果样式。 对于实体对象(Entity),可以通过自定义材质,实现各种动…

【YOLOv8系列】YOLOv8的GUI界面设计;在电脑本地实现YOLOv8的可视化交互界面设计(对摄像头的实时画面进行分类)

背景: 最近在研究YOLOv8的应用,并且已经在自己的笔记本环境中跑通了YOLOv8的检测和分类算法,训练、验证、预测等功能均已实现;也通过自己的数据集训练出了自己的模型(权重);且之前也做了一个webUI界面,对YOLOv8检测和分类的结果进行展示;但是如果在本地的GUI界面调用摄…

Python pip 更换镜像源

文章目录 1 概述1.1 默认镜像&#xff0c;速度慢&#xff0c;易报错1.2 常用国内镜像源 2 更改镜像源2.1 临时更改2.2 永久更改2.2.1 查看配置源及配置文件2.2.2 编辑 pip.ini2.2.3 配置后的效果 1 概述 1.1 默认镜像&#xff0c;速度慢&#xff0c;易报错 默认镜像&#xff…

导出硬盘所有文件名到txt文本文件——C#学习笔记

下面的示例演示如何使用递归遍历目录树。递归方法很简洁&#xff0c;但如果目录树很大且嵌套很深&#xff0c;则有可能会引起堆栈溢出异常。 对于所处理的特定异常以及在每个文件和文件夹上执行的特定操作&#xff0c;都只是作为示例提供。您应该修改此代码来满足自己特定的需…

分类学习器(Classification Learner App)MATLAB

在MATLAB中&#xff0c;分类学习器用于构建和评估分类模型。MATLAB提供了一些工具和功能&#xff0c;帮助你进行分类任务&#xff0c;例如分类学习器应用程序、统计和机器学习工具箱中的函数等。 导入数据 我们在打开应用程序之前的第一步将是导入我们将在工作区使用的数据。…

新品上市丨科学级新款制冷相机sM4040A/sM4040B

sM4040B科学级显微制冷相机 特性 sM4040B搭载了 GSENSE4040BSI 3.2 英寸图像传感器&#xff0c;针对传感器固有的热噪声&#xff0c;专门设计了高效制冷模块&#xff0c;使得相机传感器的工作温度比环境温度低达 35-40 度。针对制冷相机常见的低温结雾现象设计了防结雾机制&a…

Serverless 应用引擎 SAE 助力袋拉拉研发提效 70%

作者&#xff1a;百潼 医院环保 IOT 设备的引领者&#xff1a;机汽猫 机汽猫是⼀家致⼒于通过投放⾃助取袋设备&#xff0c;为医院场景提供新型环保袋交付⽅式的科技公司。它成⽴于 2019 年&#xff0c;旗下品牌袋拉拉&#xff08;DaiLala&#xff09;通过投放⾃助取袋机&…

《Cloud Native Data Center Networking》(云原生数据中心网络设计)读书笔记 -- 10数据中心中的BGP

本章解答以下问题&#xff1a; ASN&#xff0c;团体&#xff08;community&#xff09;&#xff0c;属性&#xff08;attribute&#xff09;&#xff0c;最佳路径这些BGP术语是什么疑似&#xff1f;在数据中心中应该使用eBGP还是iBGP?在数据中心使用BGP时&#xff0c;应采用什…

序列化和反序列化之Serializable与Parcelable的异同

目录 序列化和反序列化Serializable 和 Parcelable 的区别Serializable特点Parcelable特点Serializable、Parcelable 使用场景区别总结 在 Android 开发中&#xff0c;序列化和反序列化是将对象转换为字节流以及从字节流还原对象的过程。Java 提供了 Serializable 接口&#xf…

jmeter中响应时间、TPS、服务器资源图表

一、响应时间图表 jmeter中的聚合报告已经足够显示响应时间&#xff0c;但是不会显示很详细&#xff0c;下面使用监听器中的插件查看&#xff0c; 添加后&#xff0c;可以不用更改任何配置&#xff0c;直接使用默认即可统计响应时间 还是抓取百度1分钟查看数据&#xff0c;也是…

Meta:大语言模型可以通过自我批判取得大幅提升!

夕小瑶科技说 原创 作者 | 谢年年 论文的审稿模式想必大家都不会陌生&#xff0c;一篇论文除了分配多个评审&#xff0c;最后还将由PC综合评估各位审稿人的reviews撰写meta-review。 最近&#xff0c;来自Meta的研究团队将这一模式引进到大模型的对齐训练中。模型同时扮演 执…

一. 从Hive开始

1. 怎么理解Hive Hive不能理解成一个传统意义上的数据库&#xff0c;应该理解成一个解决方案。 是Hadoop在hdfs和mapreduce之后才出现的一个结构化数据处理的解决方案。 Hdfs解决了大数据的存储问题&#xff0c;mapreduce解决了数据的计算问题。 一切似乎很美好。 但是使用成本…