查看原文
其他

Playable API:动画和视频进入新阶段

Unity官方 Unity官方平台 2018-11-16
Playable是一个方便使用节点图操作的API,它允许你可以精确的以编程方式控制动画和音频。我们目前计划在视频上也使用同样的API。本篇文章将对Playable API进行介绍。

注意:1、本文中的范例适用于Unity 5.4版本。2、Playable API仍然处于测试阶段,我们还在努力使其更灵活和易用。Playable API在最终集成到将来的发行版本前会有所改变。
示例:播放剪辑
Playable系统的主要目标是:万事从简。现在让我们从最基础的播放一个剪辑开始操作。






很简单是吧?我们可以很方便的控制时间和速度,就像这样:


创建一个动态混合树
通过BlendTrees可以在不同的AnimationClips,甚至在其它的BlendTrees之间混合动画值。Mecanim的BlendTrees非常强大,但是它们需要在编辑器中构建。通过Playable,就可以在运行中创建和控制BlendTrees。我们可以通过AnimationMixerPlayable来实现:




接下来,我们来控制权重: 

注意:请确保总权重等于1.0f。
自定义Playable : Crossfade



在设计Playable API时,我们一个关键目标是确保系统具有可扩展性。CustomAnimationPlayable允许你编写自己的Playable逻辑。秘诀就是在Playable图形被游戏循环遍历到的时候PrepareFrame回调被自动调用。PrepareFrame是CustomPlayable的混合/加权逻辑发生的地方。


在下面的例子中,我们实现了CrossFade Playable,它看起来和表现的很像老的动画系统的CrossFade: 


我们同时还在做另外一个名字将会叫做ProcessFrame的CustomPlayable回调。在动画中,通过它可以直接向动画流中写入并且可以使用户拥有他们自己的IK,程序性动画,物理系统,实时动作捕捉,等等。
通过AnimatorControllerPlayable组合一切


API另外一个很棒的特性就是节点图中可以有AnimatorControllers了。是的!这就意味着可以在StateMachines之间做混合了!允许对象和道具提供它们自己的动画StateMachine。


例如:有一样武器并且你想让武器可以“教”玩家怎么使用它。这个武器将向玩家提供AnimatorController (StateMachine),并且可以让玩家的动画混合到这个状态机上。



 CharacterPlayableHandler是CrossFade Playable之上的一个简单接口。
眼见为实
在运行时可视化Playable节点图是非常重要的。为了实现这个,我们创建了GraphVisualizer,这是一个可以预览Playable节点图的开源编辑器套件。
点击[阅读原文]可查看下载地址。下载文件中包含了范例,并且非常容易使用!
关于音频
在GDC的开放日中我们展示了针对音频的Playable API,它的工作方式与当前的动画Playable API相似。
通过这个API可以在Unity内对音频进行有效的,低级别的控制。它不仅可以让程序员对Unity内的音频做一些新鲜有趣的事情,并且可以在编辑器内作为未来音频工具的基础。
我们本来希望提供关于Audio Playables的代码实例,但是Playable API现在还在不停的调整中,所以需要等待API完成才能向大家展示Audio Playables!
总结
我们希望这篇文章能让你对Playables感到兴奋,这是我们正在进行的工作,还有一些我们想要在它走出试验阶段之前修改和改进的东西。

所以,请点击[阅读原文]下载试用并且告诉我们你对它的想法吧!

我们后面还会为大家分享更多的技术内容,请关注Unity官方中文社区(forum.china.unity3d.com)。



点击“阅读原文”进入官方社区,下载Playable示例!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存