专题介绍:
暑期着手开发第一个多功能的MR项目,这个系列的文章是我学习Quest MR开发的笔记,希望给小伙伴们提供一些参考经验。如果想要继续交流或者有合作意象,请通过以下方式联系:
- vx:always_lelele;b站:我是一直LE;E-mail:XieclAbby@163.com;
文章更新时间:2023.7.28
开发环境配置
电脑OS:Win11
VR设备:Quest 2 (未来计划移植Quest 3)
开发平台及版本:Unity 2022.3.3f1c1
参考资料
Meta Quest技术文档
方法一
第一步:搭建环境
- 安装Oculus Hub并成功连接配置好头显(这个就参考网上其他资料就行,仅初次搞比较麻烦)
- 安装适合版本的Unity编辑器(官方要求起码是 2020.3 LTS),并且平台选择(Platforms)起码包括:Windows,Android Build Support(如果你要发布到Quest上运行的话需要这个模块)
- 建立一个新项目,选择3D模板
Unity的基础设置
- 在File > Build Settings 里的Platfrom列表下选择Android,点击Switch Platform
- 在Run Device 列表里选择Oculus Quest(这里应该显示你用USB连接好的头显设备),旁边的Refresh可以刷新
- 将Texure Compressoion切换成ASTC
- 取消勾选Development Build,会影响呈现
- 导航到Project Settings里安装XR Plugin Management, 点击Install XR Plugin Management(如果没有安装过这个包,首先需要导航到Window>Pakage Manager,Pakages菜单切换到Unity Registry,找到这个包点击install)
- 在Windows和Android下都要勾选Oculus
- 点击XR Plug-in Management下方的Oculus,切换到Oculus设置面板,将Stereo Rendering Mode改成Muti Pass,和下图一致就行
- 设置Identification:在左侧菜单里点击Player,切换到Player面板,展开Other Settings菜单,设置Minimum API Level,设置为Android 10.0(API level29),保证下面的Target API Level是Automatic(highest installed)
- 设置Configuration: Scripting Backend换成IL2CPP(可以提供跨平台支持),勾选底下的arm64(Meta Store仅支持64-bit app);设置下方的Install Location是Automatic,可以让app应用安装在外部储存器上
-
设置Rendering(如图):Color Space是 Linear(以增加场景亮度,可获得真实的渲染效果);取消勾选Auto Graphics API,拖动调整OpenGLES3为列表第一个(Vulkan还在测试阶段);勾选Multithreaded Rendering(支持多线程渲染工作)
- 【可选】设置公司和项目名称:在Player最上面可以修改公司和项目的Name,及项目版本号用于迭代(之后每次都要高于之前的版本);再下面的Identification中,勾选Override Defualt Package Name,保证名称符合要求(com.CompanyName.AppName);在Bundle Version Code里设置Bundle的序号,每次都增加,用于内部确认版本是否比上一个版本新
- 设置Quality:设置Rendering底下的Pixel Light Count为1,Anti Aliasing设置为4x,并确认勾选了Realtime Reflections Probes;设置Textures中的Texture Quality中确认是Full Res(最大分辨率显示纹理),Anisotropic Textures为Per Texure;Particles里取消勾选Soft Particles;确认Terrain中的Billboards Face Camera 勾选,让UI面板面对相机
导入Oculus Integration SDK
如果之前没有安装这包,需要先去资源商店里下载,再在Window>Pakage Manager>My Assets Download并Import Oculus Integration,这里要升级到最新版本(目前我是v55),Quest2要v49以上才能开发MR的空间定位功能
- 安装完如果提示要Update,点击Yes
- 如果提示是否使用OpenXR支持,点击Use OpenXR
- 如果提示要清空之前的 Interaction SDK资产,点击Show Assets,再点击Delete Assets
- 提示Update Spatializer plugins,点击Update,再点Restart
第二步:设置OVR相机
添加OVR相机:删除场景里的Main Camera,在Project>Assets下,搜索框里输入OVRCameraRig,将OVRCameraRig添加到场景中
关于OVRCameraRig.cs的设置:一个控制立体渲染和头部跟踪的组件
- Use Per Eye Cameras:独立渲染左右眼的画面
- Use Fixed Update For Tracking:运行时用FixedUpdate()方法替代Update()方法模拟物理运动效果,但是如果与渲染帧速率不匹配可能会掉帧抖动,个人不建议勾选
- Disable Eye Anchor Cameras:如果勾选这个,那就用Main Camera来作为渲染VR场景画面的相机,tracking space anchors被更新来提供参考姿势
关于OVRManager.cs的设置:一个控制相机行为的组件
-
Target Devices:设置所控制的VR设备
-
Performance and Quality:保持默认
- Tracking:将Tracking Origin Type设置为Floor level,跟踪你站在房间内的高度,其他的保持默认
- Display:Color Gamut:保持默认推荐
- Quest Features:参数很多,是设置项目支持的一些功能,比如姿态追踪、手势追踪、面部追踪、眼动追踪、VR键盘、启动画面、混合透视等等,根据项目需求自己动态调整。比较重要的一点是在Build Settings里勾选上下面的Skip Unneeded Shaders,剥离着色器来跳过未使用的着色器(删除了图形层Tier 1和 Tier 3,只从Tier 2开始加载着色器),节省Build的时间
- Mixed Reality Capture(MRC):一个混合现实捕捉的功能,勾选以启动。如果以后需要用到这个功能,再做详细的文章介绍。
方法二
最近发现除了上面繁琐的设置步骤之外,还有一个多快好省地办法,就是使用Oculus Project Setup Tool,可以帮我们快速地设置好一个适合Oculus开发的环境。
打开方式:在上面的菜单栏找到Oculus,打开Tool>Project Setup Tool。此时会自动弹出Project Settings面板,然后直接点击Apply All 和Fix All 就能一键解决所有设置问题。当然这个是官方推荐的设置,如果你有自己特定的开发需求,还是参考方法一里面的各种参数设置去动态调整。