UE 适配不同 VR 设备的高度问题
在 UE 适配 Oculus Rift 和 HTC Vive 时注意把 TrackingOrigin
(EHMDTrackingOrigin::Type) 改为Floor
,不然默认的追踪起源是在眼睛位置,导致头盔位置在游戏场景中高度不对。
还有一个问题是,使用 PlayerStart
放置时,PlayerStart
是有高度的,所以高度可能是不对的 (取决于你的 Pawn 是怎么写的),解决的办法是可以重写AGameModeBase
的SpawnDefaultPawnAtTransform
,来指定高度。
UE 中游戏启动 VR 头显初始化
1 | Stereo On/Off |
重置 VR 头显旋转和位置
因为 VR 头显默认的朝向 X 轴是与房间设置的定位有关的,所以,当我们初始就与定位时的朝向偏离时,进入游戏就会偏离我们设定让玩家看到的东西,所以需要进行修正。
可以使用以下函数:
1 | /** |
蓝图中也是同名的节点。
在 UE 中使用 Oculus Rift
在 Oculus Rift 设备安装完成之后需要在 Oculus 商店中启用Unknow Source
,不然无法在 UE 中使用 Oculus Rift 预览。
Unreal 的文档中适配 Oculus Rift 的页面:Developing for Oculus Rift.
Oculus 官方提供的按键操作介绍:
以及 Oculus Rift 在 UE 中的按键映射:
HTC Vive 的按键映射
与上面的 Oculus Rift 作为对比,附一张 HTC Vive 的按键映射:
HTC VIVE 设备设置
SteamVR 2.0 定位基站
HTC Vive Pro 支持的定位器是 SteamVR 2.0,支持 150°和 7 米的追踪范围,而且支持基站串联(最多 16 个) 实现大空间定位方案。
注意:二代基站不支持一代 HTC Vive 头显。
使用 Proxifier 让 Oculus 走 SS 代理
昨天公司买了台 Oculus Rift 设备,在安装设备时需要全局代理,在 Windows 下我使用的是 Proxifier 来让 Oculus 相关软件走代理。
首先先添加 Proxifier 的代理:
测试连接成功之后即可执行下列操作。
上面连接成功后可以添加一个代理规则,而 Oculus 程序相关的进程如下,我们需要做的是让下列的进程走 SS 的代理:
1 | OculusSetup.exe;OculusClient.exe;OVRServiceLauncher.exe;OVRServer_x64.exe;OculusVR.exe;OculusCompatCheck.exe;CompatToolCommandLine.exe;OculusLogGatherer.exe;OVRLibrarian.exe;oculus-driver.exe;OVRLibraryService.exe;oculus-overlays.exe;OVRRedistributableInstaller.exe; |
将上面的内容填入 应用程序
文本框内之后,选择走 SS 的本地代理端口就可以了。
其他的程序(如外服游戏、Steam 等),如果需要强制走 SS 代理也是同样的方法。
VR 画面模糊的问题
因为 UE 项目中默认的 Screen Percentage 值是很低的,所以会感觉很模糊,但直接调高之后会有严重的帧率下降问题。
一般设置为 200 以内画面质量就不错了,下面列有 UE 的建议值(理想值)。然后需要美术在此基础上对场景进行优化,保证接近满帧的帧率。
在 4.19 之前 (不含 4.19),VR HMD 建议的理想值(r.ScreenPercentage) 为:
DeviceType | r.ScreenPercentage |
---|---|
Oculus Rift | 133 |
HTC Vive | 140 |
PSVR | 140 |
GearVR | 120 |
GoogleVR | 120 |
在 4.19 之后 UE 增加了 vr.PixelDensity
,在r.ScreenPercentage
保持为 100 时,就可以在不同平台的设备上使用标准化的值:
DeviceType | r.ScreenPercentage | vr.PixelDensity |
---|---|---|
Oculus Rift | 100 | 1 |
HTC Vive | 100 | 1 |
PSVR | 100 | 1 |
GearVR | 100 | 1 |
GoogleVR | 100 | 1 |
Lower values will perform faster but will be undersampled (more blurry) while values over 1 will perform slower and will supersample (extra sharp).
这样就可以通过控制 vr.PixelDensity
这个标准化的值来控制显示质量。
具体介绍链接:Significant Changes Coming To VR Resolution Settings in 4.19
HTC VIVE 定位器故障 (03) 的解决办法
如果定位器面板上闪红灯且 SteamVR 显示 ** 定位器故障 (03)**,请试着手动烧录定位器(基站) 固件。步骤如下:
固件路径在 Steam 的安装路径下:Steam\steamapps\common\SteamVR\tools\lighthouse\firmware\lighthouse_tx\archive\htc_2.0
,找到以下两个文件:
1 | * lighthouse_tx_htc_2_0-calibration-rescue-244.bin |
- 在定位器 (基站) 未通电情况下,将其通过 micro-B USB 传输线连接到电脑。
- 按住定位器 (基站) 背后的模式键并插入电源线.
- 一旦电脑端确认为 USB 大容量存储设备(USB mass storage device),才可以释放模式键。
- 被连接的定位器 (基站) 储存设备名为“CRP_DISABLED”,打开后包含一个文件“firmware.bin”,删除它。
- 将“lighthouse_tx_htc_2_0-calibration-rescue-244.bin”文件复制到基站的储存空间上。
- 复制完成后,拔掉电源线。
- 等几秒,然后再次插上电源。在此过程中不要按模式键。几秒后定位器 (基站) 应该会快速的闪烁绿灯或者红灯。绿灯表示修复成功。
- 如果它闪烁红灯,这表示不能自动修复,请您送修。
- 再次拔下电源。
- 重复步骤 1 到 7,但第 5 步复制文件改为“lighthouse_tx_htc_2_0-244-2016-03-12.bin”。
- 完整后定位器 (基站) 就恢复正常了,讲其频道设置为“A”并单独跟踪(另一个基站不通电)来确认运行情况。一旦确认工作正常,再打开另一个基站。
如果出现闪烁绿灯无法正常使用,重复步骤 1 到 7,但在第五步清除”CRP_DISABLED”中所有文件,只复制 “lighthouse_tx_htc_2_0-244-2016-03-12.bin” 即可。
- 如果手动烧录定位器 (基站) 固件和校准文还是无效,请使用手机拍照确定下列两个雷射点是否正常(不能用 iphone/ipad 雷射点拍不出來),如果这两个雷射点任一个没有显示,代表雷射损坏,请送客服检查。
参考链接:定位器故障(03)