您好,登錄后才能下訂單哦!
環(huán)境:Unity5.6.2,post processing stack
注意:post-processing stack是從AssetStore上下載的v1版本,而并非stack2版本,stack2版本在unity2018的packagemanager中可以直接下載安裝
首先,在相機(jī)上綁上PostProcessingBehaviour這個(gè)腳本
在Project視圖中右鍵->Create->Post-Processing Profile
并賦值到post processing behaviour的Profile上
選中剛剛新建的Post-Processing Profile文件
在Inspector面板中就可以進(jìn)行設(shè)置了
那如何通過代碼來進(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è)效果為例:
它的面板中其實(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賦值回去才能生效
以上
免責(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)容。