动效作为当今提升网页感官效果的利器,在各种类型的网页中已经全面开花,如何做到自然流畅让用户感觉舒适的动画效果呢?今天就来跟大家聊一聊动效设计的物理法则,以及它是如何应用的。

  首先来一发大师金句,迪士尼动画大师格里穆·乃特维克曾经说过:

  动画制作和动效设计是本质相通的,我们需要为用户建立一种“视觉的真实”,即动作是可信的,我们需要获得的不是照搬线下场景的写实主义,而是“可信度”,要让用户感知到这个动作是成立的。这里,就要搬出高大上的物理学了!

  物理学四大基本力——万有引力、电磁相互作用力、弱相互作用力、强相互作用力,我们在现实生活中能够感知到的基本上都源自万有引力(其他三种力咱也分析不出来啥)。换句话说,用户在现实生活中建立的动作经验,皆源于物体的“重量感”。要分析万有引力,就得翻出牛顿大大的课本章节了。

  (一)牛顿第一定律

  根据牛顿第一定律——惯性定律,任何物体都要保持匀速直线运动或静止状态,直到外力迫使它改变运动状态为止,说白了,就是不考虑任何力的作用的物体运动,其速度大小和方向是没有任何变化的,用公式表示:

  通过以上公式我们可以绘制出匀速直线运动的位移-时间曲线:

  应用到网页设计中,为了实现过渡效果,我们必须模拟出页面区块的位移-时间曲线,对于运动拆解分析得到的分段曲线,可以运用计算机图形图像造型的基本工具——贝塞尔曲线绘制出来,调用CSS3 animation-timing-function 属性中的贝塞尔曲线绘制函数cubic-bezier可以轻松的用程序模拟运动轨迹。  例如上图所示的贝塞尔曲线可以用四个点来定义,其中P0、P3是固定的点,它们的坐标值是默认的[0,0],[1,1]。P1、P2两点则用来控制曲线的形状和曲率,PS中的钢笔工具的锚点具有相同功能,这两个控制点的坐标值是需要我们通过cubic-bezier(x1, y1, x2, y2)自定义的,范围在[0, 1]。 对于匀速直线运动,将运动时间设置为1s,通过cubic-bezier模拟运动如下:

  linear 动画从头到尾的速度是相同的。应用到网页的banner区域切换动效中的效果(动图需加载):

  感觉不是很自然,由于空气阻力的存在,程序模拟的匀速直线运动在现实生活中是很难实现的,因此对于这样一个用户平时很少感知到的运动是很难建立信任感的。这样的匀速直线运动也是我们在进行动效设计时需要极力避免的。考虑到需要分析物体运动的受力情况,我们借助牛顿第二定律来拆解运动。

  (二)牛顿第二定律

  根据牛顿第二定律——物体加速度的大小跟作用力成正比,跟物体的质量成反比,加速度的方向跟作用力的方向相同。当物体持续受到一个不变的力的作用时,它将做匀加速直线运动,用公式表示:

  绘制出匀加速直线运动的位移-时间曲线:

  通过cubic-bezier模拟运动如下:

  ease-in 动画从低速开始,逐渐加速,收尾态速度最快。应用效果:

  开始状态符合静止物体开始运动的物理规律,但是收尾态不太符合,物体在结束运动之前速度是整个运动过程中最快的,这是不合逻辑的。 如果我们让收尾状态符合物理法则,那么就是需要让物体减速下来,匀减速运动的公式如下:

  绘制出匀加速直线运动的位移-时间曲线:

  通过cubic-bezier模拟运动如下:

  ease-out 动画从高速开始,以低速结束。应用效果:

  模拟的是物体收到一个持续时间很短的推力作用后自然滑行并慢慢停止的过程。在本应用场景使用这种效果是比较合适的,banner图片刚开始切换运动时,需要用一个比较快的速度来吸引用户的注意力“嗨!这儿有新的信息!”,在快要抵达最终位置的时候,需要逐渐慢下来,因为此时用户已经将注意力转移到新的banner图上了,用户需要的是这一区块逐渐慢下来好看清楚上面的内容,获取信息。

  如果想要让banner图片在起始阶段也是柔和地出现,可以缓入缓出一起使用,位移-时间曲线:

  通过cubic-bezier模拟运动如下:

  ease-in-out 动画从低速开始,以低速结束。应用效果:

  切换效果非常的柔和,也就是我们常说的“缓入缓出”。

  (三)赋予材质——速度、形变和反馈

  好的动效在满足了基本的物理原则之后还有很多“材质”上的细节补充,主要有速度、形变和反馈这三个方面。 如果我们想要给上面的案例加上一点重量感,也就是让物体看上去“有质量”,可以再速度上做一点文章,调节一下运动曲线;

  通过cubic-bezier模拟运动:

  ease动画从低速开始,动画以低速开始,然后加快,在结束前变慢。应用效果:

  我们可以用这种开始态和结束态绝对值不等的加速度让运动产生“粘滞感”,可以让运动的区块产生更加真实的互动效果。但是另一方面,不对等的加速和减速过程有可能会让动效产生拖泥带水、不干脆的感觉,具体应用还是要具体情况具体分析。

  做到对物体运动过程的拆解分析再程序模拟之后,我们还可以对运动物体的形状上花一些小心思,通过物体形变和运动的反馈效果可以为物体赋予“材质”,来看几个不错的Web动效案例。

  采用ease-out的参数设置,使得所有元素迅速进入用户视线,又缓慢到达目标位置,动画流畅自然。

  通过不同区块速度差来实现拉伸页面的效果,但是仔细看每一个区块的运动,发现实际上是没有形变的,巧妙的速度变化也可以让整个页面的切换变得生动起来。

  通过形变的设置,使得不同高度的柱状图形变会显得很有弹性,仔细看该网页表现的都是“Top”的数据,为柱状图赋予弹性效果也是非常符合其所表现的数据“情绪”的,整个页面都会显得趣味生动。

  通过下拉框的反弹效果现实区块的“窗帘”设计,运动反馈也可以为网页元素赋予材质。

  本文主要分析的案例集中在网页动效当中运用最广泛的线性运动,对于基本动效的其他动作,如缩放、旋转、不透明度等等效果的变化,其本质上是相通的,结合物理法则的分析实践均可以做出自然流畅的效果, 总结一下应用流程: 1. 分析具体内容区块的运动,结合需求本身绘制出区块运动的运动数值-运动时间曲线。 2. 拆解曲线,运用贝塞尔曲线模拟运动。 3. 通过速度调整、材质形状变化和运动反馈来为区块赋予动效丰富的细节。

  感谢越澄同学的技术支持,送上脚本传送门:http://www.w3school.com.cn/cssref/pr_animation-timing-function.asp http://cubic-bezier.com/#.63,0,1,1

http://kb.cnblogs.com/page/511888/

动效设计的物理法则

转载于:https://www.cnblogs.com/softidea/p/4206079.html

动效设计的物理法则:动画的一切皆在于时间点和空间幅度(转)相关推荐

  1. 【动效设计】常见动效设计分门别类

    原文地址: 互联网早读课:我们为什么需要动效设计 互联网早读课:提升用户体验的7大微交互 互联网早读课:动效设计原理:从卡通动画到UI动效 – 腾讯ISUX ifanr爱范儿:你再这么盯着,特效君会害 ...

  2. APP动效设计需要遵守哪些原则?

    随着动态沉浸式体验的广泛普及,丰富而细腻的APP动效是考察UI设计师专业技能的因素之一.很多UI新手想知道APP动效设计需要遵守哪些原则,以下小编就给大家介绍一下. 1.具备个性化的动效设计. 这是动 ...

  3. APP动效设计如何做得流畅又实用?

    动画效果如今已经深入到 UI界面的每个角落.屏与屏之间的切换因为动效而显得更加连贯,交互的上下文逻辑也因为动效的加持而更加清晰.动效对于产品和用户而言,都是一个不可多得的重要组成部分. 这篇文章当中, ...

  4. UI设计:ios 动效设计

    最近越来越多的国内公司开始关注动效设计了,越来越多的团队意识到动效在产品用户体验中的重要性. 随着国际大品牌苹果和谷歌的引领,最近越来越多的国内公司开始关注动效设计了,越来越多的团队已经意识到动效在产 ...

  5. 我们为什么需要动效设计

    最近越来越多的国内公司开始关注动效设计了,越来越多的团队意识到动效在产品用户体验中的重要性. 随着国际大品牌苹果和谷歌的引领,最近越来越多的国内公司开始关注动效设计了,越来越多的团队已经意识到动效在产 ...

  6. 动效设计中的隐喻-2

    这次我们再看一些别的有关隐喻(或曰明示)的设计. 示意关系 所谓示意关系,就是通过特定的动作来表明界面中控件之间的某些关系,包括包含关系.前后关系和位置关系.其实就是我们以前讨论过的连接的一种.有一些 ...

  7. uniapp image图片切换动效_动效设计从概念到落地

    一.什么是动效设计 聚焦于产品中的动效,我们常说的动效设计可以分为3类: 1.交互动效 交互动效承载了产品流程.交互行为的串联,不论可实际操作的交互原型还是纯做 demo 展示的动效过场都可以算作交互 ...

  8. 想要学习UI动效设计?从这些软件入手

    提起UI,必不可少的就会想到动效,动效设计作为UI设计当中必不可少的一环,已经由最初的美观酷炫发展到提升用户体验和产品需求的重要作用. 火箭加载SVG动画 很多时候设计不能光靠嘴去跟产品经理说你的想法 ...

  9. UI实用素材|APP动效设计

    app动效设计,现在已是各位APP设计师学习和临摹的方向.大家也会收集一些好看的APP动 效设计作品. 学习app动效设计,不是盲目的让界面动起来那么简单,一定不能滥用. 先看下一组搜UI (soou ...

最新文章

  1. 微信分享转发功能「PHP版」
  2. spring中事务的设计和实现
  3. 【小知识点】解决Chrome动画”卡顿”的办法
  4. Java变量名的命名方式
  5. iOS NSURLSession DataTask(数据任务)
  6. SpringBoot入门(四)——自动配置
  7. apk、ipa包size优化晋级手段
  8. oracle学习总结1
  9. GDAL读写矢量文件——C#
  10. 第二十四节(Java文件流,缓冲流)
  11. project安装包_Microsoft project 2019软件功能介绍(附安装包)
  12. 三维点云数据处理软件供技术原理说明_三维点云数据获取方法及获取系统与流程...
  13. C语言:创建各类三角形图案
  14. Facebook承诺为普通市民提供1500套住房
  15. 注意力机制在NLP问题中的介绍与调查-论文翻译
  16. tkinter浏览器组件
  17. 电子工程师必备:运算放大器11种经典电路
  18. 修理机器人基维斯_《魔兽世界》魔兽世界机器人攻略
  19. feed流和瀑布流_推荐系统之Feed流UI交互设计
  20. 列车调度(贪心):单机调度问题贪心算法

热门文章

  1. 创业公司CEO每天应该做的13件事
  2. E-learning的现状与未来
  3. 想进入系统CMD?请输入密码
  4. 第三天-零基础学习python
  5. 12.Azure应用程序网关(下)
  6. Python练习题(day1)
  7. Silverlight Gantt轻量级高性能的甘特图
  8. 为Office Communicator启用超链接
  9. 检索出现次数的SQL语句
  10. 阿里云移动端播放器高级功能---直播时移