是否可以使用 Unity 预测丢帧,并在此之前停用除相机更新之外的所有功能以避免 VR 晕眩?

Is it possible to predict frames dropping with Unity, and before this happens deactivate all but the camera updating to avoid VR sickness?

由于良好的帧率在 VR 应用程序中非常重要,我只是想知道您是否可以预测丢帧?如果是这样,在这个问题真正发生之前,你能停用一些脚本或其他功能,除了相机变换的更新和环境渲染吗?因此,如果性能下降(即帧数下降),则不会出现恶心。

预测未来的可能性不大,因此当您看到性能下降时,您将不得不即时进行调整。或者您可以想象创建一个用户可以 运行 的测试环境,您可以在其中尝试找出用户硬件设置的功能,并为将来的实际应用 运行 相应地调整设置。 (即“测试环境 运行 在中等设置下低于所需的 120fps,因此从现在开始默认为低”)

我不知道您使用的具体平台是什么,但以防万一您使用的是 Oculus 生态系统,您也许可以获得一些帮助。

默认情况下,Oculus 设备支持您的设备,他们称之为 "Asynchronous TimeWarp"。这实质上将耳机的 t运行sform 更新和渲染与应用程序的帧速率分离。如果没有可用的最新帧,最新帧将根据最新的头部跟踪信息 t运行 形成,从而减少此类打嗝的明显程度。不过,您仍然希望尽可能避免这种情况。

此外,Oculus 在其移动平台上支持 "Fixed Foveated Rendering",根据您的 GPU 利用率,设备可以在您的视图边缘以较低的分辨率呈现。在实践中,我发现这非常有效,尽管(顾名思义)它固定在视图的中心并且不包括任何眼动追踪。但是和前面的方法一样,不需要它总是更好。

不幸的是,我不太熟悉其他设备上的选项,但我相信如果存在这些选项,其他人会参与其中。