예제 #1
0
 private void Awake()
 {
     if (null == instance)
     {
         instance = this;
     }
     else
     {
         Debug.LogError("ERROR: MORE THAN ONE ARSTATICCAMERA IN SCENE!");
     }
 }
예제 #2
0
 private void Awake()
 {
     if (null == instance)
     {
         instance = this;
     }
     else
     {
         ARController.Log("ERROR: MORE THAN ONE ARSTATICCAMERA IN SCENE!");
     }
 }
예제 #3
0
    public override void OnInspectorGUI()
    {
        ARStaticCamera arStaticCamera = (ARStaticCamera)target;

        if (null == arStaticCamera)
        {
            return;
        }

        arStaticCamera.ContentLayer = EditorGUILayout.LayerField("AR Content Layer", arStaticCamera.ContentLayer);
        arStaticCamera.NearPlane    = EditorGUILayout.FloatField("Near Plane", arStaticCamera.NearPlane);
        arStaticCamera.FarPlane     = EditorGUILayout.FloatField("Far Plane", arStaticCamera.FarPlane);
        EditorGUILayout.Separator();

        arStaticCamera.Stereo = EditorGUILayout.Toggle("Stereo Rendering", arStaticCamera.Stereo);

        if (ARToolKitAssetManager.OpticalCalibrations.Length <= 0)
        {
            arStaticCamera.Optical = false;
        }
        EditorGUI.BeginDisabledGroup(ARToolKitAssetManager.OpticalCalibrations.Length <= 0);
        arStaticCamera.Optical = EditorGUILayout.Toggle("Optical See-Through Display", arStaticCamera.Optical);
        EditorGUI.EndDisabledGroup();
        if (ARToolKitAssetManager.OpticalCalibrations.Length <= 0)
        {
            EditorGUILayout.HelpBox("No optical calibration parameters found.", MessageType.Info);
        }
        if (arStaticCamera.Optical && ARToolKitAssetManager.OpticalCalibrations.Length <= 0)
        {
            ARController.Log("Error: ARStaticCamera - Attempted to enable optical see-through mode with no optical configurations in " + BasePath + ".");
            arStaticCamera.Optical = false;
        }

        if (!arStaticCamera.Optical)
        {
            // Reset to defaults in ARStaticCamera.cs
            arStaticCamera.EditorOpticalIndexL     = 0;
            arStaticCamera.EditorOpticalNameL      = null;
            arStaticCamera.OpticalParametersL      = null;
            arStaticCamera.EditorOpticalIndexR     = 0;
            arStaticCamera.EditorOpticalNameR      = null;
            arStaticCamera.OpticalParametersR      = null;
            arStaticCamera.OpticalEyeLateralOffset = 63.5f;
            return;
        }

        int newIndexL = EditorGUILayout.Popup("Left Eye Configuration", arStaticCamera.EditorOpticalIndexL, ARToolKitAssetManager.OpticalCalibrations);
        int newIndexR = EditorGUILayout.Popup("Right Eye Configuration", arStaticCamera.EditorOpticalIndexR, ARToolKitAssetManager.OpticalCalibrations);

        if ((string.CompareOrdinal(ARToolKitAssetManager.OpticalCalibrations[newIndexL], arStaticCamera.EditorOpticalNameL) != 0) ||
            (string.CompareOrdinal(ARToolKitAssetManager.OpticalCalibrations[newIndexR], arStaticCamera.EditorOpticalNameR) != 0))
        {
            arStaticCamera.EditorOpticalIndexL = newIndexL;
            arStaticCamera.EditorOpticalNameL  = ARToolKitAssetManager.OpticalCalibrations[newIndexL];
            arStaticCamera.OpticalParametersL  = ReadOpticalParamsByName(arStaticCamera.EditorOpticalNameL);
            arStaticCamera.EditorOpticalIndexR = newIndexR;
            arStaticCamera.EditorOpticalNameR  = ARToolKitAssetManager.OpticalCalibrations[newIndexR];
            arStaticCamera.OpticalParametersR  = ReadOpticalParamsByName(arStaticCamera.EditorOpticalNameR);
            arStaticCamera.Optical             = true;
        }


        if (newIndexL == newIndexR)
        {
            // Sane defaults derived from https://en.wikipedia.org/wiki/Interpupillary_distance
            arStaticCamera.OpticalEyeLateralOffset = EditorGUILayout.Slider("Inter-Pupular Distance (mm)", arStaticCamera.OpticalEyeLateralOffset, 0.50f, 0.80f);
            EditorGUILayout.HelpBox("If you are using the same optical configuration for both the left and right eyes, you must supply an IPD (inter-pupular" +
                                    "distance) value. This is the spacing from one pupil to the other, in milimeters.", MessageType.Warning);
        }

        EditorGUILayout.Separator();
        EditorGUILayout.HelpBox("Do not create a second camera object for the right eye! ARToolKit will do this for you.", MessageType.Info);
    }