`
xhload3d
  • 浏览: 208528 次
社区版块
存档分类
最新评论

透过WebGL 3D看动画Easing函数本质

阅读更多

50年前的这个月诞生了BASIC这门计算机语言,回想起自己喜欢上图形界面这行,还得归功于当年在win98下用QBASIC照葫芦画瓢敲了一段绘制奥运五环的代码,当带色彩的奥运五环呈现在自己面前时我已知道自己这辈子要走的路了。在这个忘本逐新的年代不见多少媒体提及这影响了几代人的BASIC语言的50年庆了。

如今消费者对用户体验的高要求,以远不能以静态平面图形打动人心,动画已是衡量前端产品用户体验不可忽视的重要因素,最近Facebook开源的Pop动画框架已发了iOS业界极大的关注,其实Apple早在Cocoa和Cocoa Touch框架内置了动画框架Core Animation,HTML5的CSS3也内置了动画机制,不知是自己脑子不好似还是HTML5接口提供的不够友好,久不用总会忘只能考写了个小例子帮自己记忆。

基于HT for Web的自动布局动画例子视频

 

基于HT for Web的3D机房动画例子视频

 

动画的原理比较容易理解:在一定的时间间隔内,不断改变颜色、大小或角度等图形界面参数,直到最终的目标参数结果,整个过程人眼观察起来就是个动画的效果。但提供一套完善的动画框架是一项超出大部分一般人脑子的系统工程,我很喜欢阅读《技术奇异点》的博客,他的《Core Animation 初探》对OS X的Core Animation进行了深入的思考。

一套好的动画框架是模型接口、用户体验和运行性能等多方面极难得到平衡的挑战,即使是如今各种GUI平台提供的主流动画框架这么多年了依然问题不少,不是具体场景的性能问题,就是多组件同时动画是莫名其妙各种bug,加上前面提到的我脑子不好使,实在记不住各种平台提供五发八门接口,因此我喜欢自己通过Model来达到控制View的动画效果,这样在动画过程改变哪些属性,改变的每个动画帧改变的幅度,动画之前之后的各种事件处理,多动画的并行还是串行处理一切都可以在自己的掌控之中。

最早接触到Easing概念是学Flash/Flex时接触到的这里demo,这个demo第一次给我对Easing直观的感受,如今基于HTML5的可以参考 http://easings.net/,Easing函数的作用在于通过定义不同曲线的数据公式方式,来描述每一帧回调时需要改变图形参数属性的幅度,从而达到均匀、先快后慢、先慢后快,甚至先超出起始值和结束值再慢慢恢复的各种动画特效,如今有很多工具提供了可视化编辑Easing曲线函数的功能,待会介绍的例子将会枚举一堆常用的Easing函数供大家参考应用,先上张图和视频开门见山让大家体验下基于WebGL的3D下,如何更直观的展示不同Easing动画效果

 

该例子近20种动画Easing类型分布在不同的箭头跑道上,当点击控制面板的animation按钮则开始启动动画,动画过程箭头将随着Easing的函数的逻辑决定前进的速度,这样多组动画同时进行时刻直观的对不同动画效果进行比较。箭头的颜色也随着前进距离逐渐由白变红,当达到终点时完全变红。

示例还借助了3D的空间新轴线,在垂直轴方向动态用曲线表示Easing函数在当前时间点的函数值,因此大家可以直观的体验到Easing函数曲线的动态变化过程,同时曲线段的颜色也根据该时间段箭头的前进距离由白变红。

右侧控制面板上端是HTTableView表格组件,通过表格的CheckMode可勾选需要显示的Easing函数类型,可点击表头全部选中或者全部取消,或逐行控制具体特效的是否可见,下端HT拉条组件的frames为帧数,代表整个过程要跑多少帧,interval代表每一帧的时间间隔,增加frames会让曲线更均匀,增减interval可控制动画的快慢程度。

以下HT for Web的3D例子为在Android平板上运行的效果,可勾选部分类型更容易直观观察具体的Easing函数运行效果:

 

整个例子的运行效果给我感觉就像这个社会各式各样的人生路,大家都逃不过出生和死亡,大家的起点是一样的,终点的死亡也是谁也躲不过的,但不同人可以走出不同的人生曲线,easeNone:function(t){return t}这条是均匀的直线,给我感觉就是公务员之路,没有大起大落,每年都会收入更好,但快不来只能慢慢熬;elasticOut是最顺利的年少就达到事业巅峰,当然后续也没啥追求一路高位稳定等死;elasticOut是大器晚成类型,一路平平毫无建树,终老之前也有幸快速达到了目的地;其他波折动荡的类型如创业人生,每天你都不知道明天会发生什么,你可能一直坐着过山车,时而在低谷时而在顶峰,不过怎么样只要坚持继续前进人人都会达到理想的终点:

Everything will be okay in the end. If it’s not okay, it’s not the end.

2
0
分享到:
评论

相关推荐

    WebGL 3D雪花飘落动画特效.zip

    【WebGL 3D雪花飘落动画特效】是一种利用JavaScript和WebGL技术在网页上实现的视觉效果。WebGL(Web Graphics Library)是基于OpenGL标准的JavaScript API,它允许开发者在浏览器环境中创建交互式的3D图形,无需插件...

    HTML5 WebGL酷炫3D旋转星云动画特效

    CSS3还引入了transform属性,可用于实现元素的旋转、缩放等效果,尽管这里主要的3D动画是由WebGL处理,但CSS可能用于辅助布局或简单的2D过渡效果。 在文件结构方面,"index.html"是项目的主页面,通常包含HTML结构...

    SuperMap-webgl3D vue示例demo

    在本示例中,"SuperMap-webgl3D vue示例demo"是一个基于SuperMap、WebGL3D技术以及Vue.js框架构建的三维地球展示应用。这个项目旨在为开发者提供一个直观的学习平台,以理解如何将这些技术整合到一起,创建交互式的...

    【3D模型】webGL人体3D动态模型

    【3D模型】WebGL人体3D动态模型是一种在网页端实现的三维人体动画技术,它基于WebGL(Web Graphics Library)这一强大的图形渲染API,允许用户在浏览器中无需插件即可体验高质量的3D图形展示。这个模型特别之处在于...

    HTML5 WebGL 3D 仓储管理系统

    此外,ht.js可能是一个用于构建3D场景的JavaScript库,它为开发者提供了更高级的工具和函数,简化了WebGL的编程复杂性。通过这个库,开发者可以轻松地添加交互式元素,如点击某个货位获取详细信息,或者拖放货物进行...

    webGL函数库.rar

    "webGL函数库.rar"可能是一个包含多种WebGL库或者工具的压缩包,这些库和工具可以帮助开发人员更方便地利用WebGL进行3D图形编程。 首先,让我们来了解一下WebGL的基础知识。WebGL在浏览器中使用上下文(canvas元素...

    HTML5+WebGL 3D雪花飘落动画特效

    在这个“HTML5+WebGL 3D雪花飘落动画特效”项目中,开发者利用这两种技术构建了一个逼真的3D下雪场景,为网页增添了视觉吸引力。 HTML5是超文本标记语言的最新版本,它引入了许多新特性,如离线存储(localStorage...

    html5+webgl海上3D大波浪动画特效.zip

    WebGL的引入使得开发人员可以在不依赖任何插件的情况下,在任何支持它的浏览器上创建复杂的3D场景和动画。在这个海上3D大波浪动画特效中,WebGL正是用来生成逼真的波浪效果的关键。 压缩包中的文件主要包括: 1. `...

    基于WebGL实现3D图片特效

    在这个案例中,可能使用的库可能包括Three.js或 Babylon.js,它们都是基于WebGL的库,提供了丰富的3D建模和动画功能,使得开发者可以更轻松地创建复杂的3D场景和交互效果。 接着,我们关注到压缩包内的文件,例如`...

    网页动画素材 WebGL基于canvas画布绘制3D噪音线条酷炫动画特效。(抖音资料)

    网页动画素材 WebGL基于canvas画布绘制3D噪音线条酷炫动画特效。(抖音资料)网页动画素材 WebGL基于canvas画布绘制3D噪音线条酷炫动画特效。(抖音资料)网页动画素材 WebGL基于canvas画布绘制3D噪音线条酷炫动画...

    webGL公用函数库

    WebGL是一种基于OpenGL标准的JavaScript API,用于在任何兼容的Web浏览器中进行2D和3D图形渲染,无需插件。这个"webGL公用函数库"集合了几个实用的工具和函数,旨在简化WebGL编程过程,对于初学者来说特别有帮助。...

    基于HTML5 WebGL 3D樱花飘落动画

    基于HTML5 WebGL 3D樱花飘落动画 1.网页作品简介 :HTML期末大学生网页设计作业 A+水平 ,喜欢的可以下载,文章页支持手机PC响应式布局。 2.网页作品编辑:作品下载后可使用任意HTML编辑软件(如:DW、HBuilder、...

    WebGL编程指南函数库

    WebGL是一种基于OpenGL标准的JavaScript API,用于在任何兼容的Web浏览器中实现硬件加速的2D和3D图形渲染。这个“WebGL编程指南函数库”包含了一系列辅助脚本,帮助开发者更方便地进行WebGL编程。以下是这些脚本的...

    HTML5 WebGL实现酷炫的星云旋转背景动画特效源码.zip

    它涉及到3D图形渲染、着色器编程、纹理映射、光照模型以及动画原理等多个方面,对于学习WebGL和3D网页开发的初学者来说,这是一个极好的学习资源。通过分析和理解这个源码,开发者可以深入掌握WebGL的使用,提升自己...

    webgl函数库.rar

    理解并熟练使用这些矩阵函数对于构建复杂的3D场景和动画至关重要。 3. **webgl-debug.js** WebGL_Debug.js是一个调试工具库,它为WebGL编程提供了额外的安全性和错误检测功能。在开发过程中,WebGL错误可能导致...

    webGL3D机房模型

    WebGL是一种在网页上实现3D图形渲染的技术,它基于OpenGL标准,并且完全用JavaScript编写,无需任何插件。在“webGL3D机房模型”这个项目中,开发人员利用WebGL的强大功能,创建了一个交互式的3D机房演示。这个Demo...

    WebGl的3D空间

    WebGL提供了大量的几何、颜色、光照、纹理等3D图形处理函数,通过这些函数,开发者可以创建3D模型、设置相机视角、应用光照效果、绑定纹理等。WebGL的核心是顶点着色器和片段着色器,这两个着色器程序运行在GPU上,...

    非常逼真的html5+WebGL 3D雪花飘落动画特效源码.zip

    通过查看这个文件,我们可以学习到具体的编程实现细节,例如如何组织和调用WebGL函数,如何编写着色器程序,以及如何使用requestAnimationFrame进行动画循环等。 总的来说,HTML5+WebGL 3D雪花飘落动画特效源码展示...

    webgl编程指南公用函数库

    总的来说,这些公用函数库为WebGL开发者提供了一个便利的框架,使他们能够专注于设计和实现3D图形效果,而不是在底层细节上花费过多时间。通过这些库,开发者可以更容易地处理图形变换、调试代码、管理资源,从而...

    HTML5+WebGL 3D雪花飘落动画特效.zip

    在本项目"HTML5+WebGL 3D雪花飘落动画特效.zip"中,开发者利用HTML5的Canvas元素和WebGL技术,创建了一个令人惊叹的3D场景,其中雪花从天空缓缓飘落,为网页增添了动态美感。WebGL是一种基于OpenGL标准的JavaScript ...

Global site tag (gtag.js) - Google Analytics