解决Spine骨骼混合动画错乱问题
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骨骼混合动画错乱问题的更多相关文章
- 使用spine骨骼动画制作的libgdx游戏
(官网:www.libgdx.cn) Super Spineboy是一个使用Spine和libgdx开发的跨平台游戏(Windows,Mac,Linux),Spine是一个2D游戏动画工具.Super ...
- 在libGDX中使用Spine骨骼动画
首先,github是个宝库,实践流的读者可以直接看例子进行学习 1.这是Spine官方给出的例子 https://github.com/EsotericSoftware/spine-superspin ...
- spine骨骼动画组件使用详解
1. spine骨骼动画工具 骨骼动画: 把动画打散, 通过工具,调骨骼的运动等来形成动画spine是一个非常流行的2D骨骼动画制作工具spine 动画美术人员导出3个文件: (1) .png文 ...
- 记录 Spine骨骼动画导入unity 步骤[unity3d 4.6.6版本 2d动画]
1:准备好unity使用Spine所需要的运行库,可到如下地址 https://github.com/EsotericSoftware/spine-runtimes/tree/master/spine ...
- 骨骼蒙皮动画(SkinnedMesh)
骨骼蒙皮动画也就是SkinnedMesh,应该是目前用的最多的3D模型动画了.因为他可以解决关节动画的裂缝问题,而且原理简单,效果出色,所以今天详细的谈一下骨骼蒙皮动画的相关知识. 关节动画中使用的是 ...
- 骨骼蒙皮动画(SkinnedMesh Animation)的实现
http://blog.csdn.net/zjull/article/details/11529695 1.简介 骨骼蒙皮动画,简称骨骼动画,因其占用磁盘空间少并且动画效果好被广泛用于3D游戏中,它把 ...
- 骨骼蒙皮动画(SkinnedMesh)的原理解析(一)
http://blog.csdn.net/jimoshuicao/article/details/9253999 一)3D模型动画基本原理和分类 3D模型动画的基本原理是让模型中各顶点的位置随时间变化 ...
- AndroidUI 视图动画-混合动画效果 (AnimationSet)/动画效果监听
在前面介绍了几种动画效果:透明动画效果(AlphsAnimation).移动动画效果(TranslateAnimation).旋转动画效果(RotateAnimation).缩放动画效果(ScaleA ...
- UI设计篇·入门篇·简单动画的实现,透明动画/旋转动画/移动动画/缩放动画,混合动画效果的实现,为动画设置监听事件,自定义动画的方法
基本的动画构成共有四种:透明动画/旋转动画/移动动画/缩放动画. 配置动画的方式有两种,一种是直接使用代码来配置动画效果,另一种是使用xml文档配置动画效果 相比而言,用xml文档写出来的动画效果,写 ...
随机推荐
- Octave安装和使用
1. Installer Download octave4.0 gnuplot 5.0.4 2. Installation (1) Octave 安装Octave时提示发现系统装有Win8,继续安装 ...
- 百度地图结合echarts并添加行政区块
作者:LJaer链接:https://www.zhihu.com/question/49251513/answer/125728764来源:知乎<!DOCTYPE html> <ht ...
- 动态生成tr,并将其下控件的值拼接后传到后台并保存
有两个表(主表和子表),现在需要根据主表某一个字段动态的生成记录(一条记录就一个tr),然后再讲tr下控件的各个值取出来,传到后台,并保存到子表. html代码: <!--#for(Record ...
- Unity3D 处理Label的颜色代码
UILabel m_name = transform.Find("Name").GetComponent<UILabel>(); m_name.text = GetNa ...
- 排球积分规则功能说明书(spec)
排球规则: 由技术性规定.非技术性规定和场地设备要求等方面的内容组成的.每场比赛仍为五局三胜,前四局每局先得25分为胜,第五局先得15分者为胜.当出现24平或14平时,要继续比赛至领先2分才能取胜. ...
- Memcache所有方法及参数详解
memcache函数所有的方法列表如下: 参考http://www.php.net/manual/zh/function.Memcache-add.php Memcache::add - 添加一个值, ...
- 听课程C# Intermediate: Classes, Interfaces and OOP的笔记,持续修改更新ing
在第二章第7节中,我尝试并给我的Vistal Studio 2015加装了Resharper,感觉非常好用,现在就分享下我的一点心得. 首先为了防止Resharper的快捷键失灵,可以先重置所有的 V ...
- SqlServer性能优化索引(五)
导入表结构: select * into ProductCategory from AdventureWorksDW2014.dbo.DimProductCategory select * into ...
- github上下载的文件如何在本地运行
最近想学习自己写插件,所以先下载大神写的插件膜拜下,下载下来以后,直接双击运行报错,大神怎么会犯这么低级的错误咧!所以在网上查资料,找到了解决方法. (1)上传到github上面的插件都很规范,文件根 ...
- LayaAir引擎——(三)
LyaAir引擎(JavaScript)实现图片的翻转一半 图片4.png位于bin/开场过渡 文件夹下,图片大小150*30(根据实际情况做调整) var button; var scale1 = ...