粒子流場(待定:交互)

第一章內(nèi)容就兩句話啦:隨機(jī)游走,Perlin噪聲
前者原理簡單涤伐,適用于各種創(chuàng)作馒胆,后者可以拓展更有趣的應(yīng)用,譬如流場凝果,《MineCraft》,去年OpenGl大作業(yè)復(fù)制《MineCraft》有用到国章,游戲里也用,很熟悉的概念了豆村。所以選擇了酷炫的流場液兽。樣圖如下:


QQ截圖20200110120018.png

粒子系統(tǒng)在自畫像時(shí)已有涉及https://blog.csdn.net/WSXOKMLHDFEH/article/details/102898389
但是即使有之前的粒子與噪聲的應(yīng)用經(jīng)驗(yàn),我也想不出如何能讓一堆粒子的運(yùn)動(dòng)在空間上產(chǎn)生平滑效果掌动。后來就搜了搜四啰,一個(gè)有用的鏈接如下
https://zhuanlan.zhihu.com/p/27759509

讀了一下代碼,粒子行為同我之前的花瓣系統(tǒng)不同之處在于規(guī)定了加速度粗恢,并且加速度依托每一幀所在位置隨機(jī)生成

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);

如此柑晒,粒子運(yùn)動(dòng)就能表現(xiàn)出空間連續(xù)相關(guān)啦

那么問題來啦,要如何交互呢眷射?交互基本上依靠鼠標(biāo)坐標(biāo)匙赞,那么要如何檢測鼠標(biāo)擊中的粒子呢佛掖?畢竟粒子亂飛,鼠標(biāo)很難依靠位置去捕捉粒子并拿到粒子的引用涌庭,只有在每一個(gè)粒子中規(guī)定檢測鼠標(biāo)的行為芥被,這會帶來兩個(gè)問題:

1. 計(jì)算復(fù)雜度飛增,每一個(gè)粒子需要每一幀檢測與鼠標(biāo)的距離坐榆,而能捕捉到鼠標(biāo)的粒子在空間與時(shí)間維度上比例極小拴魄。開銷過大,冗余也過大席镀。

2.即使鼠標(biāo)能捕捉到粒子匹中,又要如何做到對粒子的影響是以擊中的粒子為圓心向外擴(kuò)散并且逐漸減小呢?

能捕捉到粒子已經(jīng)很難了豪诲,還要對周圍粒子進(jìn)行平滑處理顶捷。哇,我著實(shí)撓頭了許久屎篱。而且processing教程還很少焊切,哭泣。
后來我翻了一下《代碼本色》目錄芳室,看到第六章有流場专肪,翻過去看了看。它在二維數(shù)組里規(guī)定一堆向量堪侯,其方向依靠Perlin噪聲生成平滑變化的場嚎尤。這個(gè)概念簡單,后來又講要獲取場中小車的速度伍宦。沒有看上下文芽死,推測前面是講規(guī)定小車速度加速度之類的。

感覺沒多少啟發(fā)次洼。幾分鐘后再看了獲取小車速度函數(shù)是突然就明白了:流場 流場关贵,就好像電子在電場中跑一樣,真正要隨著時(shí)間改變方向卖毁,速度揖曾,以及同鼠標(biāo)發(fā)生交互的應(yīng)該是一個(gè)規(guī)定好的二維數(shù)組,而粒子要做的就只是讀取當(dāng)前位置所在的數(shù)組值作為方向跑就是了亥啦。

That's it !
于是迅捷寫好代碼炭剪,流場展示如下:


QQ截圖20200110120052.png

粒子展示如下:


QQ截圖20200110120018.png

然后我們要流場隨著時(shí)間改變方向,可勻速翔脱,也可變速奴拦,但為了后面的交互,勻速先届吁。

如果說此時(shí)鼠標(biāo)點(diǎn)擊错妖,我們應(yīng)該改變流場绿鸣。問題來了,之前的流場我僅作為速度暂氯,作加速度也可潮模。但是如之前的《星空》中所展現(xiàn)的,鼠標(biāo)的移動(dòng)改變了一些粒子的運(yùn)動(dòng)方向株旷,并且在一段時(shí)間后恢復(fù)再登。那么這個(gè)改變是要作為速度還是方向賦予粒子?當(dāng)然時(shí)間空間的平滑變化好處理尔邓,空間上應(yīng)該要有函數(shù)以鼠標(biāo)為圓點(diǎn)向周圍網(wǎng)格賦上遞減的力晾剖,時(shí)間上讓這個(gè)力以時(shí)間遞減最后為零。但這段時(shí)間過后梯嗽,粒子應(yīng)當(dāng)遵從什么運(yùn)動(dòng)齿尽?
啊,亂了灯节。不想了循头,過幾天更!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末炎疆,一起剝皮案震驚了整個(gè)濱河市卡骂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌形入,老刑警劉巖全跨,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異亿遂,居然都是意外死亡浓若,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門蛇数,熙熙樓的掌柜王于貴愁眉苦臉地迎上來挪钓,“玉大人,你說我怎么就攤上這事耳舅÷瞪希” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵浦徊,是天一觀的道長绍赛。 經(jīng)常有香客問我,道長辑畦,這世上最難降的妖魔是什么吗蚌? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮纯出,結(jié)果婚禮上蚯妇,老公的妹妹穿的比我還像新娘敷燎。我一直安慰自己,他們只是感情好箩言,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布硬贯。 她就那樣靜靜地躺著,像睡著了一般陨收。 火紅的嫁衣襯著肌膚如雪饭豹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天务漩,我揣著相機(jī)與錄音拄衰,去河邊找鬼。 笑死饵骨,一個(gè)胖子當(dāng)著我的面吹牛翘悉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播居触,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼妖混,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了轮洋?” 一聲冷哼從身側(cè)響起制市,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎弊予,沒想到半個(gè)月后祥楣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了牛隅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,100評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡振坚,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出斋扰,到底是詐尸還是另有隱情渡八,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布传货,位于F島的核電站屎鳍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏问裕。R本人自食惡果不足惜逮壁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望粮宛。 院中可真熱鬧窥淆,春花似錦卖宠、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至词裤,卻和暖如春刺洒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吼砂。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工逆航, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人帅刊。 一個(gè)月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓纸泡,卻偏偏與公主長得像漂问,于是被迫代替她去往敵國和親赖瞒。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評論 2 345