《基于“分形”编写的交互应用》
前言
在上学期我们已经完成《互动媒体技术》课程的基础上,本学期进一步学习和应用了互动媒体的相关技术,与之前进行简单的有关”画笔”等基础操作不同,《代码本色》这本书介绍了大量与物理世界中各种现象、理论相对应的计算机实现,在此学习基础上制作了本次将要介绍的交互应用。
首先,在这门课程的整个学习中,给我留下最深刻的印象的有两个章节的内容,其中一个是“chp08_ fractals”(分形),第二个则是“ chp02_forces”(力)。究其原因,分形给我留下深刻印象是因为老师在课堂上所展示的几幅分形的画,这些画总结起来就是几个词——“无限、放大、自相似”,这种无限放大却始终能保持自相似的特性引起了我强烈的好奇心;而力这一章节给我留下深刻印象则是因为自己其实对于物理方面的知识很感兴趣,而正好这一章节将我对这方面的兴趣和我现在的专业结合了起来,将物理现象、理论通过以代码的方式将其展现了出来。
该应用使用了” chp02_forces”、 ” chp04_systems”、” chp08_fractals”这三章中的技术,实现了雪花飘落的景象并且通过交互操作实现雪球的形成与消失这两个过程。除此之外,结合了《游戏程序设计》这一课程中学习的音乐可视化的内容,将分形得到的图像与之相结合对所播放的背景音乐进行了音乐的可视化操作。
制作该交互应用想法的最初来源其实就是在学到”分形”这一章节时老师所展示的几幅画,被”分形”深深吸引之后,就想要来实现一个简单的分形,所以最终选择了koch曲线来实现雪花的绘制。
提到雪花,自然想到的是雪景,即大量的雪花,由此产生了制作雪花粒子系统的想法。这时候,有了单片的雪花、雪景(雪花粒子系统),那么雪堆积起来的所产生的另外一个有关雪花的形态——雪球就很容易联想到了。对于雪球,我该如何将其融入这个交互系统呢?此时就想到了“力”这个概念,牛顿所发现的万有引力定律指明了——任何物体之间都有相互吸引力,那么为何不可以将”万有引力”的物理效果进行一个放大呢,由此产生的想法是——雪球接近雪花->在雪球一定范围内的雪花被雪球吸附->雪球变大,质量变大->阻力增大,运动速度变慢。
功能及用法
由于该应用的交互操作比较简单,所以直接用视频的方式来展示该应用的功能及用法
链接:基于分形编写的precessing交互应用
技术
该系统用到了《代码本色》这本书中三个章节的内容,分别是” chp02_forces”、 ” chp04_systems”、 ” chp08_fractals”,由于该交互应用的最初想法来源于“分形”这一概念,并由此再联想展开到使用“力”和“粒子系统”并最终形成该交互应用,所以在本篇文章中将着重介绍“分形”这一技术并讲解在该系统中使用到的有关“分形”的地方。
-
粒子系统
1.1粒子系统技术的基本理论
粒子系统是采用大量、具有一定声明和属性的微小粒子图元作为基本元素来绘制一个或多个对象。在粒子系统中,粒子图元的形状可以是小球、椭球、立方体或其他形状。每个粒子还具有大小、颜色、透明度、运动速度、运动方向和生命周期等属性。
粒子在系统中要经过产生、运动和消亡三个阶段,期间粒子的大小、形状可能会随时间发生变化,其他性质如粒子的透明度、颜色和运动都随之改变,充分体现出不规则物体的动态性和随机性。
粒子系统生成每一瞬间画面,一般都要进行一下基本步骤:
①:产生新的粒子加到系统中
②:为新生粒子设置初始属性
③:删除系统中已消亡的粒子
④:根据粒子的属性对粒子进行移动和变换:
粒子的各种属性可以根据不同的经验函数确定,并给予一定的随机分布特性。1.2该应用中使用的粒子系统
该应用中共使用到了两个粒子系统,一个是背景呈现雪景的粒子系统,该粒子系统中的单个粒子可以被雪球(鼠标控制)吸附;另一个粒子系统是点击鼠标产生的雪花喷射粒子系统,想要呈现出的效果是点击鼠标,雪球变小并开始喷射雪花直至雪球消失,该粒子系统中的单个粒子可与雪球之间产生万有引力的物理现象,但不会被雪球吸附。
该应用中两个粒子