157. 缓动算法.easing(地球渐入相机动画)

动画片段tween通过.easing()方法可以设置缓动算法,在一些动画场景中你设置合理的缓动算法,可以让动画看起来非常自然,比如一辆车从静止进入匀速状态,动画最好有一个加速过程的过渡,对于这个加速的方式就可以通过缓动算法实现。

形象理解:所谓缓动,你可以理解为运动缓缓加速的过程,缓动算法就是运动加速的算法,推广一下,不一定针对运动,比如颜色渐变、相机动画也可以类比车辆运动加减速。

缓动算法.easing案例体验

你可以对比课件案例源码地球相机动画设置和不设置缓动的视觉差异,你会发现设置缓动函数后,视觉效果更加舒适和自然。

javascript 复制代码
camera.position.set(3000, 3000, 3000);
camera.lookAt(0, 0, 0);

// 视觉效果:地球从小到大出现(透视投影相机远小近大投影规律)
new TWEEN.Tween(camera.position)
.to({x: 300,y: 300,z: 300}, 3000)
.start()
.easing(TWEEN.Easing.Quadratic.Out);//使用二次缓动函数

你可以把上上节课,相机镜头切换动画加上缓动动画,进行测试。

javascript 复制代码
camera.position.set(3000, 3000, 3000);
camera.lookAt(0, 0, 0);

// 视觉效果:地球从小到大出现(透视投影相机远小近大投影规律)
new TWEEN.Tween(camera.position)
.to({x: 300,y: 300,z: 300}, 3000)
.start()
.easing(TWEEN.Easing.Sinusoidal.InOut)//进入和结束都设置缓动

.easing()语法格式

javascript 复制代码
// easing函数:缓动算法(运动效果)
// easing类型:定义缓动算法起作用地方
tween.easing(TWEEN.Easing.easing函数.easing类型);

easing类型(定义缓动算法起作用地方)

easing函数和easing类型都有多种方式,可以自由组合使用(Linear除外)。

javascript 复制代码
// 动画开始缓动方式(类比加速启动)
tween.easing(TWEEN.Easing.Sinusoidal.In);
// 动画结束缓动方式(类比减速刹车)
tween.easing(TWEEN.Easing.Sinusoidal.Out);
// 同时设置In和Out
tween.easing(TWEEN.Easing.Sinusoidal.InOut);

官方案例03_graphs.html

官方案例tween.js-master\examples目录里面案例03_graphs.html可以查看各种缓动算法的曲线效果图。

Linear:默认效果可以不设置,可以理解为没有加速过程直接进入匀速状态,或者说没有减速过程,直接刹车

Quadratic:二次方的缓动(t^2)

Cubic:三次方的缓动(t^3)

Quartic:四次方的缓动(t^4)

Quintic:五次方的缓动(t^5)

Sinusoidal:正弦曲线的缓动(sin(t))

Exponential:指数曲线的缓动(2^t)启动非常慢,后面快

Circular:圆形曲线的缓动(sqrt(1-t^2))会有弹性衰减往复运动感

Elastic:指数衰减的正弦曲线缓动;TWEEN.Easing.Elastic.inout 会有弹性衰减往复运动感

Back:超过范围的三次方缓动((s+1)*t^3 -- s*t^2)会有弹性衰减往复运动感

Bounce:指数衰减的反弹缓动。会有弹性衰减往复运动感

匀速运动(特殊情况说明)

Linear:默认效果可以不设置,可以理解为没有加速过程直接进入匀速状态,或者说没有减速过程,直接刹车

注意:匀速设置 TWEEN.Easing.Linear.None(默认效果可以不设置)。

对于Linear不要设置TWEEN.Easing.Linear.InTWEEN.Easing.Linear.OutTWEEN.Easing.Linear.InOut,会报错

相关推荐
一枚前端小能手3 分钟前
「周更第7期」实用JS库推荐:Vite
前端·javascript·vite
小中123420 分钟前
异步请求的性能提升
前端
我是天龙_绍22 分钟前
渐变层生成器——直接用鼠标拖拽就可以调整渐变层的各种参数,然后可以导出为svg格式
前端
我是天龙_绍1 小时前
Easing 曲线 easings.net
前端
知识分享小能手1 小时前
微信小程序入门学习教程,从入门到精通,电影之家小程序项目知识点详解 (17)
前端·javascript·学习·微信小程序·小程序·前端框架·vue
訾博ZiBo1 小时前
React组件复用导致的闪烁问题及通用解决方案
前端
Dever1 小时前
记一次 CORS 深水坑:开启 withCredentials 后Response headers 只剩 content-type
前端·javascript
临江仙4551 小时前
流式 Markdown 渲染在 AI 应用中的应用探秘:从原理到优雅实现
前端·vue.js
Hilaku1 小时前
为什么我开始减少逛技术社区,而是去读非技术的书?
前端·javascript·面试
xhload3d1 小时前
智慧钢厂高炉冶炼仿真分析 | 图扑数字孪生
3d·智慧城市·html5·webgl·数字孪生·可视化·热力图·智慧工厂·工业互联网·工业组态·高炉炼铁·数字工厂·高炉炉体·智慧高炉·高炉