星鸿阁

 找回密码
 立即注册
搜索
热搜: 活动 交友 动画
查看: 4454|回复: 0

教你通过代码修改HDRP的Volume,你一定用得上,此方法URP也适用

[复制链接]

2250

主题

2760

帖子

9610

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9610
发表于 2020-10-13 14:26:42 | 显示全部楼层 |阅读模式
大家好,Tobi来这记一下我最近学HDRP的一些心得。最近在学习HDRP的使用,其中最主要的当然就是Volume框架了。但是现在大部分博客都在讲用出来的效果,我这里就不一个个演示了,有兴趣的可以自己去一个个慢慢试着玩。


最近在使用HDRP的过程中,我想通过代码来动态修改HDRP的Volume的值,于是上网搜了一下,都是以前PostProcessVolume的一些代码,这个组件现在基本用不上了。然后又看了看官方文档,也没有相关示例,甚至没看到Volume的命名空间。


很多美术都是通过Volume在Local模式下的BlendDistance来控制动态效果,其实这样有很多弊端。


于是我就自己试了试,发现Volume的命名空间是UnityEngine.Rendering。


于是我新建了一个脚本叫PostProcessController。并且挂在了新建的HDRP工程的Post Process Volume下面。然后我随手Override了几个效果。如图:














为了看看Volume里面有什么,我在PostProcessController的Start里,通过profile获取了所有组件,并打印了出来。














结果如下:














这样看来,可以通过一个VolumeComponent的List获取全部组件。


这个时候再用List的操作来获取具体组件,然后我们可以通过VolumeComponent的parameters来获取组件上的参数。


这个时候我再次打印parameters,看看上面的内容,我打印了Vignette:














结果如下:














这时候你会发现上面的Vignette的参数只有7个,怎么这里有9个,其实另外两个是你切换模式后,新的模式下的两个参数Mask和Opacity。














由于Mode和Color在两种模式下是一样的,所以共享参数一和二的位置。


八九的位置就是Mask和Opacity。


这里再说一下Vignette。Vignette可以让你遮罩你的相机画面,让你相机被任何颜色或形状覆盖掉,我觉得这个用途很广。很多Unity的网上示例让你在相机前放一个黑色的Plane来控制其Alpha去实现屏幕变黑的效果,但是那个问题有时候很多,而这个比较正规一点,我这里就用Masked的模式来动态的切换相机的画面是否变黑,我在Mask上放上了UIMask。


在控制参数的时候一定要确保参数是被勾选的,不然代码不会起作用,当然你也可以在代码里面通过VolumeParameterd的overrideState判断一下该参数是否选中。


设置参数的时候通过VolumeParameter的SetValue来设置,传一个VolumeParameter作为参数:














然后我就对VolumeParameter的赋值产生了兴趣。因为它的构造是Protected的。


为了给Opacity传递float值,我通过gettype查看其类型:














结果如下:














然后我又看了看ClampedFloatParameter,发现为了安全性,它的构造特别长,但是我想看看有没有短的,然后看到了它的父类FloatParameter。














FloatParameter的构造就可以直接传递Float了:














为了演示效果,我在Update里面加入了不停更新数值的代码:


















好了,效果是这样的:














其他的组件像DepthOfField、Exposure什么的都能这样通过代码控制。


但是这里友好的提示一下VR程序的用户,类似Motion Blur(动态模糊)、Depth of Field(景深效果)等等一些HDRP效果,这些专为模拟摄像机画面的效果,其实VR开发里面用的不多,可以说基本用不上,对于VR程序员,还是专注的看看对自己有用的组件比较好。


好了,动态修改HDRP的Volume就介绍到这里,希望Tobi这篇文章能帮到你,谢谢~~~


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|starfluidga

GMT+8, 2025-1-2 06:51 , Processed in 0.016574 second(s), 21 queries .

Made by Liga 星鸿阁

Copyright © 2020-2048, LigaStudio.

快速回复 返回顶部 返回列表