Ejemplo n.º 1
0
        void Awake()
        {
            NxrViewer.Create();
            cam = GetComponent <Camera>();
            AddStereoRig();

            NxrOverrideSettings.OnProfileChangedEvent += OnProfileChanged;
        }
Ejemplo n.º 2
0
        public override void UpdateState()
        {
            if (NxrViewer.USE_DTR)
            {
                _NVR_GetHeadPoseAndPosition(position, headData, ref _timewarp_view_number);
                NxrSDKApi.Instance.HeadPosition = new Vector3(position[0], position[1], position[2]);
                // Debug.LogError("HeadPosition:" + position[0] + "," + position[1] + "," + position[2]);

                if (NxrViewer.Instance.SixDofMode == SixDofMode.Head_3Dof_Ctrl_3Dof ||
                    NxrViewer.Instance.SixDofMode == SixDofMode.Head_3Dof_Ctrl_6Dof)
                {
                    position[0] = 0.0f;
                    position[1] = 0.0f;
                    position[2] = 0.0f;
                }

                if (position[0] != 0 || position[1] != 0 || position[2] != 0)
                {
                    if (NxrViewer.onSixDofPosition != null)
                    {
                        NxrViewer.onSixDofPosition(position[0], position[1], position[2]);
                    }
                }
            }

            // 头部锁定
            if ((NxrGlobal.verifyStatus >= 0 && NxrGlobal.verifyStatus != VERIFY_STATUS.SUCC) || NxrViewer.Instance.LockHeadTracker || (headData[0] == 0 && headData[15] == 0))
            {
                headData = new float[] { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 };
            }

            if (NxrGlobal.verifyStatus >= 0 && NxrGlobal.verifyStatus != VERIFY_STATUS.SUCC)
            {
                AndroidLog("------------------------------Verify Failed : " + NxrGlobal.verifyStatus + "------------------------------");
            }

            ExtractMatrix(ref headView, headData);
            headPose.SetRightHanded(headView);
            headPose.SetPosition(new Vector3(position[0], position[1], position[2]));
            isHeadPoseUpdated = true;
        }
Ejemplo n.º 3
0
 void Awake()
 {
     NxrViewer.Create();
 }
Ejemplo n.º 4
0
        /// @cond HIDDEN
        public override void OnInspectorGUI()
        {
            GUI.changed = false;

            GUIStyle headingStyle = new GUIStyle(GUI.skin.label);

            headingStyle.fontStyle = FontStyle.Bold;

            NxrViewer nvrViewer = (NxrViewer)target;

            EditorGUILayout.LabelField("General Settings", headingStyle);

            // 读取Config
            SettingsAssetConfig asset = NxrSDKApi.Instance.GetSettingsAssetConfig();

            nvrViewer.SixDofMode     = asset.mSixDofMode;
            nvrViewer.SleepMode      = asset.mSleepTimeoutMode;
            nvrViewer.HeadControl    = asset.mHeadControl;
            nvrViewer.TextureQuality = asset.mTextureQuality;
            nvrViewer.TextureMSAA    = asset.mTextureMSAA;
            // 读取Config

#if UNITY_ANDROID
            nvrViewer.TrackerPosition = EditorGUILayout.Toggle(trackerPositionLabel, nvrViewer.TrackerPosition);
#endif
            if (nvrViewer.TrackerPosition)
            {
                nvrViewer.DisplacementCoefficient = EditorGUILayout.Slider(displacementCoefficient, nvrViewer.DisplacementCoefficient, 0, 1);
            }

            nvrViewer.SleepMode = (SleepTimeoutMode)EditorGUILayout.EnumPopup(SleepContent, nvrViewer.SleepMode);

            nvrViewer.SplitScreenModeEnabled = EditorGUILayout.Toggle(splitModeLabel, nvrViewer.SplitScreenModeEnabled);

            nvrViewer.TextureQuality = (TextureQuality)EditorGUILayout.EnumPopup(qualityLabel, nvrViewer.TextureQuality);

            nvrViewer.RemoteDebug = EditorGUILayout.Toggle(debuggingLabel, nvrViewer.RemoteDebug);

            nvrViewer.RemoteController = EditorGUILayout.Toggle(new GUIContent("Device Remote Controller",
                                                                               "When XR device is usb connected, use XR device controller data in editor run mode."), nvrViewer.RemoteController);

            nvrViewer.ShowFPS = EditorGUILayout.Toggle("Show FPS in Scene", nvrViewer.ShowFPS);

            EditorGUILayout.LabelField("Advanced Settings", headingStyle);


            nvrViewer.HeadControl = (HeadControl)EditorGUILayout.EnumPopup(headControl, nvrViewer.HeadControl);

            if (nvrViewer.HeadControl == HeadControl.Hover)
            {
                nvrViewer.Duration = EditorGUILayout.DelayedFloatField(duration, nvrViewer.Duration);
            }

            nvrViewer.TextureMSAA = (TextureMSAA)EditorGUILayout.EnumPopup(new GUIContent("Texture MSAA",
                                                                                          "The texture Anti-aliasing"), nvrViewer.TextureMSAA);

            EditorGUILayout.LabelField("SixDof Controller Settings", headingStyle);
            nvrViewer.IsAppHandleTriggerEvent = EditorGUILayout.Toggle(new GUIContent("App Handle Controller Trigger Event", "Sets Handle Controller Trigger Event"),
                                                                       nvrViewer.IsAppHandleTriggerEvent);
#if UNITY_STANDALONE_WIN || ANDROID_REMOTE_NRR
            nvrViewer.TextureQuality = TextureQuality.Best;

            nvrViewer.TargetFrameRate = (FrameRate)EditorGUILayout.EnumPopup(new GUIContent("TargetFrameRate",
                                                                                            "The target Frame Rate in PC."), nvrViewer.TargetFrameRate);

            nvrViewer.UseThirdPartyPosition = EditorGUILayout.Toggle(use3rdPosTip, nvrViewer.UseThirdPartyPosition);
#endif

            EditorGUILayout.Separator();
            if (GUI.changed)
            {
                asset.mSleepTimeoutMode = nvrViewer.SleepMode;
                asset.mHeadControl      = nvrViewer.HeadControl;
                asset.mTextureQuality   = nvrViewer.TextureQuality;
                asset.mTextureMSAA      = nvrViewer.TextureMSAA;
                EditorUtility.SetDirty(asset);
                EditorUtility.SetDirty(nvrViewer);
            }
            // 保存序列化数据,否则会出现设置数据丢失情况
            serializedObject.ApplyModifiedProperties();
        }