UE4_照亮环境_光束light beam

news2024/11/28 16:29:31

学习笔记,不喜勿喷,侵权立删!祝愿生活越来越好!

光束:模拟大气中散射的光线。利用定向光源模拟真实曙暮光效果或大气散射的阴影,即可生成 光束 。这些光线为场景添加深度和真实度。

一:一些参数介绍:

定向光源在其属性中拥有一个 Light Shaft 类目,

以下是这些属性的参考。

属性

描述

定向光源

Enable Light Shaft Occlusion

确定此光源是否对雾气和大气散射形成屏幕空间模糊遮挡。

Occlusion Mask Darkness

确定遮挡遮罩的颜色深度。数值 1 为无深色调。可使用大于 1 和小于 0 的数值,构成更为专业的效果。

Occlusion Depth Range

在此距离到摄像机之间的物体均会对光束构成遮挡。

Enable Light Shaft Bloom

确定是否渲染此光源的光束光晕。就定向光源而言,光源方向周围的颜色将呈放射性模糊,然后重新添加至场景中。

Bloom Scale

调整光晕的加色,使其更明显/不明显。

Bloom Threshold

场景颜色必须大于此阈值方可在光束中形成光晕。

Bloom Tint

与场景颜色一同构成光晕颜色。它为光束光晕效果着色。

Light Shaft Override Direction

可使光束来自光源实际方向以外的其他位置(必须在非零时使用,无需进行标准化)。

下面是编译器翻译:

遮挡法

遮挡法从屏幕上物体的深度创建遮罩,将其从光线中模糊掉,并将其用于雾气和大气的遮罩。它和现实生活中的光束类似 - 光束由雾气的阴影所生成。请注意:这也意味着光束的强弱度只能和雾气/大气相同。它用于游戏中,旨在获得更真实的效果。

太阳定向光源可稍微偏离屏幕并产生遮挡光束。然而与太阳之间的角度接近 90 度时,光束将逐渐淡出。

光晕法

光晕法将在世界空间中的光源周围捕捉场景颜色(包括半透明度和雾气散射),并从光源进行放射性模糊。此法并非对真实世界中发生的一切进行模拟,但可控性较高(不受雾气密度限制),视觉效果震撼。太阳周围存在突出的明亮区域(如明亮的云朵)时光晕法的使用效果最佳。明亮的太阳过小,因此将形成一定程度的锯齿,而模糊是一个图像空间操作。

GPU 消耗

这些效果(遮挡和光晕)存在单独的消耗,因此只启用必要的效果方为上策。使用 680GTX 显卡运行 1080p 画面时,遮挡为 .5ms,单个光源上的光晕为 .68ms。

二:一些实现方法:

1、使用几何体和材质的方法来创建

这种方法的GPU开销最低,但是得需要创建几何体和材质,但无法保证所有角度或情况下都拥有良好的效果,并且无法精确的模拟物理效果,这种技术最适合低端设备,例如手机。

2、使用光束:

这种方法会用到光束,光束的GPU开销更高,并且只能用于特定的定向光源,只能用于屏幕空间,意味着定向光源必须位于屏幕中,你才能看见光束,有两种方法可以生成光束:一种是使用泛光bloom让屏幕变亮来实现另一种是使用遮蔽让屏幕变暗来创建光束。可以同时使用2种方法,但这也会导致性能开销变大。

3、体积雾

体积雾的GPU开销更高,场景中的光源越多尤其是如果光源会生成体积阴影那么开销就越大。好处在于体积雾可以与点光源、聚光源、矩形光源、定向光源一起使用。它还能与定向光源的光照函数以及动态和静态阴影一起使用。你甚至还能使用粒子将雾效限制在特定场景区域内。体积雾的另外一个好处是它能精确模拟物理效果,并且支持半透明,但是无法准确表现ies描述文件。

三、操作步骤:

1、添加指数高度雾。

2、添加一个太阳光(平行光)。先使用第二种方法,找到细节面板-光束,同时启用光束泛光和光束遮挡。

一种方法是降低亮度,另一种是调整天空球材质。天空球这里使用hdr图片

我们可以控制图片的亮度。我们也可以使用光束下的泛光缩放bloom scale来调整亮度。

3、我们关闭光束的光束遮挡和光束泛光,来看看体积雾制作效果

我们需要使用定向光源的体积散射强度,它控制着光束的光照强度。

我们需要开启Atmosphere Fog Sunlight。

继续向下,定向光源会默认开启Cast Volumetric Shadows

选中指数高度雾,开启体积雾Volumetric fog

如果不改动默认设置,效果看起来并不明显,我们为了让效果明显我们把Volumetric Scattering Intensity改为30,效果如下:

回到指数高度雾,高度雾的密度可以有多种控制方式,首先雾密度可以控制,雾高度衰减也可以控制,雾Actor位置,这能控制雾气中最浓密位置的起始点,可以调坐标,雾高度衰减通常以此点为起点。

调整体积雾的各个选项,首先是Scattering Distribution,基于你观察光束的角度控制光束强度,此值为0.2时,甚至背对光源也能看见光束。

效果如图:

当把此值设为0.9,发现摄像机对着光源才能看清光束。记得设回0.3.

接着是反射率Albedo,反射率控制着粒子在大气中的反射程度,如果是雾、云团、迷雾或者其它由水分子构成的雾就需要尽量设为1,也就是白色,如果你降低这个值,你就能模拟出烟雾,雾霾以及其它并非由水分子构成的雾效,设为0.16,如下图:

还可以设置雾的颜色(改变反射率颜色),

改回白色,另一个参数为Emissive自发光,如果没有烘焙光线,可用于渲染全局光照,还能用来生成自带关照的雾效以及其它美术效果。

接着是消光比例,它基本上就是控制雾光束的强度,它的实际作用就是控制参与媒介遮挡光线的程度。如果增加这个值,看见光束更加不透明了。

降低此数值,可让光束更加透明,如下图:

此外还有View Distance可视距离,它能控制雾效会在距离摄像机多远的距离生成,距离越远,出现渲染瑕疵的可能性越大,谨慎使用。如果数值太低,你可能在背景中的体积雾发现一些瑕疵,如下图:

我们使用默认的6000.

静态光照散射Static Light Scattering 控制着烘焙光照在体积雾中的贡献,它的办法是使用一张体积光照贴图,体积光照贴图会在lightmass烘焙光照时生成,我们可以可视化体积光照贴图,显示-可视化-体积光照贴图。

最后一个参数,使用雾内散射颜色覆盖光源颜色Override Light Colors with Fog in Scattering Colors,如果启用它,我们就可以基于三种不同的设置来调整体积雾的颜色。

第一个是雾内散射颜色,第二个是内散射立方体纹理,最后是定向内散射颜色

使用内散射颜色调整效果如下:

四、总结

如果打开视口选项,点击统计数据,advanced,勾选GPU,在GPU中我们可以看见体积雾当前渲染时间。设置-引擎可延展性,我们更改阴影设置为high,但会有瑕疵,渲染时间更少。另外一种影响体积雾效能的是在体积雾中使用点光源和聚光源,拖入聚光灯到场景,修改亮度,加大体积散射强度,启用投射体积雾阴影,发现渲染时间边长。如果出现光束时,雾效不是特别多,你可以降低全局雾密度,然后增加光源的体积散射强度。以便在不增加雾浓度的情况下,加强光束亮度。体积雾与光束一起使用,打开光束遮蔽,调整下面参数值,他对体积雾的光束产生了影响。

要想了解体积雾:查看以下链接:

视频链接:

UE使用体积光制作上帝之光视频教程_哔哩哔哩_bilibili

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1670707.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(四十一)第 6 章 树和二叉树(包含双亲的树的孩子链表存储)

1. 背景说明 2. 示例代码 1) errorRecord.h // 记录错误宏定义头文件#ifndef ERROR_RECORD_H #define ERROR_RECORD_H#include <stdio.h> #include <string.h> #include <stdint.h>// 从文件路径中提取文件名 #define FILE_NAME(X) strrchr(X, \\) ? strrch…

中学数学研究杂志中学数学研究杂志社中学数学研究编辑部2024年第4期目录

教学纵横 高中数学选择性必修课程函数主线分析 柳双;吴立宝; 1-4 贯彻新课程理念 促学习能力提升——以“三角函数诱导公式”教学为例 陆雨轩; 4-6《中学数学研究》投稿&#xff1a;cn7kantougao163.com 对高中数学新课标教材新增知识点的价值分析 钱伟风;刘瑞美; …

每个开发者都应该拥有的-云服务器!

每个开发者都应该拥有的-云服务器&#xff01; 第一台云服务器ECS言归正传云服务器妙用 每个开发者都该拥有一台云服务器 作为开发者&#xff0c;总是会时不时的跟服务器打交道&#xff0c;不管你是部署应用程序&#xff0c;还是在服务器上面搭建安装基础环境&#xff0c;比如J…

品牌设计理念和logo设计方法

一 品牌设计的目的 设计是为了传播&#xff0c;让传播速度更快&#xff0c;传播效率更高&#xff0c;减少宣传成本 二 什么是好的品牌设计 好的设计是为了让消费者更容易看懂、记住的设计&#xff0c; 从而辅助传播&#xff0c; 即 看得懂、记得住。 1 看得懂 就是让别人看懂…

vue3中使用cherry-markdown

附cherry-markdown官网及api使用示例 官网:https://github.com/Tencent/cherry-markdown/blob/main/README.CN.md api:Cherry Markdown API 考虑到复用性,我在插件的基础上做了二次封装,步骤如下: 1.下载 (一定要指定版本0.8.22,否则会报错: [vitel Internal server e…

AI仿站源码教程

AI仿站源码教程 随着AI技术的不断发展&#xff0c;仿站技术已经越来越成熟&#xff0c;通过AI一键仿站&#xff0c;开发者们可以更快速、更高效地搭建网站。传统的前端开发过程中&#xff0c;需要大量的手工编码和设计&#xff0c;而AI仿站技术可以通过截图或视频&#xff0c;…

RK3568/RK3588智慧校园AI盒子方案,电子班牌,出入口管制,数字化校园等,支持鸿蒙,支持免费定制

智慧校园解决方案基于物联网、人工智能等新兴技术&#xff0c;为师生构建智能化校园环境&#xff0c;涵盖了校园安全、智慧教室、考勤管理、智慧食堂等多个场景&#xff0c;从工作、学习到生活&#xff0c;带来更人性化、更便捷、更高效的服务。 方案架构 方案特点 全面感知校园…

信创应用软件之协同办公(OA)

信创应用软件之协同办公&#xff08;OA&#xff09; 概述 办公 “办公”一词源于历史上对公事、公务处理的简称&#xff0c;现代办公有了更先进的诠释&#xff0c;指在特定时间、特定空间中人互相协作、共同运作的过程&#xff0c; 即围绕以“人”为主的办公主体与其关联的一…

Web APIs 第一天( Dom获取属性操作)

Web API 基本认知 变量声明 1.变量声明有三个 var let 和 constl 我们应该用那个呢&#xff1f;首先var 先排除&#xff0c;老派写法&#xff0c;问题很多&#xff0c;可以淘汰掉…2. let or const ? 建议&#xff1a; const 优先&#xff0c;尽量使用const&#xff0c;原因…

html5的一些新特性

最近总是碰到html5特性这种问题,虽然简单,但是也是自己平时不关注的东西,趁今天时间充裕,那就来总结一下吧 HTML5新特性包括新增了部分标签、表单元素增强、支持视频和音频、支持canvas绘图、提供web存储、提供地理定位功能、提供web workers机制、提供web socket协议、提供CS…

NPDP|传统行业产品经理如何跨越鸿沟,从用户角度审视产品

随着科技的飞速发展和互联网的普及&#xff0c;产品经理的角色已经从单纯的产品规划者逐渐转变为全方位的用户体验设计者。对于传统行业的产品经理来说&#xff0c;这是一个挑战与机遇并存的时代。他们不仅要面对激烈的市场竞争&#xff0c;还要学会如何跨越与新兴科技行业之间…

《建筑抗震设计规程》DB62/T 3055-2020下载

本规程适用于抗震设防分类为乙类、丙类&#xff0c;抗震设防烈度为6度(0.05g)、7度(0.10g、0.15g)、8度(020g、030g)、9度(0.40g)的多高层钢筋混凝土结构及钢-混凝土混合结构、中等跨度钢屋盖结构、门式刚架钢结构、多低层砖砌体结构房屋建筑的抗震设计。 关于甘肃省地方标准《…

pycharm虚拟环境

File->setting->project->Python interpreter 路径必须写全

[C++核心编程-04]----C++类和对象之封装

目录 引言 正文 01-类和对象简介 02-封装简介 03-封装的意义 04-封装案例之设计学生类 05-封装的权限控制 06-struct和class的区别 07-成员属性设置为私有 08-封装案例1-设计立方体 09-封装案例2-判断点和圆的关系 总结 引言 在C中&#xff0c;…

NVIDIA TensorRT Model Optimizer

NVIDIA TensorRT Model Optimizer NVIDIA TensorRT 模型优化器&#xff08;ModelOpt&#xff09;是一个用于优化 AI 模型的库&#xff0c;它通过量化和稀疏性技术减小模型大小并加速推理&#xff0c;同时保持模型性能。ModelOpt 支持多种量化格式和算法&#xff0c;包括 FP8、…

深度学习知识点全面总结

ChatGPT 深度学习是一种使用神经网络来模拟人脑处理数据和创建模式的机器学习方法。下面是深度学习的一些主要知识点的总结&#xff1a; 1. 神经网络基础&#xff1a; - 神经元&#xff1a;基本的计算单元&#xff0c;模拟人脑神经元。 - 激活函数&#xff1a;用于增加神…

力扣HOT100 - 763. 划分字母区间

解题思路&#xff1a; class Solution {public List<Integer> partitionLabels(String s) {int[] last new int[26];int len s.length();for (int i 0; i < len; i) {last[s.charAt(i) - a] i;//记录字母最远的下标}List<Integer> partition new ArrayList…

大数据在IT行业的应用与发展趋势及IT行业的现状与未来

大数据在IT行业中的应用、发展趋势及IT行业的现状与未来 一、引言 随着科技的飞速发展&#xff0c;大数据已经成为IT行业的重要驱动力。从数据收集、存储、处理到分析&#xff0c;大数据技术为各行各业带来了深远的影响。本文将详细探讨大数据在IT行业中的应用、发展趋势&#…

做抖店如何提高与达人合作的几率?有效筛选+有效推品

我是王路飞。 总是有很多新手商家&#xff0c;找我吐槽&#xff0c;抖音上的达人特别不好找&#xff0c;好不容易加上了&#xff0c;要么是发消息不回复&#xff0c;要么是寄样后就没下文了。 虽然一直都说找达人带货玩法比较简单&#xff0c;但也离不开电商的基本逻辑&#…

【k8s多集群管理平台开发实践】九、client-go实现nginx-ingress读取列表、创建ingress、读取更新yaml配置

文章目录 简介 一.k8s的ingress列表1.1.controllers控制器代码1.2.models模型代码 二.创建ingress2.1.controllers控制器代码2.2.models模分代码 三.读取和更新ingress的yaml配置3.1.controllers控制器代码3.2.models模型代码 四.路由设置4.1.路由设置 五.前端代码5.1.列表部分…