《Motion Design for iOS》(三十九)

介绍Facebook的Pop

在2014年4月,Facebook的工程师Kimon Tsinteris发布了Pop,Facebook构建用来支撑他们app Paper的一个弹簧动画框架。这个框架的起源其实早于Facebook,Kimon构建了其中的大部分用来支撑他被Facebook于2011年收购的电子书公司Push Pop Press。你可能记得Push Pop Press,它获得了苹果的设计奖,作为iPad的电子书,为被称为“Our Choice”的AI Gore所构建。

点击观看AI Gore’s ‘Our Choice’ - an iPad app视频

“Our Choice”在2011年确实很有开创性。它是最早的有完整的基于手势来操作界面内容的iOS app之一。屏幕上的每个视觉元素都是弹簧动画的,有着很好的弹性和响应,这是从所未见的。

时间快进到2014年早期,来介绍一些Facebook的Paper。Paper同样包含基于手势的控制和弹簧动画,并且可以发现,它全部基于Al Gore三年前的电子书的工作。对我们开发者来说幸运的是,Facebook认为他们的动画框架Pop值得公开到社区中去,这样其他人也能构建酷的基于弹簧动画的app了。

Pop VS Core Animation

当我们在本书前面讨论Core Animation的时候,以及它是如何在一个基本的水平上工作的,我结识了model layer和presentation layer的不同。模型层表示已知的准确的CALayer预加到动画上的属性。如果你添加一个动画到layer上,然后在动画进行到一半时问模型层它的属性是什么,答案是不会反映任何动画当前的内容的。如果你想要知道动画中实时的、运动中的layer的值,你就得去看表现层。而一旦动画完成后,表现层就会消失,所以如果你不想你的layer回到开始的位置,你就需要设置模型层的属性来匹配动画的最终状态。

这就是Core Animation的工作。这是苹果为了构建一个iPhone上用的动画框架在很多年前做出的一个基本的实现选择。而因为JNWSpringAnimation简单地为我们开发了一个依然是Core Animation对象的CAKeyframeAnimation,我们还是需要设置动画模型层的最终值来在完成时保持住。

Pop是完全不同的!

Pop不使用Core Animation来执行任何它提供的动画功能。不同之处在于它设置了一个特殊的时间对象来每1/60秒执行一次。那个每秒执行60次的代码会直接基于下一个你在弹簧动作中定义的位置更新任何你想要的属性。没有什么特别的、额外的layer添加到你的元素中去,Pop直接在UIView或者CALayer上改变属性,或者,有趣地在任何你想要的对象类型上改变。这意味着在动画中的任何时候,你都可以直接接触改变的属性的当前值而不用跳到任何表现层。并且更好的是,你不需要单独设置最终值让动画在那逗留,因为动画始终在实际的真实值上工作。

这个Pop用来支撑整个框架的时间对象是CADisplayLink,它可以看做是NSTimer的一个更高级版本,NSTimer是Mac游戏开发者常年用来在他们的Mac和iOS游戏中一帧帧运行代码的。NSTimer可以在你想要的任何时候调用任何你想调用的代码,不断地重复或者只调用一次。如果你想每5秒钟调用一次代码就可以使用NSTimer来做。或者如果你想要每秒调用代码60次,也可以用NSTimer来做,但当这么快地调用代码的时候(比如每次运动一点点像素,一步步地动画一个界面元素),这个时间对象就会失去准确的同步刷新频率,你可能会丢失一些帧,从而导致一些奇怪的短暂跳跃。

这就是CADisplayLink施展之处。CADisplayLink就是设计来避免这个问题的,因为它不是设置时间间隔,它一遍遍地调用你的方法的速率完全取决于屏幕的刷新频率。它随着屏幕的刷新来启动你的代码,这样你就有了最好的机会来每秒更新你的界面60次(平滑感知动作的时间)。这就是Pop用来将动画一像素一像素、1/60秒一次推动的方法。


查看完整合集:https://github.com/Cloudox/Motion-Design-for-iOS
版权所有:http://blog.csdn.net/cloudox_

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更加便捷、个性化的教育体验。
### 回答1: Motion Matching是一种用于游戏动画的技术,它可以在Unity中实现。它的基本思想是将动画片段分解成小的动作单元,然后根据玩家的输入和环境的变化来选择最合适的动作单元,从而实现更加流畅和自然的动画效果。在Unity中,可以使用Mecanim系统和动画控制器来实现Motion Matching。 ### 回答2: Motion Matching是一个基于动作捕捉和计算机图形学技术的新兴技术,在游戏开发中被广泛应用。而在Unity中,Motion Matching也是一种非常重要的技术,它可以帮助游戏开发者更加快速、高效地实现高品质的游戏动画效果。 具体来说,Motion Matching是一种通过将实时捕捉的动作与大量预先录制的动画片段进行匹配的技术。这样一来,游戏中的角色可以在不同情景下根据玩家的操作实时变换动作,使得角色的动作更加自然、流畅。同时,Motion Matching还可以通过实时计算、调整数据的方式,来实现更加精细的动画效果,例如在某个特定条件下播放某个特定动画。 在Unity中,Motion Matching不仅仅是一个技术,更是一个系统,包含了许多组件和工具。其中最重要的组件是Motion Matching Controller,它被设计为一种易于配置和调整的动画控制器,可以根据开发者的需求来调整动画精度、匹配度以及优先级等参数。此外,Unity中还提供了一些工具和插件,用于帮助开发者更好地实现Motion Matching,例如Unity Kinematica插件、Unity Timeline等。 总的来说,Motion Matching为Unity游戏开发者提供了一个高效、灵活、自然的动画实现方法,为游戏制作提供了更多可能性。然而,Motion Matching还是一个相对新的技术,需要开发者对其进行深入的理解和应用,方能发挥其最大的效用。 ### 回答3: Motion Matching for Unity是一种运动匹配技术,可以优化角色动画表现和反应性能。该技术通过使用大量的动作片段来替代传统的动画过渡技术,使得角色的动作更加自然流畅。 Motion Matching for Unity主要基于两个核心概念:候选集和匹配器。候选集是指在角色执行动作前可以选择的所有动作片段,而匹配器是根据角色当前的状态选择最佳的动作片段并实时应用于角色。 Motion Matching for Unity的优势在于其高度反应性能和可定制性。由于每个角色状态都有其独特的动作片段集合,因此在运用此技术时需要设计和构建一个丰富且复杂的动作切割器。这个切割器会将动作片段划分成更小的单位,以便根据角色状态实时匹配。 此外,Motion Matching for Unity还有其他一些优势。例如,它减少了手动动画制作的时间和精力成本,还能够实现更好的角色行进和移动。 尽管Motion Matching for Unity与传统的动画过渡技术相比具有更高的复杂性和技术门槛,但是对于需要更高动画反应性和更好的角色表现的游戏开发者来说,这种技术是非常有用的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值