融入动画技术的交互应用

花了一些时间,好不容易《代码本色》这本书看的差不多。

作者通过使用processing模拟了自然系统的许多物体,这让我不禁思考:如果这个世界都可以用代码模拟,那一定会很奇妙。

作者通过代码,模拟浮力、重力、弹力可以模拟出宇宙星体,弹簧等等,用粒子系统、噪声做出自然界各种各样有着类似特点的物体。

在老师之前给的许多例子中,我看到了一个很有趣的“弹簧”:

在这里插入图片描述
它让我想到了原来想要“摘星星”的童年,如果天上的物体都可以拿下来,又会弹上去,放在动画里也许会很有趣。
因为我想要的通过p5来完成大作业,所以我在p5.js官网的例子中寻找类似的弹力作用。
在这里插入图片描述
很明显这跟我们平时的物理公式很像
摩擦力f=-kx
加速度a=f/m

我根据processing的例子,将他们统统用线串起来,因为其中用重力的因素,所以将几个云朵定在某一位置。鼠标拉扯会有云朵被拽下来又弹回去的感觉,我觉得还蛮有意思:)
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

月亮可以根据鼠标的移动,演绎出“阴晴圆缺”,主要运用了constrain这个函数

在这里插入图片描述
constrain函数把mouseX限制在102-540,根据两个圆在空间上起始位置不同以及其移动,就回有月亮阴晴圆缺的效果。

之后我增加了星星的粒子系统,点击空格键时,鼠标所放置位置就朝各个方向冒出许多星星:

在这里插入图片描述

粒子系统在代码本色第四章中,作者也给了十分详尽的解答。典型的粒子系统中都有一个发射器,发射器是粒子的源头,它控制粒子的初始属性, 包括位置、速度等。发射器发射的粒子可能是一股粒子,也可能是连续的粒子流,或是同时包含这两种发射方式。

在这里插入图片描述

lifespan表示了粒子的生存周期,为了便与实现,我们一般从255开始递减,生存期的范围一般是255~0。在这里插入图片描述

在我的动画系统中,我还增加了第二个粒子系统:它可以通过彼此之间的吸引和排斥进行有趣的动画:

鼠标点击产生新粒子,按p可以让所有粒子弹开,按r可以使所有粒子消失

左上角是该粒子系统的重力以及摩擦力,右下角记录粒子数目。
除此之外我还加了一个小火箭,它可以根据鼠标点击不停变换方向
在这里插入图片描述

粒子系统部分代码
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
老师最近对高数在代码中的运用给我们讲了很多,通过自己的理解以及阅读各种材料,学习到了很多知识,也不禁感叹高数、物理的奇妙。

做完作业之后,总结了一下,发现自己重复使用的代码有些多,不够简洁,希望自己将来有机会可以做出更成熟的作品。

引用

(1)The Nature of Code: Simulating
Natural Systems with Processing by Daniel Shiffman. 2012 . 周晗彬 译.
(2)creative coding
https://www.openprocessing.org/?tdsourcetag=s_pcqq_aiomsg
(3)p5官网
https://p5js.org/
(4)粒子系统的应用
https://dev.gameres.com/program/visual/effects/lizi/

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值