Unity MegaFiers 顶点动画

使用 MegaFiers 插件,可以使得Unity支持顶点动画的播放。

官方视频教程如下:

在这里简单测试使用下,环境如下:

  • Blender 2.72
  • Unity 4.5.4
  • MegaFiers 2.74

创建物体和动画

首先打开Blender,默认会含有一个立方体,下面对这个立方体制作一个简单动画,让其在1~100帧做旋转,101~250帧做缩放,制作方法可参考教程【牛刀小试简单动画】。

  1. 确认立方体处于桔黄色外框包围的“被选中”状态;
  2. 用鼠标把绿色的当前帧指示线拖到第1帧;
  3. 在“用户视图”中按下键盘 I 键,执行插入关键帧命令;
  4. 在弹出的菜单中选择第二项“旋转”;
  5. 用鼠标把绿色的当前帧指示线拖到第100帧(可以看到刚才第1帧附近多了一条黄色的竖线);
  6. 在“用户视图”中按下键盘 R 键,执行旋转命令,出现了一条虚线连接着变成双箭头的鼠标;
  7. 紧接着按下键盘 Z 键,出现一条垂直竖线,限定立方体只能沿着Z轴旋转;
  8. 紧接着键盘输入 180 回车,完成了把Cube立方体沿着Z轴旋转180度的操作;
  9. 在“用户视图”中下键盘 I 键,再次执行插入关键帧命令;
  10. 在弹出的菜单中仍是选择“旋转”;
  11. 可以看到刚才第100帧附近也多了一条黄色的竖线;
  12. 现在用鼠标左键点击并按着屏幕下方的播放键(或者按下键盘的 Alt+A);
  13. 可以看到立方体旋转,整个动画从第1帧到第100帧完成,往后的动画则是继续保持最后的状态不变;
  14. 接着按上面的类似步骤,完成第101帧到第250帧的缩放动画,插入关键帧菜单选择“缩放比例”,执行的缩放命令为SZ3;
  15. 保存为“cube.blend”文件;
  16. 导出为.mdd文件(需要先在“用户设置...”→“导入-导出”里勾选mdd格式)。

动画完成如下类似:

导入物体和动画

接着要在Unity中实现顶点动画,打开Unity,装上MegaFiers插件,新建一个场景,将“cube.blend”文件放入Assets文件夹中。然后将导入完成的cube预制拖动到场景中,效果如下所示:

通过菜单“Component”→“Modifiers”→“Point Cache”来添加顶点缓存组件。

(这些参数的描述可参见官网【Point
Cache
】)

点击“Import MDD”导入刚才的mdd文件,导入完成会自动设置动画的循环时间“Loop Time”。接着更改循环模式“Loop Mode”为“Loop”,混合模式“Blend
Mode”为“Replace”,拖动“Time”的值,即可在编辑器模式下观看此时的动画帧,如下图所示:

最后勾选“Animated”,运行游戏,即可自动播放动画,效果如下图所示:

控制动画播放

接下来控制播放指定的动画片段,让其默认一直播放旋转动画,按钮点击控制播放缩放动画。选中立方体物体,通过菜单“Component”→“Modifiers”→“Point Cache Animator”来添加顶点缓存动画组件。

(这些参数的描述可参见官网【Point
Cache
Animator】)

点击“Add Clip”,添加2个剪辑,分别为Rotation和Scale,帧数分别为0~99和100~249,速度都是1,循环方式为Loop,如下图所示:

现在运行游戏,可以发现立方体一直在做旋转动画。新建一个脚本挂在立方体上面,代码如下:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20


using UnityEngine;

using System.Collections;

public class test : MonoBehaviour {

public MegaPointCacheAnimator anim;

void OnGUI()

{

if (GUI.Button(new Rect(Screen.width - 50, 0, 50, 50), "缩放"))

{

if (anim == null)

{

anim = GetComponent<MegaPointCacheAnimator>();

}

anim.PlayClip("Scale");

}

}

}

点击按钮,可以切换到播放缩放动画。效果如下图所示:

备注:

第一次尝试使用此插件,可能存在使用错误或者不当等等,还请指出,以免误导。

参考资料:

1.第 1.1.6 节 牛刀小试简单动画 (try-Anim) http://wiki.ubuntu.org.cn/index.php?title=Blender2.5x-2.6%E5%AE%8C%E5%85%A8%E6%95%99%E7%A8%8B_1.1.6&variant=zh-cn

2.官网 Point Cache 介绍 http://www.west-racing.com/mf/?page_id=1335

3.官网 Point Cache Animator 介绍 http://www.west-racing.com/mf/?page_id=1802

时间: 2024-10-13 12:42:57

Unity MegaFiers 顶点动画的相关文章

Unity Shaders and Effects Cookbook (7-2) Surface Shader 中实现 顶点动画

上一节中说了,在 Surface Shader 中,添加顶点函数,我们可以在 顶点函数中获取到 顶点数据,比如顶点颜色.顶点坐标等. 这一节学习获取顶点坐标,并且修改顶点坐标,来实现顶点动画. 简单介绍原理: 在顶点函数中,获取到顶点坐标 vertex,然后,求float offsetY = sin(vertex.x) ,然后将 offsetY 加到 vertex.y 上,这样就把原来的平面 ,变成了 正弦 波浪. 然后再使用之前学过的 内置变量 _Time ,算式变为 float offset

Unity移动平台使用顶点动画或UV动画的问题。

都是精度问题,移动平台开发针对大量性能不一的GPU.各种无法预料的问题. UV动画出现卡顿,解决方案,限制UV的范围.只能缓解. 涉及到_Time的使用时,很大几率会出现问题.不管是使用_Time进行UV顶点,还是顶点动画,在一些移动设备尤其是旧的移动设备上,shader mode 2.0,fragment shader精度低的情况下,基本上都会有问题.

unity 对Animator动画系统的研究

unity的新动画系统叫Mecanim,使用Animator来取代旧系统Animation,按Unity文档的惯例:知识点主要分2部分:unity manual和unity script,读者可以边看文章边查阅文档,最好能动手测试. 文章的开始之前,先讲几个基本的知识的: 1.创建动画的一个基本步骤是设置一个unity3d可理解的简化后的骨骼到骨架中实际骨骼的映射:在Mecanim的术语中,这个映射称为Avatar,即avatar是骨骼到骨架的映射. (图片来自网) Avatar主要用于类人骨骼

unity shader序列帧动画代码,顺便吐槽一下unity shader系统

http://www.cnblogs.com/hellohuan/archive/2014/01/10/3512784.html 一.看到UNITY论坛里有些人求unity shader序列帧动画,写shader我擅长啊,就顺势写了个CG的shader.代码很简单,就是变换UV采样序列帧贴图,美术配置行数列数以及变换速度. Shader "HELLOHUAN/Hello_Sequence" { Properties { _Color ("Main Color", C

关于Unity中Mecanim动画的动画状态代码控制与代码生成动画控制器

对于多量的.复杂的.有规律的控制器使用代码生成 动画状态代码控制 1:每个动画状态,比如进入状态,离开状态, 等都有可能需要代码来参与和处理,比如,进入这个动画单元后做哪些事情,来开这个动画单元后做哪些事情,为了解决这个问题,unity允许每个动画单元来绑定一个脚本代码,这个脚本代码必须继承于StateMachineBehaviour;2: 可以在动画状态的Add Behaviour上添加挂载一个脚本到动画状态;3: StateMachineBehaviour主要接口: (1)OnStateEn

基于ShaderX5的顶点动画

关于顶点动画,ShaderX5里有篇专门来讲,在虚幻3引擎里也有一个更加丰富的实现.使用了一个Pivot Painter的3dmax脚本.其实自己灵活用vertex color可以避开使用Pivot painter.美术同学对这些还是蛮头晕的,能简单就简单. 但是对于想要省shader来说,看看ShaderX5那篇让植被动起来,效果已经可以接受:)

在Unity中实现动画的正反播放代码

using UnityEngine; using System.Collections; public class AnimationAntiSowing : MonoBehaviour { public static AnimationAntiSowing _initialise; void Awake() { _initialise = this; } /// <summary> /// 动画进行正反播放 /// </summary> /// <param name=&q

关于Unity中顶点片元Shader实例

补充:float4 fixed4 _Time 1: float4是内置向量 (x, y, z, w); float4 a; 访问单独成员a.x, a.y, a.z, a.w;2: fixed4 是内置向量(r, g, b, a); fixed4 c; color.r, color.g, color.b, color.a;3: float3是内置向量(x, y, z);4: fixed3 是内置向量(r, g, b);5: float2 是内置向量(x, y);6: _Time: 自场景加载开始所

Unity CCTween UGUI 动画插件

在这简单的介绍一个 CCTween 动画插件的使用 因为GIF 制作软件不太好(网上随便下载的)所以导致效果不太好,有时间我重新制作一下 这是一下简单的效果 下面介绍怎么使用 首先 先下载 CCTween  导入工程 点击下载 Unity5.0的包 如果使用的Unity 版本不够5.0的 就点击下边的连接 下载源码 点击下载 源码 GitGub地址 欢迎大神来更新 好了下面正式开始介绍使用了 #------------ 这是使用的一些变量 以及类型 -----------------------