《黑神话 悟空》使用的UE5制作技术能不能应用于VR、MR设备?

黑神话悟空使用的UE5制作技术应用于VR、MR设备实践。

实践目标:用UE5呈现银河系几大行星效果,并在Apple Vision Pro平台编译运行。


材质的制作

制作星球首先需要准备好星球的表面纹理、法线、粗糙度、高光度等贴图,这些贴图可以从一些CG资源网上下载


1.jpg

地球材质的制作

地球的材质需要用到5张贴图:地球表面贴图、云层贴图、法线贴图、高光度贴图、黑夜灯光贴图,云层贴图可以实现云层漂浮的效果,黑夜灯光贴图可以实现在地球背光面显示夜晚城市灯光的效果,具体实现见下图


2.jpg
3.jpg
4.jpg

土星的制作

土星因为具有行星环,不像其他的星球一样只需一个球体就可以,因此需要创建一个蓝图,继承自Actor,并为其添加一个球体和平面体组件,球体的材质设置为土星材质,平面体的材质设置为行星环


5.jpg
6.jpg

月球和其他星球材质的制作

月球材质需要一张月球表面贴图和一张法线贴图,其他星球与此类似


7.jpg
8.jpg

星空背景的制作

星空背景需要用到4张纹理立方体贴图,分别是背景贴图、背景贴图的alpha贴图,近处的星星贴图、远处的星星贴图


9.jpg
10.jpg
11.jpg

创建星空背景

将引擎自带的星空球SM_SkySphere拖入场景中,并设置其材质为我们创建的材质即可


12.jpg

星空中飘动的粒子

添加一个Niagara系统,设置粒子状态、粒子的生命周期、粒子形状、发射速率,并为其添加风力、阻力、重力属性,使其在空中随机飘舞


13.jpg

将创建好的粒子拖入场景当中


14.jpg

星球的转动效果

打开关卡蓝图,在Tick事件中遍历星球进行旋转


15.jpg

相机控制

相机控制可以让我们通过键盘的WSADQE键和鼠标来控制视口的上下左右前后移动。

  • 创建一个相机蓝图BP_CameraCtrl,继承自Pawn,为该蓝图添加一个相机、弹簧臂、移动组件


    16.jpg
  • 切换事件图表,添加键盘的和鼠标的控制事件


    17.jpg

Apple Vision Pro平台编译


必要条件

  • 需要配备 Apple 芯片(m1、m2、m3)的 Mac
  • 安装了 visionOS 1.1 支持的 Xcode 15.3

Apple Vision Pro 设备设置

  • 设置并连接到你的 WiFi
  • 确保 visionOS 版本不低于 visionOS 1.1
  • 转到“设置”->“隐私和安全”->“开发者模式”,并将其设置为“开启”

Xcode

  • 创建新项目
  • 选择 visionOS 选项卡,选择 App,然后单击下一步(见图)
  • 在沉浸式空间渲染器下,选择“Metal”,然后单击下一步
  • 选择要保存项目的文件夹,然后单击“创建”
  • 在顶部下拉菜单中选择您的 AVP 设备(见图)。如果您在这里没有看到它,请转到窗口 -> 设备和模拟器,并验证您的 AVP 是否已连接。
  • 运行应用程序(Command+R,或左上角的“播放”按钮)
  • 启动 Xcode


    18.jpg
19.jpg

虚幻引擎

目前仅支持 C++ 项目。

  • 通过 GitHub 安装虚幻引擎 5.5(目前不支持从 Epic Games Launcher 下载的二进制版本,但将来会支持)

    • 构建编辑器

    • 下列控制台变量现在均已在两者中设置Engine/Platforms/VisionOS/Config/VisionOSEngine.iniMyProject/Config/VisionOS/VisionOSEngine.ini 因此您不需要设置它们,除非您有意更改它们。

      vr.InstancedStereo=False
      
      vr.MobileMultiView=False
      
      xr.OpenXRAcquireMode=1
      
  • 启动编辑器并创建新的 VR 模板项目并且将自己之前的项目中 Content 目录下的内容迁移过来并修改 Default Maps。


    20.jpg
  • 开启vision os xr插件,在项目设置中的平台将vision os勾上。


    21.jpg
22.jpg
  • 在项目设置中关闭抗锯齿AA。


    23.jpg
  • 关闭移动端渲染,开启桌面渲染,因为默认的移动端渲染在纯实时的情况下会导致金属反射有问题,会导致部分贴图出现乱纹,然后需要关闭HDR。


    25.jpg
24.jpg
  • 在xcode设置中,填好账户ID,可以在苹果开发者官网注册,如果是要发行的话则需要购买每年99美元的,然后填好应用的名称。


    26.jpg
  • 在IOS设置中添加plist data数据,可以将下面这段直接复制填写进来:
<key>NSHandsTrackingUsageDescription</key><string>Hand Usage</string><key>NSMicrophoneUsageDescription</key><string>Mic Needed </string><key>NSWorldSensingUsageDescription</key><string>World Sensing</string>
27.jpg
  • 在内容浏览器中随便创建一个C++类:Tools -> New C++ Class。


    28.jpg
  • 在打包前,如果场景可以烘焙的话,尽量在烘焙后删除灯光在进行打包,这样可以有效提高FPS,也可以烘焙后,添加部分动态物品并设置可移动的属性,动态灯光除太阳光外其他的控制在6个以内,或者使用自发光材质并开大bloom来代替效果。如果是要打包纯动态的场景,那么阳光所产生的阴影对场景的消耗会很大,需要在细节中关闭投射阴影。


    29.jpg
  • 在打包处,选择vision os打包,发行和开发版本可以暂时不用选择,按默认即可。


    30.jpg

遇到的问题

  • 当项目在 Vision OS 平台运行的时候崩溃退出,相关错误日志:Metal texture index exceeded!
    • 问题原因是材质或纹理数量超过了 Vision OS 系统Metal 图形API所支持的限制范围,随后用简单的贴图纹理重新制作简化的星球材质,简化星球的显示效果,问题得以解决。
  • 如何用 Xcode 调试 UE5 工程?
    • 当 UE5 工程在 visionOS 平台编译成功后一般会自动生成适用于 Xcode 的 **.xcworkspace 工程,如果不能的话,用 UnrealEngine 源码中的脚本生成
      UnrealEngine/UnrealEngine-5.4/Engine/Build/BatchFiles/Mac/GenerateProjectFiles.sh -game -project="**.uproject"
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容