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