关闭

Unity 动画路径预览工具

标签: unity
2738人阅读 评论(1) 收藏 举报
分类:

原因

在使用 Unity 开发游戏过程中,经常使用到 Animation 功能来为物体做动画效果,其中就包括物体的位移路径动画,比如过场动画里镜头的路径移动等。现有的 Animation 功能只能编辑关键帧所在时刻的物体位置,而无法一览物体路径动画的轨迹,造成美术人员编辑路径动画时,没办法直观的查看所编辑的路径曲线。另外,在 Animation 窗口里进行调整曲线的切线,非常的不便,只能在180度的斜率范围内调整数值。

目标

实现实时的动画路径预览,快速定位关键帧,方便编辑切线。
这里写图片描述

解决

为了可以实时预览动画路径,那么就需要获得当前 Animation 窗口的动画数据,但是 Unity 不开放操作 Animation 窗口类,只能通过反射来处理。 创建的 AnimationWindowUtil 类,即是为了与 Animation 窗口的数据进行交互。
这里写图片描述

这里写图片描述
动画数据里面存储的是使用埃尔米特(Hermite)曲线公式的值,它是使用各个顶点的斜率来构建曲线,这也造成了在 Animation 窗口编辑切线的不便,没法精确控制斜率的值。
这里写图片描述
合适的方式是使用贝塞尔(Bézier)曲线,它提供了两个控制点来调整切线,控制点的位置比起控制斜率的值大小来的直观方便多了。好在这两种曲线公式是可以转换的,Hermite 曲线转换成 Bézier 曲线步骤如下:

P0(b) = P0(h)
P1(b) = P0(h) + M0(h) * 1/3
P2(b) = P1(h) - M1(h) * 1/3
P3(b) = P1(h)

转换完成之后,则可通过绘制 Bézier 曲线,将动画路径展现出来。
这里写图片描述
绘制的绿色点是每个关键帧的位置,点中绿色点,即可直接在 Animation 窗口定位到当前关键帧,方便直接立即编辑。点中绿色点时,会在该点的旁边出现灰色控制点,直接点中控制点,就可以直接调整该点的切线了。
这里写图片描述
这样来调整切线比在 Animation 窗口里面进行调整斜率方便的多了。切线调整完成后,通过 Bézier 曲线转换成 Hermite 曲线,来写回动画数据。
这里写图片描述
当关键帧过多时,可能会遮挡住曲线的走向绘制,特别是在转弯的地方,故也提供关闭显示关键帧点的功能。

结语

Unity 编辑器开放的接口不能够实现于想要实现的功能时,只能反编译编辑器代码,分析相应所封闭起来的功能代码,才能获取到想要的数据。动画数据存储的是 Hermite 曲线公式,而这种曲线无法在场景里面进行方便的调整,只能通过转换成 Bézier 曲线。

源码

Github 地址:https://github.com/akof1314/AnimationPath

0
0
查看评论

unity3d动画插件iTween-路径动画的制作

unity3d动画插件iTween-路径动画的制作   iTween是一个动画库, 用它可以轻松实现各种动画,晃动,旋转,移动,褪色,上色,控制音频等等 到官网看看http://itween.pixelplacement.com   我今天主要是说一下用i...
  • he_wen_jian
  • he_wen_jian
  • 2014-04-23 16:19
  • 13009

Unity3d 简单的按照路径移动物体!

在TORQUE引擎中,我们只要设置几个点,然后物体会按照这几个点顺序移动,Unity3d也可以的,现在介绍一个很简单的按照路径移动的方法。 目标是让蓝色方块沿着紫色方块组成的路径移动,设计思想就是让蓝色方块移动第一个,然后继续移动到第二个,然后.....,我们使用碰撞检测判定蓝色方块是...
  • bean244
  • bean244
  • 2014-03-05 22:08
  • 12961

unity基础开发----Itween路径位移动画实现

itween插件在unity也是经常使用的,本来就行做一个很简单的路径动画,但是看到很多的教程都是很复杂的。在这里实现的功能就是用itween path工具画出点,用物体在平滑的曲线上进行运动,实现一个路径动画的效果。 itween可以在http://download.csdn.net/detail...
  • liang_704959721
  • liang_704959721
  • 2013-12-02 10:57
  • 3701

Unity中Camera路径动画

  • 2016-11-22 11:20
  • 125KB
  • 下载

Unity3D AnimationView动画视图、动画事件

原创文章如需转载请注明:转载自 脱莫柔Unity3D学习之旅 QQ群:【119706192】本文链接地址: Unity3D AnimationView动画视图 用脚本控制动画:Animation动画视图_脚本控制(2) 动画视图从...
  • asd237241291
  • asd237241291
  • 2012-12-25 14:58
  • 5846

使用第三方插件Curvy为unity场景快速生成运动轨迹与赛道

@废话在前 Curvy是一个非常强大的第三方插件,用于在unity中快速生成游戏轨道,关于此插件的教程网上几乎找不到,官方的视频教程是一个讲法式英语的人讲的,不但视频模糊让人听的简直爆炸,我反正听了一半差点砸电脑了,最后主要还是靠折腾demo结合视频把主要的用法弄明白了。这里结合官方demo中的几...
  • cordova
  • cordova
  • 2016-08-15 23:42
  • 7269

路径动画

<Page x:Class="路径动画.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="...
  • dszgf5717
  • dszgf5717
  • 2013-08-13 23:12
  • 422

unity3d Curvy 曲线编辑工具

  • 2015-08-19 11:46
  • 796KB
  • 下载

Unity位置动画

1 场景中创建一个Cube 2 为这个Cube添加Animator组件 3 选中这个Cube,然后选择Window-Animation,打开animation窗口 下面就开始K关键帧了,很简单,两步走 1 选中这个Cube对象,在第0帧,移动一下Cube对象位置 2 选中这个C...
  • qq_15267341
  • qq_15267341
  • 2016-07-12 20:11
  • 657

Unity 禁用动画位移

今天在自己做demo的时候,发现网上找到的动画资源是自带位移的,就是说只要播放动画,角色就会移动,但是我想自己控制角色移动,便于控制移动速度和动画混合。 解决方法是,在Animator组件的属性里面有一个叫做Apply Root Motion的bool值,取消勾选即可。
  • qq_28768929
  • qq_28768929
  • 2016-09-17 10:13
  • 4031
    个人资料
    • 访问:3556386次
    • 积分:36086
    • 等级:
    • 排名:第136名
    • 原创:402篇
    • 转载:88篇
    • 译文:5篇
    • 评论:3425条
    个人说明
    联系方式:
    文章存档
    最新评论