溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Unity post processing stack(v1

發(fā)布時(shí)間:2020-07-07 12:07:59 來源:網(wǎng)絡(luò) 閱讀:11842 作者:lreach 欄目:游戲開發(fā)

環(huán)境:Unity5.6.2,post processing stack

注意:post-processing stack是從AssetStore上下載的v1版本,而并非stack2版本,stack2版本在unity2018的packagemanager中可以直接下載安裝

首先,在相機(jī)上綁上PostProcessingBehaviour這個(gè)腳本

Unity post processing stack(v1
在Project視圖中右鍵->Create->Post-Processing Profile
Unity post processing stack(v1
并賦值到post processing behaviour的Profile上

選中剛剛新建的Post-Processing Profile文件

在Inspector面板中就可以進(jìn)行設(shè)置了
Unity post processing stack(v1

那如何通過代碼來進(jìn)行控制呢?
這里有坑啊,而且與以前的ImageEffects是不同的

首先當(dāng)然要獲取這個(gè)PostProcessingBehaviour

PostProcessingBehaviour ppb=GetComponent<PostProcessingBehaviour>();

然后要獲取創(chuàng)建的這個(gè)profile文件對(duì)象

var profile = ppb.profile;

再獲取這個(gè)Color Grading效果

var colorGrading = profile.colorGrading;

獲取它上面的設(shè)置

var settings = colorGrading.settings;

然后坑就來了,先看下圖
以Color Grading這個(gè)效果為例:
Unity post processing stack(v1
它的面板中其實(shí)又分了幾部分
Tonmapping和TrackBalls可以不管
有Basic, Chanel Mixer 還有Grading Curves

按照正常思維,在settings后面直接點(diǎn),OK是可以的
本例我們?cè)O(shè)定要修改的是Basic部分中的Post Exposure(EV)的值
可以直接點(diǎn)出basic,再直接點(diǎn)出PostExposure都是沒問題的,甚至可以直接賦值

settings.basic.postExposure = -1.2f;

沒有問題,也不會(huì)報(bào)錯(cuò),但運(yùn)行程序,沒有任何效果,面板中post exposure的值也沒有變化。
這就是坑所在了。

正確的做法是,new 一個(gè)settings,把里面的post exposure值改掉,再賦給ColorGrading組件

var settings = new ColorGradingModel.Settings() ;
colorGrading.settings=settings;

而new一個(gè)settings只修改里面的exposure值,依然有坑

如前圖所示,Color Grading面板中分為幾個(gè)部分,有basic, Chanel Mixer還有Grading Curves
但是new 出來的settings里面其實(shí)基本上是空的,所以所有的這一切都要賦值,不然會(huì)報(bào)錯(cuò)
賦值就在new 的時(shí)候一并進(jìn)行
而既然其它部分不變,則用之前點(diǎn)點(diǎn)點(diǎn)的方式獲取,并賦給這個(gè)新建的settings,最后再將settings整個(gè)賦值回去

var scurves = ppb.profile.colorGrading.settings.curves;
var schannelMixer = ppb.profile.colorGrading.settings.channelMixer;
var settings = new ColorGradingModel.Settings() {
    basic = {postExposure = -1.2f, contrast = 1, saturation = 1, hueShift = 0, tint = 0, temperature = 0 }  ,
    curves = scurves,
    channelMixer = schannelMixer
}

這樣new 出來一個(gè)settings最后再賦值回去

ppb.colorGrading.settings = settings;

如此修改才能生效,而之后再對(duì)值進(jìn)行修改的話,直接在新建的settings上點(diǎn)出屬性,直接賦值,再把settings賦值回去

settings.basic.postExposure = 10f;
ppb.colorGrading.settings = settings;

也就是每次修改,改的是你新建的settings,但最后還是要把整個(gè)settings賦值回去才能生效

以上

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI