加载多个场景添加剂使合成器发挥作用(Steam VR Unity)

时间:2019-01-18 07:03:12

标签: c# unity3d htc-vive steamvr

我遇到一个问题,我想在某个事件中在场景中加载大量对象, 所以当我开始加载这些Scenes时,我的Vive / vr会进入合成器屏幕,并且在我的主要场景和合成器屏幕之间有点闪烁 直到我的场景加载完成。

所以我的问题是如何停止这种闪烁,我很高兴在我的加载完成之前调用合成器屏幕,然后切换回我的主场景或可以解决此闪烁问题的类似方法

我一直在寻找如何自行调用合成器屏幕或如何在正在加载过程中停止调用该屏幕的方法。

任何帮助将不胜感激,因为我没有主意。

谢谢...

2 个答案:

答案 0 :(得分:0)

闪烁并显示合成器屏幕通常是由于Unity无法渲染框架引起的。我确定您将能够在Profiler选项卡中找到导致延迟的对象(如果有的话)。 我假设“加载”对象是指实例化它们。如果是这样,则取决于:

a)如果实例化多个相同的对象,请查看GPU instancing方法

b)如果对象不是唯一的,则可以尝试:

  1. Load scene asynchronously
  2. 将所有(停用的)对象放在第一个场景上,而不是实例化或   加载新场景,只需激活它们即可。这只会增加初始负载   时间。

您可以使用的另一种方法是:

  • 单程立体渲染

  • 仅使用或大部分使用烘烤的闪电-可以显着提高性能(使我可以使用拥有超过4000万个顶点的模型实时显示VR场景)

答案 1 :(得分:0)

默认情况下,每当应用程序挂起时,SteamVR就会淡入网格。当然,最好将帧速率保持在通常会触发此阈值的阈值之上,但在许多情况下(例如加载场景),世界上所有的优化操作都无法使Unity挂起足够长的时间来触发此问题。 / p>

幸运的是,可以完全禁用此行为! SteamVR Settings -> Developer -> Do not fade to grid when app hangs。您也可以在steamvr.vrsettings文件中的vrpathreg.exe文件中更改此设置。在那里,将steamvr.doNotFadeToGrid设置为true。该文件也可以通过SteamVR设置界面进行修改,但是例如,通过该文件直接访问它可以使您从游戏安装程序中修改目标设备的设置。

不幸的是,到目前为止,还没有基于每个应用程序进行配置的方法,这意味着将关闭用户计算机上所有SteamVR应用程序的行为。调整此设置会带来以下警告:较低的帧速率会使用户感到不适,并且“渐入网格”功能可防止这种情况的发生。但是,以我的经验来看,只要您遵循最佳性能,此功能就不会像浸入画面帧中造成的暂时浸水那样对您造成沉重的干扰,并且如果帧频始终在下降,则此渐变为网格功能会导致强烈的闪烁就像低帧率一样令人不舒服。