Vuforia DigitalEyewearBehaviour在运行时设置更改无法正常工作

时间:2016-05-02 08:48:25

标签: unity3d augmented-reality vuforia

我在我的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多次,但没有发现错误。 我做错了什么或者我错过了什么重点?

2 个答案:

答案 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);取消激活并重置相机。