IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> UE4昼夜交替的简单实现 -> 正文阅读

[游戏开发]UE4昼夜交替的简单实现


最近在学习ue4引擎,有要求做一个天气系统。于是上网查询了一下资料,先做了个简单的昼夜交替的实现。只是简单实现,如果要细化这个部分还有许多要更改的,废话不多说,先做。

组件介绍

要完成这个功能之前首先介绍一下需要用到的组件以及他们的一些参数。因为笔者也是刚开始接触ue4,可能有些地方会写地有点繁琐,因为是第一次接触,有可能有写的不对的地方,望指正。

DirectionalLight(定向光)

DirectionalLight可以看做是模拟太阳发出的光源,这个光源所发出的光都是相互平行的。
平行光不像是SpotLight以及PointLight那样距离物体越远,光的强度就不一样,而DirectionalLight所散发出来的光,所照射的整个区域范围内光强是一样。换句话说,不管怎么拉动平行光的位置,他的光照效果都不会发生改变。

Sky_Sphere(天空球)

进去后每个场景世界大纲里都会有一个默认存在的Sky Sphere,删掉了可以在左侧Modes搜索到BP_Sky_Sphere。
在这里插入图片描述
本次用到的参数有下面一些,介绍一下:
在这里插入图片描述

  • Refresh Material(刷新材质):虽然是个Bool类型参数,但其实相当于一个按钮的功能。当你在游戏未开始时,调整SkySphere绑定的Directional Light Actor的旋转,需要点一下这个按钮才能更新太阳的位置和天空的颜色。
  • Directional Light Actor(定向光源):绑定的定向光源(就是上面介绍的DirecionalLight,在这里需要被绑定)。太阳会根据这个Light来调整高度。如果不绑定,就可以通过OverrideSettings里的SunHeight自由更改高度。
  • Colors Determined By Sun Position(由太阳的位置决定颜色):如果勾选,则会根据太阳的位置自动计算天空的颜色。如果不勾选,则应用OverrideSettings里的设置。
  • Horizon Falloff(地平线衰减):值越高地平线越清晰。
  • Sun Brightness(太阳亮度):这个就是调整太阳的自发光亮度,跟定向光源的亮度没有关系。
  • 剩下的就是Cloud Speed(云移动的速度),Cloud Opacity(不透明度),Stars Brightness(星星亮度),这三个参数主要用来调整星星的显示效果。

昼夜实现

下面就是正式的蓝图实现了。

调整DirectionalLight(Light Source)

在这里插入图片描述
笔者在一开始尝试的时候,发现如果DiretionalLight的Rotation为默认值的话,在最后完成太阳旋转移动的时候,最晚的天空只能是黄昏,而不是漫天繁星,所以在一开始就应该把定向光的Rotation设置为(0,90,0)。
在这里插入图片描述
并且,我们是后面是需要实时移动光源的,所以将Mobility设置为Movable(可移动的)。
目前的效果如下图所示:
在这里插入图片描述

蓝图设计

打开Level Blueprint(关卡蓝图),右键创建一个Tick的事件,选择下图的第一个。
在这里插入图片描述

回到场景主页面,选中Light Source物体,再回到蓝图中右键,创建Light Source的引用。
在这里插入图片描述
在这里插入图片描述

接着从light source拉出一个选框,搜索addactorworldrotation,进行添加在这里插入图片描述
然后将这些连接起来:
在这里插入图片描述
为了方便调整参数,应该将Delta Rotation这个值细化调整,speed参数是自行添加的变量,因为我们只想要昼夜交替的效果,所以简单一点的办法就是让太阳旋转,所以只需要更改y这个值,speed值设置为0.5:
在这里插入图片描述

在这里插入图片描述
因为太阳的高度是根据定向光源的旋转而变化的,而天空的颜色是根据太阳的位置变化的,所以我们只需要改变定向光源的旋转然后用SkySphere自带的刷新函数UpdateSunDirection就可以了。
于是会场景主页面选中sky_sphere回到蓝图中创建它的引用,在创建他的事件UpdateSunDirection:
在这里插入图片描述
所以完整蓝图为:
在这里插入图片描述

到此,运行项目即可执行昼夜交替。

一些不足

目前这个功能缺点还有很多,因为刚接触还不熟悉。
因为笔者参加的还是团队工作,所以需要把这个功能放到有水体的场景中。然后就出现了一下一些问题:

  • 光照在水面上时,水面不能呈现出自然的颜色。
  • 并且当太阳移动到水面下的时候,因为一些原因(这里暂且不知道,但是猜测是因为太阳光在水面下也能发出光照),所以水面不管是昼夜都呈现出很透亮的状态,几乎没有变化。这是一个很头疼的点,目前还不知道怎么修正这个点。

希望继续学习之后,能修正这些bug。

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-11-10 12:43:37  更:2021-11-10 12:44:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/28 0:27:50-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码