Exemplo n.º 1
0
        private void onHeadsetUpdate(Matrix4x4 leftProjectionMatrix,
                                     Matrix4x4 rightProjectionMatrix,
                                     Matrix4x4 leftViewMatrix,
                                     Matrix4x4 rightViewMatrix,
                                     Matrix4x4 sitStandMatrix)
        {
            Matrix4x4 trs = WebXRMatrixUtil.TransformViewMatrixToTRS(leftViewMatrix);

            this.headRotation = WebXRMatrixUtil.GetRotationFromMatrix(trs);
            this.headPosition = WebXRMatrixUtil.GetTranslationFromMatrix(trs);
            this.sitStand     = sitStandMatrix;
        }
Exemplo n.º 2
0
 private void onHeadsetUpdate(
     Matrix4x4 leftProjectionMatrix,
     Matrix4x4 rightProjectionMatrix,
     Matrix4x4 leftViewMatrix,
     Matrix4x4 rightViewMatrix,
     Matrix4x4 sitStandMatrix)
 {
     if (xrActive)
     {
         WebXRMatrixUtil.SetTransformFromViewMatrix(cameraL.transform, leftViewMatrix * sitStandMatrix.inverse);
         cameraL.projectionMatrix = leftProjectionMatrix;
         WebXRMatrixUtil.SetTransformFromViewMatrix(cameraR.transform, rightViewMatrix * sitStandMatrix.inverse);
         cameraR.projectionMatrix = rightProjectionMatrix;
     }
 }
Exemplo n.º 3
0
        private void onControllerUpdate(string id,
                                        int index,
                                        string handValue,
                                        bool hasOrientation,
                                        bool hasPosition,
                                        Quaternion orientation,
                                        Vector3 position,
                                        Vector3 linearAcceleration,
                                        Vector3 linearVelocity,
                                        WebXRControllerButton[] buttonValues,
                                        float[] axesValues)
        {
            if (handFromString(handValue) != hand)
            {
                return;
            }

            SetVisible(true);

            Quaternion sitStandRotation = WebXRMatrixUtil.GetRotationFromMatrix(sitStand);
            Quaternion rotation         = sitStandRotation * orientation;

            if (!hasPosition || simulate3dof)
            {
                position = applyArmModel(
                    sitStand.MultiplyPoint(headPosition),
                    rotation,
                    headRotation);
            }
            else
            {
                position = sitStand.MultiplyPoint(position);
            }

            _t.localPosition  = position - Vector3.up * 1.0f; /**/;
            _t.localRotation  = rotation;
            _t.localRotation *= Quaternion.Euler(fixupAngle); /**/

            UpdateButtons(buttonValues);
            axes = axesValues;
        }
Exemplo n.º 4
0
        void LateUpdate()
        {
            if (OnHeadsetUpdate == null || xrState != WebXRState.ENABLED)
            {
                return;
            }

            Matrix4x4 leftProjectionMatrix  = WebXRMatrixUtil.NumbersToMatrix(GetFromSharedArray(0));
            Matrix4x4 rightProjectionMatrix = WebXRMatrixUtil.NumbersToMatrix(GetFromSharedArray(1));
            Matrix4x4 leftViewMatrix        = WebXRMatrixUtil.NumbersToMatrix(GetFromSharedArray(2));
            Matrix4x4 rightViewMatrix       = WebXRMatrixUtil.NumbersToMatrix(GetFromSharedArray(3));
            Matrix4x4 sitStandMatrix        = WebXRMatrixUtil.NumbersToMatrix(GetFromSharedArray(4));

            // Matrix4x4 sitStandMatrix = Matrix4x4.Translate(new Vector3(0, DefaultHeight, 0));

            OnHeadsetUpdate(
                leftProjectionMatrix,
                rightProjectionMatrix,
                leftViewMatrix,
                rightViewMatrix,
                sitStandMatrix);
        }
Exemplo n.º 5
0
        void LateUpdate()
        {
            if (OnHeadsetUpdate != null && this.xrState != WebXRState.NORMAL)
            {
                Matrix4x4 leftProjectionMatrix  = WebXRMatrixUtil.NumbersToMatrix(GetFromSharedArray(0));
                Matrix4x4 rightProjectionMatrix = WebXRMatrixUtil.NumbersToMatrix(GetFromSharedArray(1));
                Matrix4x4 leftViewMatrix        = WebXRMatrixUtil.NumbersToMatrix(GetFromSharedArray(2));
                Matrix4x4 rightViewMatrix       = WebXRMatrixUtil.NumbersToMatrix(GetFromSharedArray(3));
                Matrix4x4 sitStandMatrix        = WebXRMatrixUtil.NumbersToMatrix(GetFromSharedArray(4));
                if (!this.capabilities.hasPosition)
                {
                    sitStandMatrix = Matrix4x4.Translate(new Vector3(0, this.DefaultHeight, 0));
                }

                OnHeadsetUpdate(
                    leftProjectionMatrix,
                    rightProjectionMatrix,
                    leftViewMatrix,
                    rightViewMatrix,
                    sitStandMatrix);
            }
        }