Unity3d Vuforia DigitalEyeWearBehavior在运行时的行为设置更改不起作用
我在unity项目中使用vuforia库,需要更改用户按钮单击操作上的DigitalEyeWearBehavior属性。到目前为止,屏幕的方向发生了变化,当通过调试日志检查时,眼镜类型和模式似乎都设置得很完美。但该设备仅将屏幕方向更改为横向,并使相机变暗Unity3d Vuforia DigitalEyeWearBehavior在运行时的行为设置更改不起作用,unity3d,augmented-reality,vuforia,Unity3d,Augmented Reality,Vuforia,我在unity项目中使用vuforia库,需要更改用户按钮单击操作上的DigitalEyeWearBehavior属性。到目前为止,屏幕的方向发生了变化,当通过调试日志检查时,眼镜类型和模式似乎都设置得很完美。但该设备仅将屏幕方向更改为横向,并使相机变暗 public void ChangeToHeadGearMode(){ //static setting changes Screen.orientation = ScreenOrientation.Landscape;
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
。如果不使用,相机不会变黑,但视图不会更改为硬纸板视图。我在SetViewerActive
方法中尝试了所有可能的选项,但都不起作用。我检查了很多次,但没有发现错误。
我做错了什么,或者我在哪里遗漏了一个重要的问题?我找到了我自己问题的答案,并将其发布给可能遇到相同问题的任何人。到目前为止,还没有教程或真正的例子说明这是如何实际工作的。所以我不得不反复尝试,最终我找到了解决办法 您需要做的事情就是对摄影机实例进行反硝化,然后更改设置,然后
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);
}
记住再次激活普通视图:使用
DigitalEyeWearController.Instance.SetViewerActive(false,true)
将其停用并重置相机。似乎我需要在SetViewerActive(假、真)之间切换;和SetViewerActive(true,true);取决于我所处的视频模式
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);