Post Processing组件安装和参数使用、Timeline


在这里插入图片描述

安装

在这里插入图片描述
创建配置文件
在这里插入图片描述
创建空物体并添加Post-process Volume
在这里插入图片描述
将配置文件拖到组件中,勾选is Global,这样效果才会全局响应,点击add effect添加各种效果,添加的效果信息在配置文件中也能看到,是同步的
在这里插入图片描述

创建postprocessing渲染专用的层,并将空物体选为该层
在这里插入图片描述
选中相机,添加post process layer组件,并在组件中选为该层
在这里插入图片描述

如果是URP版本:
1.在Hierarchy创建Global Volume;
2.在Global Volume组件中点击New,创建配置文件;
3.勾选主相机的use post process;
4.点击 add override添加效果;
5.URP要在URP资源中勾选HDR;

Ambient Occlusion 环境光遮蔽

适用:物体之间的交界处,模拟边边角角的暗部的效果;
调整前:
在这里插入图片描述
调整后:
在这里插入图片描述

Bloom 辉光效果

适用:从明亮的区域扩散出来的柔光效果;

调整前:
在这里插入图片描述

调整后;
在这里插入图片描述
在这里插入图片描述
常用的:
Threadshold:低于这个值的会变得更加柔光;
Dirtiness:污迹效果,设置贴图会有各种效果;

Chromatic Aberration 色差效果

适用:越往相机边缘越会有色彩偏移的效果,类似醉酒的感觉;
调整前:
在这里插入图片描述
调整后:
在这里插入图片描述

Vignette 边角压暗

适用:边角变暗,突出画面中心,类似狙击或者恐怖游戏的感觉;
调整前:
在这里插入图片描述
调整后:
在这里插入图片描述

Depth of Field 景深

适用:虚化背景;
调整前:
在这里插入图片描述

调整后;
在这里插入图片描述
在这里插入图片描述
Aperture:光圈比率,值越小,越模糊;

Motion Blur 运动模糊

Lens Distortion 镜头扭曲

调整前:
在这里插入图片描述

调整后;
在这里插入图片描述

Panini Projection 帕尼尼投影

适用:相当于拿放大镜看中间,两边还是正常状态;

其他的概念

Dithering 抖色

线性插值消除色阶,在颜色之间平滑过渡;2020版在相机中勾选

Anti-Aliasing 反锯齿

在这里插入图片描述

颜色效果

Tonemapper 色调映射

在这里插入图片描述
ACES:类似电影画风

White Balance 白平衡

在这里插入图片描述
Temperature控制冷暖色调,最小就是冷-蓝,最大是暖-黄橙
在这里插入图片描述
在这里插入图片描述
Tint:绿色和紫色的调整

Tone

post-exposure:曝光度
color filter:颜色过滤
Hue Shift:调整颜色通道
Saturation:饱和度,0时不会有颜色溢出
contrast:对比度
在这里插入图片描述

Hue vs Hue

用什么颜色替换原来的颜色
在这里插入图片描述
点击override开始编辑:
选择橙色的部分(两个点),在中间点一个点选择用什么颜色替换橙色
原来:
在这里插入图片描述
调整后:
在这里插入图片描述

Hue vs Sat

将特定的颜色饱和度降低

Sat vs Sat

整体饱和度调整

微调部分:

调整通道的量值
在这里插入图片描述
在这里插入图片描述
Lift:调整画面的暗部和明亮程度,值越小,暗部会加深;
Gamma:控制整体画面的中间色调;
Gain:柔和调节高光部分;

代码控制

有组件的情况

 private PostProcessVolume volume;
    private Vignette vignette;
    private bool isFading; 
    [SerializeField] private float fadeSpeed = 0.35f;

    #region 如何获取

    void Start()
    {
    
    
        volume = GetComponent<PostProcessVolume>();
        volume.profile.TryGetSettings(out vignette);
    }

    void Update()
    {
    
    
        if (Input.GetKeyDown(KeyCode.Space))
        {
    
    
            //不使用value就要讲floatPara强转float
            //vignette.intensity.value = 1.0f;
            //override可以退出以后保存设置
            //vignette.intensity.Override(1.0f);
            //vignette.enabled.Override(false);
            isFading = true;

        }
        if (isFading)
        {
    
    
            vignette.intensity.value += fadeSpeed * Time.deltaTime;
            if (vignette.intensity.value >= 0.75f)
                isFading = false;
        }
    }

    #endregion

没有组件的情况

   #region 如何创建
    private void Start()
    {
    
    
        vignette = ScriptableObject.CreateInstance<Vignette>();
        vignette.enabled.Override(true);
        vignette.intensity.Override(1.0f);
        //创建volume对象(渲染层,优先度,要配置的设置)
        volume = PostProcessManager.instance.QuickVolume(gameObject.layer, 1, vignette);

    }
    private void Update()
    {
    
    
        vignette.intensity.value = Mathf.Sin(Time.realtimeSinceStartup);
        Debug.Log(vignette.intensity.value);

    }
    private void OnDestroy()
    {
    
    
        RuntimeUtilities.DestroyVolume(volume, true, true);
    }
    #endregion

简易受伤效果

 #region 受伤效果
    private void Start()
    {
    
    
        volume = GetComponent<PostProcessVolume>();
        volume.profile.TryGetSettings(out vignette);
    }
    private void Update()
    {
    
    
        if (Input.GetKeyDown(KeyCode.Space))
            isDamaging = true;
        if (isDamaging&&isBack == false) {
    
    
            vignette.intensity.value += hurtSpeed * Time.deltaTime;
            vignette.color.value = hurtColor;
            if (vignette.intensity.value > 0.75f)
            {
    
    
                isDamaging = false;
                isBack = true;
            }
              
        }
        if (isBack)
        {
    
    
            vignette.intensity.value -= 5f * hurtSpeed * Time.deltaTime;
            if (vignette.intensity.value <= 0.05)
                isBack = false;

        }
    }

猜你喜欢

转载自blog.csdn.net/memory_MM_forever/article/details/118599068