博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Unity post processing stack(v1版本)脚本控制
阅读量:6508 次
发布时间:2019-06-24

本文共 1927 字,大约阅读时间需要 6 分钟。

环境:Unity5.6.2,post processing stack

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

首先,在相机上绑上PostProcessingBehaviour这个脚本

Unity post processing stack(v1版本)脚本控制

在Project视图中右键->Create->Post-Processing Profile
Unity post processing stack(v1版本)脚本控制
并赋值到post processing behaviour的Profile上

选中刚刚新建的Post-Processing Profile文件

在Inspector面板中就可以进行设置了

Unity post processing stack(v1版本)脚本控制

那如何通过代码来进行控制呢?

这里有坑啊,而且与以前的ImageEffects是不同的

首先当然要获取这个PostProcessingBehaviour

PostProcessingBehaviour ppb=GetComponent
();

然后要获取创建的这个profile文件对象

var profile = ppb.profile;

再获取这个Color Grading效果

var colorGrading = profile.colorGrading;

获取它上面的设置

var settings = colorGrading.settings;

然后坑就来了,先看下图

以Color Grading这个效果为例:
Unity post processing stack(v1版本)脚本控制
它的面板中其实又分了几部分
Tonmapping和TrackBalls可以不管
有Basic, Chanel Mixer 还有Grading Curves

按照正常思维,在settings后面直接点,OK是可以的

本例我们设定要修改的是Basic部分中的Post Exposure(EV)的值
可以直接点出basic,再直接点出PostExposure都是没问题的,甚至可以直接赋值

settings.basic.postExposure = -1.2f;

没有问题,也不会报错,但运行程序,没有任何效果,面板中post exposure的值也没有变化。

这就是坑所在了。

正确的做法是,new 一个settings,把里面的post exposure值改掉,再赋给ColorGrading组件

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

而new一个settings只修改里面的exposure值,依然有坑

如前图所示,Color Grading面板中分为几个部分,有basic, Chanel Mixer还有Grading Curves

但是new 出来的settings里面其实基本上是空的,所以所有的这一切都要赋值,不然会报错
赋值就在new 的时候一并进行
而既然其它部分不变,则用之前点点点的方式获取,并赋给这个新建的settings,最后再将settings整个赋值回去

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 出来一个settings最后再赋值回去

ppb.colorGrading.settings = settings;

如此修改才能生效,而之后再对值进行修改的话,直接在新建的settings上点出属性,直接赋值,再把settings赋值回去

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

也就是每次修改,改的是你新建的settings,但最后还是要把整个settings赋值回去才能生效

以上

转载于:https://blog.51cto.com/shuxiayeshou/2161928

你可能感兴趣的文章
详解BI/数据分析/数据挖掘/业务分析概念
查看>>
HTML5的优缺点
查看>>
一致性哈希算法
查看>>
自动行政审批流程组件的审批流程节点定义【民间称为工作流组件、官方称为审批流程组件】...
查看>>
syslogd & klogd(转)
查看>>
最新QQ APK逆向重打包成功!
查看>>
阿里架构师教你如何设计一个 RPC 系统!
查看>>
CSS3 transform变换
查看>>
让NodeJs更快的10个技巧
查看>>
Maven 3 入门 -- 如何创建一个web应用程序
查看>>
shell脚本学习(一)
查看>>
作为app运营,你需要get的技能有哪些? 总结七项APP运营技能
查看>>
微信互联网:如何让别人找到你的小程序?
查看>>
基础平台或开发框架什么的系统应该有的功能
查看>>
怎么把工作型PPT制作的好看又专业?
查看>>
葯死小老鼠
查看>>
怎样将手机中的录音转换成文字
查看>>
如何找到 Kafka 集群的吞吐量极限?
查看>>
如何利用在线画图网站绘制流程图
查看>>
清空的回收站文件如何还原?这个方法超实用
查看>>