BabylonJS后處理系列: 后處理掃光

后處理掃光是很早之前為大場(chǎng)景制作的后處理效果西乖,也在群里吸取了很多群友的意見不斷完善顯示效果松靡。這是一個(gè)比較簡(jiǎn)單但是思想上比較基礎(chǔ)泛用的后處理效果简僧,以此舉一反三可以制作很多種類的效果。本文最終的PG路徑:雕欺。

步驟規(guī)劃

想要制作掃光后處理岛马,我們只需要做三件事情:

  1. 深度重建世界坐標(biāo)。
  2. 通過世界坐標(biāo)計(jì)算掃光的前進(jìn)軸x軸和與前進(jìn)軸垂直的等勢(shì)軸y軸屠列。
  3. 根據(jù)前進(jìn)軸的x軸和y軸繪制出顏色效果啦逆。

具體步驟

  1. 深度重建世界坐標(biāo)的過程已經(jīng)在BabylonJS后處理系列: 深度基礎(chǔ)中介紹過了,這里將在BabylonJS后處理系列: 深度基礎(chǔ)的PG的基礎(chǔ)上繼續(xù)制作笛洛。PG
  2. 這一步先以水平掃光舉例夏志,我們添加一個(gè)角度控制掃光的方向,然后用下列的函數(shù)變幻出前進(jìn)軸和等勢(shì)軸苛让。PG
vec2 getScanAxis(vec3 wPos){
    float angle = scanAngle/180.*PI;
    vec2 sPos;
    sPos.x = wPos.x*cos(angle)+wPos.z*sin(angle);
    sPos.y = wPos.z*cos(angle)-wPos.x*sin(angle);
    return sPos;
}

3.第三步根據(jù)前進(jìn)軸進(jìn)行Remap沟蔑,然后繪制顏色。

//首先沿X軸按掃光間隔長(zhǎng)度進(jìn)行取余得到 frontLine 狱杰。
float frontLine = mod(axisPos.x-scanTime,scanLength);
//將frontLine歸1
float scanLine = frontLine/scanLength;
//根據(jù)Percent將frontLine平移縮放瘦材,使得只有Percent*長(zhǎng)度的部分在X軸的上方,然后取大于0的值仿畸。
scanLine = max((scanLine-1.+scanPercent)/scanPercent,0.);

這樣我們就獲取到了一個(gè)寬占掃光間隔長(zhǎng)度百分之N的范圍為0-1的線性帶食棕,這一條為掃光的顯示區(qū)域,我們可以以scanLine為X軸错沽,等勢(shì)軸為y軸去計(jì)算顯色區(qū)域或采樣紋理等簿晓,這個(gè)可以自由發(fā)揮。PG

//求前沿高亮部分
float frontLineStep = step(scanLength-frontLine,frontLineWidth);
vec4 finColor ;
//獲取最終顏色
finColor.rgb = mix(scanColor*scanPower,frontColor,frontLineStep);
finColor.a = scanLine;
PG:https://playground.babylonjs.com/#KZP9WM#5

添加一個(gè)自定義TransformNode去控制參數(shù)(目前PostProcess的自定義控件好像有bug不顯示甥捺,只能創(chuàng)一個(gè)TransformNode去顯示)抢蚀。詳見LightScanTransformNode

簡(jiǎn)單拓展

1.平面掃描+不規(guī)則掃描前沿

vec4 getScanColor(vec2 axisPos){

    float scanX = axisPos.x +50. * (cos(axisPos.y/2./100.)+cos(axisPos.y/2./50.)+cos(axisPos.y/2./25.));
    float frontLine = mod(scanX-scanTime,scanLength);
.........
}


2.掃描面采樣

float scanWidth = scanLength * scanPercent * 0.5;
float scanHeight = scanWidth*4.;
vec3 scanTexColor = texture2D(scanTex,vec2(max(scanLine*2.-1.,0.),axisPos.y/scanHeight)).rgb;
finColor.rgb = max(finColor.rgb,scanTexColor);


3.以圓心擴(kuò)散掃光可以通過gizmo修改中心位置

vec2 getScanAxis(vec3 wPos){
    float angle = scanAngle/180.*PI;
    vec2 sPos;
    // sPos.x = wPos.x*cos(angle)+wPos.z*sin(angle);
    // sPos.y = wPos.z*cos(angle)-wPos.x*sin(angle);

    vec2 dtPos = wPos.xz - centerTarget.xz;
    sPos.x = length(dtPos);
    sPos.y = atan(dtPos.y,dtPos.x);

    return sPos;
}

4.以圓心擴(kuò)散掃光+不規(guī)則掃描前沿

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末镰禾,一起剝皮案震驚了整個(gè)濱河市皿曲,隨后出現(xiàn)的幾起案子唱逢,更是在濱河造成了極大的恐慌,老刑警劉巖屋休,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坞古,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡劫樟,警方通過查閱死者的電腦和手機(jī)痪枫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來叠艳,“玉大人奶陈,你說我怎么就攤上這事「浇希” “怎么了吃粒?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)拒课。 經(jīng)常有香客問我徐勃,道長(zhǎng),這世上最難降的妖魔是什么早像? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任僻肖,我火速辦了婚禮,結(jié)果婚禮上卢鹦,老公的妹妹穿的比我還像新娘臀脏。我一直安慰自己,他們只是感情好冀自,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布谁榜。 她就那樣靜靜地躺著,像睡著了一般凡纳。 火紅的嫁衣襯著肌膚如雪窃植。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天荐糜,我揣著相機(jī)與錄音巷怜,去河邊找鬼。 笑死暴氏,一個(gè)胖子當(dāng)著我的面吹牛延塑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播答渔,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼关带,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起宋雏,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤芜飘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后磨总,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嗦明,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年蚪燕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了娶牌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡馆纳,死狀恐怖诗良,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情鲁驶,我是刑警寧澤累榜,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站灵嫌,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏葛作。R本人自食惡果不足惜寿羞,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望赂蠢。 院中可真熱鬧绪穆,春花似錦、人聲如沸虱岂。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽第岖。三九已至难菌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蔑滓,已是汗流浹背郊酒。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留键袱,地道東北人燎窘。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像蹄咖,于是被迫代替她去往敵國(guó)和親褐健。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • Streak后處理效果開了個(gè)頭澜汤,這段時(shí)間準(zhǔn)備寫一些后處理相關(guān)的內(nèi)容蚜迅,深度是后處理里面一個(gè)非常重要的點(diǎn)舵匾,我們需要將深...
    DY_M閱讀 996評(píng)論 0 3
  • 前些日子偶然看見群友分享的車展場(chǎng)景的視頻,車輛的尾燈亮起的時(shí)候慢叨,屏幕有水平臟鏡的效果纽匙,想起之前在Keijiro大佬...
    DY_M閱讀 588評(píng)論 0 0
  • 添加點(diǎn)擊歸位事件,也就是鼠標(biāo)點(diǎn)到導(dǎo)航盒的某一個(gè)面拍谐,讓攝像機(jī)運(yùn)動(dòng)到對(duì)準(zhǔn)那個(gè)面的軸上烛缔,這涉及到以下幾個(gè)問題:1.如何獲...
    DY_M閱讀 927評(píng)論 0 0
  • 第一節(jié)完成了模型的自定義生成,第二節(jié)開始完成導(dǎo)航盒場(chǎng)景的制作轩拨,這里我使用多場(chǎng)景的方式制作導(dǎo)航盒践瓷,這種方式可以使導(dǎo)航...
    DY_M閱讀 434評(píng)論 0 0
  • 這一節(jié)主要編寫生成導(dǎo)航盒模型的代碼,將以創(chuàng)造自定義模型為中心進(jìn)行講解亡蓉。想閱覽相關(guān)官方文檔的小伙伴可以自行前往(ht...
    DY_M閱讀 545評(píng)論 0 1