首先确保打开quest的开发者模式,电脑安装oculus,并且有一根5Ghz的传输线。

这里用到两个案例项目,内容量非常多,务必下载案例研究
image.png

复制并粘贴此虚幻商城兑换码,获取此课程的项目文件。 4PXEW-TMCVR-ZMLMU-3ZW8X

7GNSF-7WJYV-W8QHB-2WKBG

01_创建基础VR模板

  1. 创建一个Blank Template(BP,最高质量,无光线追踪,PC,无初学者内容)
  2. 修改项目设置
    1. start in VR √
    2. smooth frame rate ×
    3. use fixed frame rate ×
    4. custom timestep × none (VR平台来控制帧率,而不是项目)
    5. Editor startup map × clear(协作完成项目时,防止意外编辑)
  3. 修改项目渲染设置( ./Config/DefaultEngine.ini),添加:(基于4.25引擎)
    1. [/Script/Engine.RendererSettings]
    2. r.ForwardShading=True
    3. r.MobileHDR=True
    4. r.MobileNumDynamicPointLights=4
    5. r.MobileDynamicPointLightsUseStaticBranch=True
    6. r.AllowOcclusionQueries=True
    7. r.MinScreenRadiusForLights=0.030000
    8. r.MinScreenRadiusForDepthPrepass=0.030000
    9. r.PrecomputedVisibilityWarning=False
    10. r.TextureStreaming=True
    11. Compat.UseDXT5NormalMaps=False
    12. r.AllowStaticLighting=True
    13. r.NormalMapsForStaticLighting=False
    14. r.GenerateMeshDistanceFields=False
    15. r.GenerateLandscapeGIData=True
    16. r.TessellationAdaptivePixelsPerTriangle=48.000000
    17. r.SeparateTranslucency=False
    18. r.TranslucentSortPolicy=0
    19. TranslucentSortAxis=(X=0.000000,Y=-1.000000,Z=0.000000)
    20. r.CustomDepth=3
    21. r.DefaultFeature.Bloom=True
    22. r.DefaultFeature.AmbientOcclusion=False
    23. r.DefaultFeature.AmbientOcclusionStaticFraction=False
    24. r.DefaultFeature.AutoExposure=False
    25. r.DefaultFeature.MotionBlur=False
    26. r.DefaultFeature.LensFlare=False
    27. r.DefaultFeature.AntiAliasing=3
    28. r.EarlyZPass=1
    29. r.EarlyZPassMovable=True
    30. r.DBuffer=False
    31. r.ClearSceneMethod=1
    32. r.BasePassOutputsVelocity=False
    33. r.WireframeCullThreshold=5.000000
    34. UIScaleRule=ShortestSide
    35. UIScaleCurve=(EditorCurveData=
    36. (PreInfinityExtrap=RCCE_Constant,PostInfinityExtrap=RCCE_Constant,Keys=),ExternalCurve=None)
    37. vr.InstancedStereo=True
    38. r.DefaultFeature.AutoExposure.Method=1
    39. r.ReflectionCaptureResolution=256
    40. r.GBufferFormat=1
    41. r.SupportStationarySkylight=True
    42. r.SupportLowQualityLightmaps=False
    43. r.SupportPointLightWholeSceneShadows=False
    44. r.SupportAtmosphericFog=False
    45. r.VertexFoggingForOpaque=True
    46. r.AllowGlobalClipPlane=True
    47. r.CapsuleShadows=2

    02_统一文件结构

    类似这个项目,为本项目设置文件夹,以01或者00开头,置顶。
  • 方便实现项目迁移。
  • 其他商城资产以其他文件名命名文件夹,区分两者的存在。

image.png
项目下属文件夹:

  • Characters
  • Core
  • Environment
  • Maps
  • Materials
  • PFX
  • Props
  • VR

03_创建核心VR资产(VR文件夹下)

三个结构

VR Pawn

  • 新建Pawn的BP Class ,VR_Pawn

    • 新建Scene组件,命名为VRCameraOrigin
      • 新建Camera

        VR Character

  • 新建Character的BP Class,VR_Character

    • 新建Scene组件,命名为VRCameraOrigin(也可以按住ctrl从上一步拖过来)
      • 新建Camera

        VR Game Modes

  • 新建GameModeBase的BP Class,VR_GameModeBase

    • 设置default pawn class为VR_Pawn( 单人模式)
  • 新建GameMode的BP Class,VR_GameMode
    • 设置default pawn class为VR_Character( 单人模式)

World Settings

设置GameMode Override 为VR_GameModeBase

然后可以运行程序了。

  • Play
    • VR preview

04_支持多个VR平台

在项目中支持多个VR平台

  • SteamVR
  • Oculus
  • Windows Mixed Reality(微软发布了Microsoft Mesh。这个以Microsoft Azure作为基础的新平台旨在支持开发者构建多用户的和跨平台的沉浸式混合现实应用。)
  • OpenXR

设置多个VR平台支持

一般方法

  1. Setting - plugins
    • Oculus VR (默认打开)
    • Windows Mixed Reality
    • Steam VR
    • OpenXR(会默认覆盖其他的plugin)
  2. 修改项目设置( ./Config/DefaultEngine.ini),添加:(值越高优先级越大)
    1. [HMDPluginPriority]
    2. OculusHMD=60
    3. SteamVR=50
    4. WindowsMixedReality=30
    5. OpenXR=20

测试不同平台的快捷方法

复制一份某平台优先级为最高的DefaultEngine.ini 并重命名为DefaultEngine-xxx.ini
然后创建uproject的快捷方式,并修改target为: UE4Editor uproject -DEFENGINEINI-DefaultEngine-xxx.ini 例如:
image.png

05_构建不同平台版本(Build & Test)

测试不同 平台 和不同 HMD

首先,确保项目设置中Maps&modes中的Game Default Map又一个基本的Level

然后File

  • Package Project
    • Windows64
      • 选择一个输出文件夹(BUILDS)

可以重命名输出的 Windoes no Editor文件夹为项目名称
新建一个快捷方式,target中加入

  1. -hmd=oculus

也可以是

  • steamvr

image.png