我在我的Unity项目中使用vuforia库,我需要在用户按钮单击操作上更改DigitalEyewearBehaviour属性。到目前为止,屏幕的方向发生了变化,当通过调试日志检查时,眼镜类型和模式似乎都设置得很完美。但该设备仅将屏幕方向更改为横向并使相机变黑。
public void ChangeToHeadGearMode(){
//static setting changes
Screen.orientation = ScreenOrientation.Landscape;
//Getting Player Settings
string ViewerType = PlayerPrefs.GetString("Viewer Type","Generic Cardboard (Vuforia)");
string SterioFrameWork = PlayerPrefs.GetString ("Sterio Framework", "0");
mDebug.Log ("Getting VT " + ViewerType);
mDebug.Log ("Getting SF " + SterioFrameWork);
//setting set
mDebug.Log (mHeadGearParameters.GetEyewearType().ToString());
mHeadGearParameters.SetEyewearType(Vuforia.DigitalEyewearAbstractBehaviour.EyewearType.VideoSeeThrough);
mDebug.Log (mHeadGearParameters.GetEyewearType().ToString());
if(SterioFrameWork=="0")
{
mHeadGearParameters.SetStereoCameraConfiguration(Vuforia.DigitalEyewearAbstractBehaviour.StereoFramework.Vuforia);
mDebug.Log ("ST=0");
}
else if(SterioFrameWork=="1")
{
mHeadGearParameters.SetStereoCameraConfiguration(Vuforia.DigitalEyewearAbstractBehaviour.StereoFramework.Cardboard);
mDebug.Log ("ST=1");
}
else if(SterioFrameWork=="2")
{
mHeadGearParameters.SetStereoCameraConfiguration(Vuforia.DigitalEyewearAbstractBehaviour.StereoFramework.GearVR);
mDebug.Log ("ST=2");
}
mHeadGearParameters.SetViewerActive (true,true);
}
vuforia开发人员门户网站将方法称为SetViewerActive
当我应用that method时,只有相机会消失。如果我不使用它,相机不会变黑,但视图不会变为纸板视图。我在SetViewerActive
方法中尝试了所有可能的选项,但不起作用。我经历了vuforia developer portal多次,但没有发现错误。
我做错了什么或者我错过了什么重点?
答案 0 :(得分:1)
我找到了自己问题的答案,并将其发布给可能遇到同样问题的任何人。截至目前,没有教程或实际如何实际工作的实例。所以我不得不接受反复试验,最后找到了解决方案。
您需要做的就是取消相机实例,然后进行设置更改,然后SetViewerActive(true,true)
,以便重新初始化相机。
最终解决方案如下。
//static setting changes
Screen.orientation = ScreenOrientation.Landscape;
if (CameraDevice.Instance.Stop () && CameraDevice.Instance.Deinit ())
{
//Getting Player Settings
string ViewerType = PlayerPrefs.GetString("Viewer Type","Generic Cardboard (Vuforia)");
string SterioFrameWork = PlayerPrefs.GetString ("Sterio Framework", "0");
mDebug.Log ("Getting VT " + ViewerType);
mDebug.Log ("Getting SF " + SterioFrameWork);
//setting set
mDebug.Log (mHeadGearParameters.GetEyewearType().ToString());
mHeadGearParameters.SetEyewearType(DigitalEyewearAbstractBehaviour.EyewearType.VideoSeeThrough);
mDebug.Log (mHeadGearParameters.GetEyewearType().ToString());
if(SterioFrameWork=="0")
{
mHeadGearParameters.SetStereoCameraConfiguration(DigitalEyewearAbstractBehaviour.StereoFramework.Vuforia);
mDebug.Log ("ST=0");
}
else if(SterioFrameWork=="1")
{
mHeadGearParameters.SetStereoCameraConfiguration(DigitalEyewearAbstractBehaviour.StereoFramework.Cardboard);
mDebug.Log ("ST=1");
}
else if(SterioFrameWork=="2")
{
mHeadGearParameters.SetStereoCameraConfiguration(DigitalEyewearAbstractBehaviour.StereoFramework.GearVR);
mDebug.Log ("ST=2");
}
mHeadGearParameters.SetViewerActive (true,true);
}
答案 1 :(得分:1)
请记住再次激活普通视图:使用DigitalEyewearARController.Instance.SetViewerActive(false, true);
取消激活并重置相机。