当前位置: 首页 > news >正文

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

环境: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<PostProcessingBehaviour>();

然后要获取创建的这个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

相关文章:

  • 输出 1-100 内的所有偶数
  • 要求越来越高了 看看下一代云是什么样
  • [BZOJ] 3262: 陌上花开
  • p6spy 显示完整可执行的SQL
  • Django 模板之组件、静态文件导入
  • 购物车程序
  • 【独立开发】从点子到创收
  • web项目中使用流程引擎
  • RESTful实践(具体应用)思考
  • 科幻作家眼中的人工智能:情感和自我意识不可或缺
  • 【前端学习】-粗谈选择器
  • powermock单元测试
  • 9月20日学习内容整理:封装,私有属性方法,用装饰器描述的方法
  • 车联网上云最佳实践(三)
  • Codeforces Round #435 (Div. 2)
  • 【5+】跨webview多页面 触发事件(二)
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • crontab执行失败的多种原因
  • CSS盒模型深入
  • Java 网络编程(2):UDP 的使用
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • Javascript 原型链
  • js面向对象
  • js中forEach回调同异步问题
  • Node + FFmpeg 实现Canvas动画导出视频
  • php的插入排序,通过双层for循环
  • Promise面试题2实现异步串行执行
  • Spark学习笔记之相关记录
  • spring + angular 实现导出excel
  • SQLServer插入数据
  • 当SetTimeout遇到了字符串
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 关于使用markdown的方法(引自CSDN教程)
  • 技术胖1-4季视频复习— (看视频笔记)
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 驱动程序原理
  • 如何学习JavaEE,项目又该如何做?
  • 应用生命周期终极 DevOps 工具包
  • 中文输入法与React文本输入框的问题与解决方案
  • 进程与线程(三)——进程/线程间通信
  • ​linux启动进程的方式
  • ​渐进式Web应用PWA的未来
  • #HarmonyOS:Web组件的使用
  • #NOIP 2014# day.1 T2 联合权值
  • #NOIP 2014# day.2 T2 寻找道路
  • #经典论文 异质山坡的物理模型 2 有效导水率
  • (1)bark-ml
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (篇九)MySQL常用内置函数
  • (十一)c52学习之旅-动态数码管
  • (一)插入排序
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模