VR天文馆

视频教程已同步发布至B站:https://www.bilibili.com/video/BV1v8411C7Cv

环境搭建

贴图与材质

首先导入如下贴图

image-20230929205715887

首先看地球的材质

其中下面多出的一块逻辑是让星球上的灯光更真实(白天的地区无灯,黑夜的地区亮灯)

核心思路是导入灯光贴图,通过计算光照与顶点法线之间的点积(两个向量越接近,点积越大;向量垂直则点积为0),控制自发光强度

image-20230929211250120

然后其他几个星球的材质就比较容易了,这里就不再一一介绍,大家看图就好

image-20230929211847340

image-20230929211913182

image-20230929211922577

image-20230929211931090

放置模型

创建三个Actor如下

image-20230929221123882

另外两个是空的,Planet 里面实现了自转逻辑

image-20230929221200956

把这些贴图应用到模型上,这些模型都继承自 Planet

image-20230929221214588

这里以地球为例,都是一样的,就不一一截图了

image-20230929212141531

将这些模型按照如下位置放到场景里

image-20230929212233147

DirectionalLight 按照自己的喜好调整光强就好

后期处理体积需要打开手动曝光和 Infinite Extent

image-20230929212349326

image-20230929212405039

天空球需要指定 Static Mesh 和 Materials

image-20230929212643510

这个 M_Sky_Stars_Mat 的逻辑如下,也是基于我们自己导入的贴图,让场景里多一些星星

image-20230929212746451

星球组

EarthAndMoon

打开上面创建的 EarthAndMoon 蓝图,添加两个 ChildActor,然后指定地球和月球,并摆放他们两的位置

image-20230930190007271

PlanetsGroup

打开 PlanetsGroup 蓝图,创建四个 ChildActor,将其他星球添加进来,按照自己的喜好调整布局就好

image-20230930190323300

旋转逻辑

这里为了方便调试,同时启动键盘调试,按下空格键的时候就旋转起来

首先在开始运行的时候启动输入,然后将所有的星球存入一个数组里

image-20230930190839810

在触发按钮的时候,先确定方向,同时做一些校验(如果正在旋转,被锁定,缩放中,就禁止旋转)

image-20230930190957825

下面是索引的计算逻辑,确定旋转之后,是哪一颗星球在我们面前(这里面有一段UI卡片逻辑可以先不管)

image-20230930191046374

最后利用时间线开始旋转,最后复位状态

image-20230930191157931

我的时间线如下

image-20230930191210769

缩放逻辑

缩放逻辑也是类似,先校验状态

image-20230930191256590

然后根据时间线来缩放当前星球(里面也有一些关于卡片透明度的逻辑,别急,就在下面了)

image-20230930191330437

学习卡片

首先导入如下学习卡片和对应教学音频(没有工程文件的可以自己做一些卡片,都差不多)

image-20230930191649068

image-20230930191729018

然后创建下面四个 Widget,这里以地球为例,其他都一样的

image-20230930191804786

打开 Earth_Knowledage_Widget,把卡片和图标拖进来

image-20230930191835297

设置按钮点击事件(注意是Press),点击音频的时候先停播其他音频,然后播放对应音频

image-20230930191931035

其他几个星球的 Widget 也是类似,这里不一一复制

接下来创建一个 PlantWidget,通过 WidgetSwitcher 将其他几个 widget都串起来

image-20230930192052499

然后在这里添加一个 SetOpacity 自定义事件,用于设置卡片的透明度

image-20230930192130901

最后创建一个 PlanetWidget 的 Actor

image-20230930192443513

补上激活索引和设置透明度这两个事件

image-20230930192517416

到这里就基本完成了,最后把旋转和缩放逻辑里对应的卡片逻辑补上就好(以防万一这里还是再截图一遍)

image-20230930192329384

image-20230930192317395

环境配置

最后别忘了去 VRPawn 里加一个 WidgetInteraction

image-20230930192642442

上面逻辑创建好之后就放入场景里,按照喜好随意摆放就可以了

image-20230930192556254