Unity3d 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;

我在unity项目中使用vuforia库,需要更改用户按钮单击操作上的DigitalEyeWearBehavior属性。到目前为止,屏幕的方向发生了变化,当通过调试日志检查时,眼镜类型和模式似乎都设置得很完美。但该设备仅将屏幕方向更改为横向,并使相机变暗

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);