手册上关于层顺序的介绍基本没有,只是一个不明所以的Q&A一带而过:

层的排序是否重要?

是的。层的优先级是按顺序从上到下的。层设置为 override 将始终覆盖先前的层(如果层有遮罩,则基于其遮罩)。

基础层的权重值是否应始终设置为 1?或者在使用其他层时权重是否应为 0?

基础层权重始终为 1,覆盖层将完全覆盖基础层。

(原文:)

Does the ordering of the layers matter?

Yes. Layers are evaluated from top to bottom in order. Layers set to override will always override the previous layers (based on their mask, if they have a mask).

Should the weight value of the base layer always be set to one or should the weight be zero when using another layer?

The base layer weight is always 1 and override layers will completely override the base layer.

如何理解“优先级是按顺序从上到下”?

以及 两种混合模式 overrideAdditive 如何理解 ?

实践出真知。

实验方法:

我有一个2D角色,默认动画是 “闲置状态”(全身的动画,包含手部),在默认层 BaseLayer 。

它还有一个“开枪动作”(手部的特别动画),放在新建的动画层 arms 层

为了明确不同混合方式达到的效果

  • 闲置状态 的动画中,我将身体变为蓝色
  • 开枪动作 中,我将身体变成红色

预期的结果是: 开枪时,如实播放开枪动作,身体呈现红色,则成功。如果是蓝色,失败。

实验结果记录:

层顺序

arms层的

混合模式

arms层的

权重

结果

上:Base Layer

下:arms

override 1 红色(成功)
override 0.5 紫色
additive 1 蓝色

上:arms

下:Base Layer

override 1 蓝色
additive 1 蓝色

override 混合,权重 0.5,得到紫色

结论分析

  • 顺序很重要:下方的层,会覆盖上方的层。

    • 现在回到一开始的问题:如何理解“优先级是按顺序从上到下”?我的理解是:先计算上方的层,后计算下方的层,后面的结果可以修改之前的结果。跟Sprite的Sort Order一样去理解就可以了。
  • override 模式: 覆盖位于它上方的层。
    • 例如,多个层都控制某一属性,override层会覆盖其上方的层的效果,覆盖的程度取决于权重:
    • 权重=1时,可以完全覆盖(所以结果呈红色);权重=0时,等于完全没有效果,以此类推。所以在上面的实验中,权重=0.5时,按比例混合其效果(0.5红+0.5蓝 = 紫)。
  • additive 模式:
    • 将动画“加”在之前的层上 (见下文)
  • 所以一般的做法就是,将 “特别的” 动画放在下面的层,选择override,权重=1,就可以完美播放该层的动画。

以上个人解读,如有谬误欢迎指正


Edit : 感谢评论区朋友的指正,重新看了下文档,确实由于我实验方法的特殊性,造成了误导性的结论(关于Additive的混合方式的解读),已更正。

关于Additive

文档说明:

  • Select Override to use the animation on this layer, replacing the animation on previous layers.
  • Select Additive to add the animation on this layer on top of the animation from previous layers.
    For additive blending to be successful, the animation on the additive layer must contain the same properties as the previous layers.

我翻译:

  • 使用 Override 模式:用这一层的动画替换掉之前层的动画。
  • 使用 Additive 模式:把这一层的动画“”在之前层的动画上。为了成功混合,Additive层的动画必须包含与之前层相同的属性。

重新实验了一下,对于Additive层的“加”我是这样理解的:

  • 有些属性可以“加”,比如transform(位置,旋转等)

    • 例如,我在BaseLayer对物体的position做了【向左每秒移动1单位】的动画,如果在Additive层对其做【向左每秒移动2单位】动画,得到的结果是:该对象【向左每秒移动3单位】。
  • 而颜色属性似乎不能”加“,本以为可以简单地得到”红+蓝=紫“这样的结果,然而在Additive层,它并不能得到这个结果,反而override层将权重调到0.5时, 得到了紫色的混合结果。
    • (个人猜测:为什么颜色属性不能Additive,可能涉及到叠加的算法?颜色叠加的模式太多了,没有一个通用的定义,红+蓝=紫只是一个通俗的结论,但具体到把颜色作为RGBA的float4变量时,加法并不等于“叠加”。叠加是乘法,得到的结果通常视觉上是变暗,而加法得到的结果是变亮。颜色不像transform可以简单做加法。)
  • 还有就是帧动画,放在Additive层的sprite属性会直接替换掉前面层的。(权重大于0.5时)

【unity实践记录】动画层的顺序和混合模式Override/Additive相关推荐

  1. Unity学习记录——模型与动画

    Unity学习记录--模型与动画 前言 ​ 本文是中山大学软件工程学院2020级3d游戏编程与设计的作业7 编程题:智能巡逻兵 1.学习参考 ​ 除去老师在课堂上讲的内容,本次作业代码与操作主要参考了 ...

  2. unity新动画系统之动画层和动画遮罩

    这一节来说说unity动画层layer和遮罩avatarMask: weight 权重,对应着这一层动画在所有层动画中所占的比例.以上图来说明,new layer中的weight为0,模型的动画效果就 ...

  3. Unity Mecanim动画系统 之 动画层(Layers)和 动画遮罩(Avatar Mask)的简单使用

    Unity Mecanim动画系统 之 动画层(Layers)和 动画遮罩(Avatar Mask)的简单使用 目录 Unity Mecanim动画系统 之 动画层(Layers)和 动画遮罩(Ava ...

  4. Unity的Animator的动画层(Layer)

    需求是这样的,角色在待机和跑动中都可以攻击也可能受击,但如果是跑动切到攻击和受击时同时还要保持跑动的动画,同样的待机切换的,执行完后就是待机动画.如果只用一层,Animator Controller ...

  5. 巧用Unity的Animator的动画层(Layer)实现跑动中攻击和受击

    需求是这样的,角色在待机和跑动中都可以攻击也可能受击,但如果是跑动切到攻击和受击时同时还要保持跑动的动画,同样的待机切换的,执行完后就是待机动画.如果只用一层,Animator Controller ...

  6. Unity(动画层 IK动画)

    动画层 关于动画层的使用        →        用于融合不同部位的动画 动画层设置 Weight(权重)        →        该层动画执行的比例 Mask(遮罩)        ...

  7. Unity中的动画系统

    学习动画系统过程中的一些笔记 概述 Unity 的动画系统基于动画剪辑(Animation Clips)的概念,每个动画剪辑可以被认为是一个单一的线性记录,由动画状态机(Animator Contro ...

  8. 专访 Unity 技术总监 Mark Schoennagel、杨栋:基于 Unity 制作影视动画的几点建议!

    伴随着移动互联网.VR/AR.物联网等领域的兴起,智能手机.平板.头显以及更多可穿戴设备的诞生为游戏行业带来了百花齐放百家争鸣的繁荣景象.如今在游戏内容越来越丰富的同时,诸多的传统行业如影视.动画纷纷 ...

  9. Unity载入骨骼动画详解

    Spine Skeleton Animation(2D骨骼动画) 骨骼动画 首先我们来看到底什么是骨骼动画: 在早期的机器上,渲染本身已经占用了很多CPU资源,因此,对于渲染,往往采取的是一种空间换时 ...

最新文章

  1. 计算机书籍-机器学习预测分析Go语言实现
  2. Mysql 锁的机制
  3. SQL_MODE设置
  4. 并行编程——内存模型之缓存一致性
  5. 这8种SQL用法,我用错吗?求答案!!!
  6. html中padding和margin的区别和用法与存在的bug消除
  7. 超硬核!学霸把操作系统经典算法给敲完了!要知行合一
  8. Java 分割字符串
  9. 易语言怎么判断文件是否一样_怎么判断专利代理人或专利代理机构是否靠谱?...
  10. Java基础-Collection集合接口(List及Set)
  11. 固定编辑框输入上限和下限_两种截然不同的汉字输入场景
  12. mybatis如何处理参数
  13. 深圳中电港 招聘FAE(FPGA Lattice)
  14. 香农编码用matlab实验报告,香农编码实验报告
  15. 数据库开源项目_开源项目贴纸库
  16. Python-计算三角形边长和面积
  17. tokenizer.tokenize(), tokenizer.encode() , tokenizer.encode_plus() 方法介绍及其区别
  18. 弹幕视频播放app案例分析
  19. 软件工程作业——《人件》读书笔记
  20. wordpress主题安装,wp主题模板安装技巧

热门文章

  1. 企业关键数据资产如何保护?腾讯安全联合“数据安全推进计划”落地主题沙龙
  2. First order logic——Inference
  3. dom 兄弟_DOM技巧和技巧:父母,孩子和兄弟姐妹
  4. 服务器带宽计算方式?
  5. Activity生命周期及启动模式详解
  6. Tomcat启动时,webapps目录下的项目没有加载
  7. PayPal,Stripe,第三方支付接口跳转轮询系统
  8. Android Jetpack: 利用 Palette 进行图片取色 | 开发者说·DTalk
  9. python wraps_python wraps那点儿事儿
  10. python输出学生信息_python实现学生信息系统