Spine是一个很好的制作2D骨骼动画的软件,其中提供的混合(mix)动画功能可以很柔和过度两个不同的动画,但在混合时期,稍有不善,非常容易出现各种错乱。在Spine2D骨骼动画群上,有人提出全K帧、K透明轴等等方法,这些方法往往只是恰好解决了一些问题,但还有相当一部分潜在的问题还是可能发生的。

  在使用过程中,我发现Spine的错乱问题主要表现在以下两个方面:

  1. Slot位置下,A动画中有abcd四个时间轴,而B动画只有abc三个时间轴,那么从A切换到B时,切换时d轴的状态(纹理或色彩)可能会残留到B动画上(如A是攻击动画,B是行走动画,d是特效轴)。如果是制作叠加动画(会同时播两个动画,比如边跑边打),那么可能不需要全部补齐,这种要视需要而定。

  2. Slot位置下,A动画与B动画混合时期(●表示关键帧):

    A:●---------------------------●------

    B:                              ●-------------------------------

                 |混合时期|

    在这种状态下,由于B动画设置了纹理之后,A动画又设置了纹理,混合时间之后,Slot位置下的纹理是A动画的纹理,这时候纹理错乱了,这种不能通过K帧解决,因为需要注意的问题太多了。

  如果以上两个问题都解决了,那么混合动画基本就没有什么问题了(目前我项目中还没有发现其它问题)。

  对于问题1,原则上,A动画有的轴,B动画也必须中,如果B动画中没有,则自动为B动画以setup pose状态为基准生成这条轴(纹理、变换、色彩等)。补齐及二制作转换脚本请见github

  对于问题2,修改spine-runtime中的Animation.c文件中函数_spAttachmentTimeline_apply中的代码:将"if (self->frames[frameIndex] < lastTime) return;"改为"if (self->frames[frameIndex] < lastTime && 1 - alpha <= FLT_EPSILON) return;", 并且在文件开始部分添加"#include <float.h>"。alpha(0~1)参数表示是混合进度,原理很简单,在混合时期一直让新的动画轴去设置纹理。

解决Spine骨骼混合动画错乱问题的更多相关文章

  1. 使用spine骨骼动画制作的libgdx游戏

    (官网:www.libgdx.cn) Super Spineboy是一个使用Spine和libgdx开发的跨平台游戏(Windows,Mac,Linux),Spine是一个2D游戏动画工具.Super ...

  2. 在libGDX中使用Spine骨骼动画

    首先,github是个宝库,实践流的读者可以直接看例子进行学习 1.这是Spine官方给出的例子 https://github.com/EsotericSoftware/spine-superspin ...

  3. spine骨骼动画组件使用详解

    1. spine骨骼动画工具 骨骼动画: 把动画打散, 通过工具,调骨骼的运动等来形成动画spine是一个非常流行的2D骨骼动画制作工具spine 动画美术人员导出3个文件:    (1) .png文 ...

  4. 记录 Spine骨骼动画导入unity 步骤[unity3d 4.6.6版本 2d动画]

    1:准备好unity使用Spine所需要的运行库,可到如下地址 https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine ...

  5. 骨骼蒙皮动画(SkinnedMesh)

    骨骼蒙皮动画也就是SkinnedMesh,应该是目前用的最多的3D模型动画了.因为他可以解决关节动画的裂缝问题,而且原理简单,效果出色,所以今天详细的谈一下骨骼蒙皮动画的相关知识. 关节动画中使用的是 ...

  6. 骨骼蒙皮动画(SkinnedMesh Animation)的实现

    http://blog.csdn.net/zjull/article/details/11529695 1.简介 骨骼蒙皮动画,简称骨骼动画,因其占用磁盘空间少并且动画效果好被广泛用于3D游戏中,它把 ...

  7. 骨骼蒙皮动画(SkinnedMesh)的原理解析(一)

    http://blog.csdn.net/jimoshuicao/article/details/9253999 一)3D模型动画基本原理和分类 3D模型动画的基本原理是让模型中各顶点的位置随时间变化 ...

  8. AndroidUI 视图动画-混合动画效果 (AnimationSet)/动画效果监听

    在前面介绍了几种动画效果:透明动画效果(AlphsAnimation).移动动画效果(TranslateAnimation).旋转动画效果(RotateAnimation).缩放动画效果(ScaleA ...

  9. UI设计篇·入门篇·简单动画的实现,透明动画/旋转动画/移动动画/缩放动画,混合动画效果的实现,为动画设置监听事件,自定义动画的方法

    基本的动画构成共有四种:透明动画/旋转动画/移动动画/缩放动画. 配置动画的方式有两种,一种是直接使用代码来配置动画效果,另一种是使用xml文档配置动画效果 相比而言,用xml文档写出来的动画效果,写 ...

随机推荐

  1. 关于lwip移植到ucsos-ii平台的遇到的问题(一)

    移植的步骤参照<Day_Day_Up笔记之uCOS-II_LwIP_在_STM32F107_上移植>,<uCOS平台下的LwIP移植笔记>,<嵌入式网络那些事>. ...

  2. #HTML:無序、有序與定義清單

    #HTML:無序.有序與定義清單 Maplewing 于 星期六, 12/10/2013 - 09:48 提交 清單在網頁中是很常使用到的東西,故多少還是要了解一下.在HTML中有三種不太一樣的清單, ...

  3. oracle 归档日志

    归档日志(Archive Log)是非活动的重做日志备份.通过使用归档日志,可以保留所有重做历史记录,当数据库处于ARCHIVELOG模式并进行日志切换式,后台进程ARCH会将重做日志的内容保存到归档 ...

  4. UIView点击事件。弹出视图,背景虚化。

    @interface CountryViewController //背景 @property (strong, nonatomic) UIView *BackView; end //设置背景虚化 - ...

  5. Python开发入门与实战19-Windows Azure web 应用部署

    19. 微软云web应用部署 上一章节我们介绍了如何实现在微软云通过虚拟机部署我们的在python django应用,本章我们来介绍如何Windows Azure上部署通过部署网站的方式来部署我们的应 ...

  6. 谈谈对hibernate的理解

    它是ORM思想的一个实现,对JDBC进行了很好的封装,它通过配置使JavaBean对象和数据库表之间进行映射,并提供对增.删.改.查便利的操作方法,同时支持事务处理,它对数据库记录还提供了缓存机制,提 ...

  7. Centos配置国内yum源

    网易(163)yum源是国内最好的yum源之一 ,无论是速度还是软件版本,都非常的不错,将yum源设置为163yum,可以提升软件包安装和更新的速度,同时避免一些常见软件版本无法找到.具体设置方法如下 ...

  8. 到入百度LSS framework Reason: image not found

    dyld: Library not loaded: @rpath/VideoCore.framework/VideoCore Referenced from: /var/containers/Bund ...

  9. thinkPHP(待更新)

    一些函数 1.  set_include_path().get_include_path() .PATH_SEPARATOR 设置php加载的路径 2.  register_shutdown_func ...

  10. select标签让文字垂直居中问题

    直接在select样式中添加:padding:npx 0; n的大小视select标签的高度而定.一般为8px左右.