针对本地网络中 VR 数据包抖动的 NGO

问题描述 投票:0回答:1

我有一个VR逃生室,软件是我开发的。我使用一台 PC 作为主机,并使用 8 个 Meta quest 2 作为玩家。该游戏是完全本地的,我仅使用互联网下载初始验证数据并向用户发送收集数据。

我在2022年1月19日与unity、NGO、Unet运输一起开发了它,一切运行良好。

现在我已将 Unity 更新到 2022.3.2 LTS,NGO 更新到 1.5.1 并使用 Unity Transport 1.3.4(也尝试过 2.0),这里开始出现问题:

即使我在本地网络上(我们使用 netgear orbi pro wifi6 路由器),一切都会开始滞后,但并非总是如此,只有当玩家稍微移动或转身时,如果玩家保持不动,那就一切顺利。

Meta Quest 2 没有超载,CPU 使用率约为 40%,GPU 使用率约为 70%。

有趣的是,我仅用于开发的 Quest 2 总是很流畅,但所有其他具有相同设置和相同软件的设备都有这个问题。更有趣的是,在另一个办公室,使用相同的软件、电脑、路由器和耳机,所有耳机都可以流畅工作......

在我的测试中,我看到耳机在平稳时会发送X个数据包,但是当开始移动并开始滞后时,它会停止发送数据包一小部分秒,然后所有数据包一起到达,从而导致这种滞后效应...

我已经尝试解决这个问题一周了,日以继夜地工作,但无事可做......我要疯了......如果有人有任何建议可以拯救我的生命。

我真的不明白为什么在一款耳机上一切正常,而在具有相同软件和设置的其他耳机上却出现这个问题......

android unity-game-engine networking virtual-reality
1个回答
0
投票

您可能想查看网络数据包是如何发送的。如果它只是游戏数据(而不是帧缓冲区),那么网络线程应该从渲染线程运行异步(多线程),以防止它们相互阻塞。

听起来底层 VR 库正在使用可变帧速率 (VFR) - 渲染器需要很长时间才能推出下一帧。这可能会导致抖动。

您可能会尝试查看是否可以将库配置为以恒定帧速率渲染(CFR,例如 60fps、90fps 等)。

使用 CFR 时,必须对场景进行预算,以便以指定的 FPS 渲染帧。如果超出预算,帧就会丢失,从而导致抖动。

这主要意味着每帧渲染的实际三角形数量受到限制。减少网格和相机视野对于减少渲染时间有很大帮助。

还提供预渲染纹理来提供光线追踪等功能,从而大大加快速度。您也可以尝试使用相机四元数来平滑体验。

要想获得流畅而细致的 VR 体验,需要付出很多智慧。我发现 CFR 中严格的帧预算与相机平滑可以提供出色的结果

您可能想提供发生此问题时实验室屏幕的简短视频 - 这比猜测更直观。

© www.soinside.com 2019 - 2024. All rights reserved.