@galacean/engine-xr-webxr 2.0.0-alpha.5 → 2.0.0-alpha.50
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser.js +81 -106
- package/dist/browser.js.map +1 -1
- package/dist/browser.min.js +1 -1
- package/dist/browser.min.js.map +1 -1
- package/dist/main.js +30 -18
- package/dist/main.js.map +1 -1
- package/dist/module.js +30 -18
- package/dist/module.js.map +1 -1
- package/package.json +7 -5
- package/types/Util.d.ts +1 -1
- package/types/WebXRDevice.d.ts +3 -1
- package/types/WebXRFrame.d.ts +2 -0
- package/types/WebXRSession.d.ts +11 -3
- package/types/feature/WebXRAnchorTracking.d.ts +4 -0
- package/types/feature/WebXRFeature.d.ts +8 -1
- package/types/feature/WebXRImageTracking.d.ts +4 -0
- package/types/feature/WebXRPlaneTracking.d.ts +4 -0
- package/types/feature/WebXRTrackableFeature.d.ts +14 -1
- package/types/index.d.ts +1 -0
package/dist/module.js
CHANGED
|
@@ -578,13 +578,16 @@ function _create_class(Constructor, protoProps, staticProps) {
|
|
|
578
578
|
* Converts the vector into a unit vector.
|
|
579
579
|
* @param a - The vector to normalize
|
|
580
580
|
* @param out - The normalized vector
|
|
581
|
+
* @returns True if the vector has a unit form, otherwise false and `out` is left untouched
|
|
581
582
|
*/ Vector3.normalize = function normalize(a, out) {
|
|
582
583
|
var _x = a._x, _y = a._y, _z = a._z;
|
|
583
584
|
var len = Math.sqrt(_x * _x + _y * _y + _z * _z);
|
|
584
|
-
if (len > MathUtil.zeroTolerance) {
|
|
585
|
-
|
|
586
|
-
out.set(_x *
|
|
585
|
+
if (len > MathUtil.zeroTolerance && Number.isFinite(len)) {
|
|
586
|
+
var inv = 1 / len;
|
|
587
|
+
out.set(_x * inv, _y * inv, _z * inv);
|
|
588
|
+
return true;
|
|
587
589
|
}
|
|
590
|
+
return false;
|
|
588
591
|
};
|
|
589
592
|
/**
|
|
590
593
|
* Scale a vector by the given value.
|
|
@@ -730,8 +733,6 @@ new Vector3();
|
|
|
730
733
|
new Vector3();
|
|
731
734
|
new Vector3();
|
|
732
735
|
new Vector3();
|
|
733
|
-
new Vector3();
|
|
734
|
-
new Vector3();
|
|
735
736
|
/**
|
|
736
737
|
* Represents a 3x3 mathematical matrix.
|
|
737
738
|
*/ var Matrix3x3 = /*#__PURE__*/ function() {
|
|
@@ -1116,6 +1117,7 @@ new Vector3();
|
|
|
1116
1117
|
* Calculate the inverse of the specified matrix.
|
|
1117
1118
|
* @param a - The matrix whose inverse is to be calculated
|
|
1118
1119
|
* @param out - The inverse of the specified matrix
|
|
1120
|
+
* @returns Null if the matrix is singular; otherwise undefined
|
|
1119
1121
|
*/ Matrix3x3.invert = function invert(a, out) {
|
|
1120
1122
|
var ae = a.elements;
|
|
1121
1123
|
var oe = out.elements;
|
|
@@ -2585,6 +2587,7 @@ new Vector3();
|
|
|
2585
2587
|
* Calculate the inverse of the specified matrix.
|
|
2586
2588
|
* @param a - The matrix whose inverse is to be calculated
|
|
2587
2589
|
* @param out - The inverse of the specified matrix
|
|
2590
|
+
* @returns Null if the matrix is singular; otherwise undefined
|
|
2588
2591
|
*/ Matrix.invert = function invert(a, out) {
|
|
2589
2592
|
var ae = a.elements;
|
|
2590
2593
|
var oe = out.elements;
|
|
@@ -2891,7 +2894,7 @@ var WebXRFrame = /*#__PURE__*/ function() {
|
|
|
2891
2894
|
this._updateCamera(inputs);
|
|
2892
2895
|
};
|
|
2893
2896
|
_proto._updateController = function _updateController(inputs) {
|
|
2894
|
-
var
|
|
2897
|
+
var frame = this._platformFrame;
|
|
2895
2898
|
var _this__session = this._session, session = _this__session._platformSession, referenceSpace = _this__session._platformReferenceSpace;
|
|
2896
2899
|
var inputSources = session.inputSources;
|
|
2897
2900
|
for(var i = 0, n = inputSources.length; i < n; i++){
|
|
@@ -2903,31 +2906,33 @@ var WebXRFrame = /*#__PURE__*/ function() {
|
|
|
2903
2906
|
case "tracked-pointer":
|
|
2904
2907
|
var gripSpace = inputSource.gripSpace, targetRaySpace = inputSource.targetRaySpace;
|
|
2905
2908
|
if (gripSpace) {
|
|
2906
|
-
var
|
|
2907
|
-
if (
|
|
2909
|
+
var pose = frame.getPose(gripSpace, referenceSpace);
|
|
2910
|
+
if (pose) {
|
|
2911
|
+
var transform = pose.transform;
|
|
2908
2912
|
var gripPose = input.gripPose;
|
|
2909
2913
|
gripPose.matrix.copyFromArray(transform.matrix);
|
|
2910
2914
|
gripPose.position.copyFrom(transform.position);
|
|
2911
2915
|
gripPose.rotation.copyFrom(transform.orientation);
|
|
2912
2916
|
}
|
|
2913
|
-
input.trackingState = emulatedPosition ? XRTrackingState.TrackingLost : XRTrackingState.Tracking;
|
|
2917
|
+
input.trackingState = !pose || pose.emulatedPosition ? XRTrackingState.TrackingLost : XRTrackingState.Tracking;
|
|
2914
2918
|
}
|
|
2915
2919
|
if (targetRaySpace) {
|
|
2916
|
-
var
|
|
2917
|
-
if (
|
|
2920
|
+
var pose1 = frame.getPose(targetRaySpace, referenceSpace);
|
|
2921
|
+
if (pose1) {
|
|
2922
|
+
var transform1 = pose1.transform;
|
|
2918
2923
|
var targetRayPose = input.targetRayPose;
|
|
2919
2924
|
targetRayPose.matrix.copyFromArray(transform1.matrix);
|
|
2920
2925
|
targetRayPose.position.copyFrom(transform1.position);
|
|
2921
2926
|
targetRayPose.rotation.copyFrom(transform1.orientation);
|
|
2922
|
-
input.trackingState = emulatedPosition1 ? XRTrackingState.TrackingLost : XRTrackingState.Tracking;
|
|
2923
2927
|
}
|
|
2928
|
+
input.trackingState = !pose1 || pose1.emulatedPosition ? XRTrackingState.TrackingLost : XRTrackingState.Tracking;
|
|
2924
2929
|
}
|
|
2925
2930
|
break;
|
|
2926
2931
|
}
|
|
2927
2932
|
}
|
|
2928
2933
|
};
|
|
2929
2934
|
_proto._updateCamera = function _updateCamera(inputs) {
|
|
2930
|
-
var
|
|
2935
|
+
var frame = this._platformFrame;
|
|
2931
2936
|
var _this__session = this._session, referenceSpace = _this__session._platformReferenceSpace, layer = _this__session._platformLayer, framebufferWidth = _this__session.framebufferWidth, framebufferHeight = _this__session.framebufferHeight;
|
|
2932
2937
|
var viewerPose = frame.getViewerPose(referenceSpace);
|
|
2933
2938
|
if (viewerPose) {
|
|
@@ -3202,6 +3207,8 @@ var WebXRDevice = /*#__PURE__*/ function() {
|
|
|
3202
3207
|
case XRFeatureType.ImageTracking:
|
|
3203
3208
|
// @ts-ignore
|
|
3204
3209
|
return typeof XRImageTrackingResult !== "undefined";
|
|
3210
|
+
default:
|
|
3211
|
+
return false;
|
|
3205
3212
|
}
|
|
3206
3213
|
};
|
|
3207
3214
|
_proto.createPlatformFeature = function createPlatformFeature(type) {
|
|
@@ -3231,11 +3238,12 @@ var WebXRDevice = /*#__PURE__*/ function() {
|
|
|
3231
3238
|
var attributes = gl.getContextAttributes();
|
|
3232
3239
|
if (!attributes) {
|
|
3233
3240
|
reject(Error("GetContextAttributes Error!"));
|
|
3241
|
+
return;
|
|
3234
3242
|
}
|
|
3235
3243
|
gl.makeXRCompatible().then(function() {
|
|
3236
3244
|
var scaleFactor = XRWebGLLayer.getNativeFramebufferScaleFactor(session);
|
|
3237
3245
|
var layer;
|
|
3238
|
-
if (session.renderState.layers === undefined ||
|
|
3246
|
+
if (session.renderState.layers === undefined || !rhi.isWebGL2) {
|
|
3239
3247
|
var layerInit = {
|
|
3240
3248
|
antialias: session.renderState.layers === undefined ? attributes.antialias : true,
|
|
3241
3249
|
alpha: true,
|
|
@@ -3393,6 +3401,7 @@ var WebXRAnchorTracking = /*#__PURE__*/ function(WebXRTrackableFeature) {
|
|
|
3393
3401
|
_proto._updateTrackedAnchor = function _updateTrackedAnchor(frame, space, requestTracking) {
|
|
3394
3402
|
var xrAnchor = requestTracking.xrAnchor;
|
|
3395
3403
|
var xrPose = frame.getPose(xrAnchor.anchorSpace, space);
|
|
3404
|
+
if (!xrPose) return true;
|
|
3396
3405
|
var transform = xrPose.transform;
|
|
3397
3406
|
var pose = requestTracking.tracked[0].pose;
|
|
3398
3407
|
pose.matrix.copyFromArray(transform.matrix);
|
|
@@ -3452,8 +3461,7 @@ var WebXRImageTracking = /*#__PURE__*/ function(WebXRTrackableFeature) {
|
|
|
3452
3461
|
tracked.referenceImage = requestTrackingImage.image;
|
|
3453
3462
|
}
|
|
3454
3463
|
if (trackingResult.trackingState === "tracked") {
|
|
3455
|
-
this._updateTrackedImage(platformFrame, platformReferenceSpace, tracked, trackingResult);
|
|
3456
|
-
tracked.state = XRTrackingState.Tracking;
|
|
3464
|
+
tracked.state = this._updateTrackedImage(platformFrame, platformReferenceSpace, tracked, trackingResult) ? XRTrackingState.Tracking : XRTrackingState.TrackingLost;
|
|
3457
3465
|
} else {
|
|
3458
3466
|
tracked.state = XRTrackingState.TrackingLost;
|
|
3459
3467
|
}
|
|
@@ -3524,11 +3532,14 @@ var WebXRImageTracking = /*#__PURE__*/ function(WebXRTrackableFeature) {
|
|
|
3524
3532
|
};
|
|
3525
3533
|
_proto._updateTrackedImage = function _updateTrackedImage(frame, space, trackedImage, trackingResult) {
|
|
3526
3534
|
var pose = trackedImage.pose;
|
|
3527
|
-
var
|
|
3535
|
+
var xrPose = frame.getPose(trackingResult.imageSpace, space);
|
|
3536
|
+
if (!xrPose) return false;
|
|
3537
|
+
var transform = xrPose.transform;
|
|
3528
3538
|
pose.matrix.copyFromArray(transform.matrix);
|
|
3529
3539
|
pose.rotation.copyFrom(transform.orientation);
|
|
3530
3540
|
pose.position.copyFrom(transform.position);
|
|
3531
3541
|
trackedImage.measuredPhysicalWidth = trackingResult.measuredWidthInMeters;
|
|
3542
|
+
return true;
|
|
3532
3543
|
};
|
|
3533
3544
|
return WebXRImageTracking;
|
|
3534
3545
|
}(WebXRTrackableFeature);
|
|
@@ -3588,7 +3599,8 @@ var WebXRPlaneTracking = /*#__PURE__*/ function(WebXRTrackableFeature) {
|
|
|
3588
3599
|
options.optionalFeatures.push("plane-detection");
|
|
3589
3600
|
};
|
|
3590
3601
|
_proto._updatePlane = function _updatePlane(frame, space, trackedPlane) {
|
|
3591
|
-
var pose = trackedPlane.pose, polygon = trackedPlane.polygon
|
|
3602
|
+
var pose = trackedPlane.pose, polygon = trackedPlane.polygon;
|
|
3603
|
+
var xrPlane = trackedPlane.xrPlane;
|
|
3592
3604
|
var planePose = frame.getPose(xrPlane.planeSpace, space);
|
|
3593
3605
|
if (!planePose) return;
|
|
3594
3606
|
var transform = planePose.transform, emulatedPosition = planePose.emulatedPosition;
|