美文网首页
粒子流场(待定:交互)

粒子流场(待定:交互)

作者: 昵称好多想不出来 | 来源:发表于2019-12-16 21:17 被阅读0次

第一章内容就两句话啦:随机游走,Perlin噪声
前者原理简单,适用于各种创作,后者可以拓展更有趣的应用,譬如流场,《MineCraft》,去年OpenGl大作业复制《MineCraft》有用到,游戏里也用,很熟悉的概念了。所以选择了酷炫的流场。样图如下:


QQ截图20200110120018.png

粒子系统在自画像时已有涉及https://blog.csdn.net/WSXOKMLHDFEH/article/details/102898389
但是即使有之前的粒子与噪声的应用经验,我也想不出如何能让一堆粒子的运动在空间上产生平滑效果。后来就搜了搜,一个有用的链接如下
https://zhuanlan.zhihu.com/p/27759509

读了一下代码,粒子行为同我之前的花瓣系统不同之处在于规定了加速度,并且加速度依托每一帧所在位置随机生成

float deg = 360.0*noise( loc.x/w,
      loc.y/h,
      millis()/10000.0);   
 rad=radians(deg);    
acc.set(cos(rad), sin(rad));
speed.add(acc);
    if (speed.magSq()>maxVel) {
      speed.normalize();
      speed.mult(maxVel);
    }
    loc.add(speed);

如此,粒子运动就能表现出空间连续相关啦

那么问题来啦,要如何交互呢?交互基本上依靠鼠标坐标,那么要如何检测鼠标击中的粒子呢?毕竟粒子乱飞,鼠标很难依靠位置去捕捉粒子并拿到粒子的引用,只有在每一个粒子中规定检测鼠标的行为,这会带来两个问题:

1. 计算复杂度飞增,每一个粒子需要每一帧检测与鼠标的距离,而能捕捉到鼠标的粒子在空间与时间维度上比例极小。开销过大,冗余也过大。

2.即使鼠标能捕捉到粒子,又要如何做到对粒子的影响是以击中的粒子为圆心向外扩散并且逐渐减小呢?

能捕捉到粒子已经很难了,还要对周围粒子进行平滑处理。哇,我着实挠头了许久。而且processing教程还很少,哭泣。
后来我翻了一下《代码本色》目录,看到第六章有流场,翻过去看了看。它在二维数组里规定一堆向量,其方向依靠Perlin噪声生成平滑变化的场。这个概念简单,后来又讲要获取场中小车的速度。没有看上下文,推测前面是讲规定小车速度加速度之类的。

感觉没多少启发。几分钟后再看了获取小车速度函数是突然就明白了:流场 流场,就好像电子在电场中跑一样,真正要随着时间改变方向,速度,以及同鼠标发生交互的应该是一个规定好的二维数组,而粒子要做的就只是读取当前位置所在的数组值作为方向跑就是了。

That's it !
于是迅捷写好代码,流场展示如下:


QQ截图20200110120052.png

粒子展示如下:


QQ截图20200110120018.png

然后我们要流场随着时间改变方向,可匀速,也可变速,但为了后面的交互,匀速先。

如果说此时鼠标点击,我们应该改变流场。问题来了,之前的流场我仅作为速度,作加速度也可。但是如之前的《星空》中所展现的,鼠标的移动改变了一些粒子的运动方向,并且在一段时间后恢复。那么这个改变是要作为速度还是方向赋予粒子?当然时间空间的平滑变化好处理,空间上应该要有函数以鼠标为圆点向周围网格赋上递减的力,时间上让这个力以时间递减最后为零。但这段时间过后,粒子应当遵从什么运动?
啊,乱了。不想了,过几天更!

相关文章

  • 粒子流场(待定:交互)

    第一章内容就两句话啦:随机游走,Perlin噪声前者原理简单,适用于各种创作,后者可以拓展更有趣的应用,譬如流场,...

  • 粒子流效果

    ContainerView是容器视图. 属性:## birthRate:粒子产生系数,默认1.0; emitter...

  • 绘制力场 鼠标拖动,叠加相应的力到场上 显示场 粒子 添加粒子 粒子受到力场影响 触边检测 使用图片 粒子使用背景...

  • 太阳风

    太阳风是从太阳大气最外层的日冕向外持续抛射出来的带电粒子流,其主要成分是氢粒子和氦粒子。带电粒子流流动时所产生的效...

  • 作业导航

    1.第0章练习:第0章主要内容:随机游走与噪声。根据上述内容我做出基于流场的粒子运动https://www.jia...

  • canvas 会动的粒子效果

    particle-field canvas实现粒子场的动画效果 实现效果:粒子会动并且在一定范围内粒子之间出现连线...

  • 粒子流源制作烟花

    ①改单位 自定义——单位设置——公制——厘米 ②改时间轴 时间配置——(帧速率里面)自定义,把FPS改成25,然后...

  • 组件和碰撞

    学习利用组件将Pawn与物理交互、使用粒子效果等方法。 创建 Pawn 子类 为了能对 Actor 进行控制, 创...

  • 场论动力学(五)

    初原场 前面文章中说,宇宙中的每一个物质都是一个质能场。大天体有大的质能场,小粒子也有小的质能场,即使最基本的粒子...

  • 振斜偏粒子场

    这是虫群在步入前宇宙时代的时候,所研发的一种攻防兼备的粒子场。因为能量场可以在扭曲能量光束,并使其发生偏转,所以被...

网友评论

      本文标题:粒子流场(待定:交互)

      本文链接:https://www.haomeiwen.com/subject/iwadnctx.html