@needle-tools/engine 4.8.6 → 4.8.7-next.3c34e8b
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/CHANGELOG.md +4 -0
- package/components.needle.json +1 -1
- package/dist/{gltf-progressive-DXRy9EQz.js → gltf-progressive-BcHT3Nyo.js} +1 -1
- package/dist/{gltf-progressive-C-U_onhf.umd.cjs → gltf-progressive-CH3Q4H06.umd.cjs} +1 -1
- package/dist/{gltf-progressive-DViD_J_l.min.js → gltf-progressive-DR6HqF_h.min.js} +1 -1
- package/dist/{needle-engine.bundle-CaNItSG7.umd.cjs → needle-engine.bundle-BgFqEj5W.umd.cjs} +128 -128
- package/dist/{needle-engine.bundle-CQIq7Zg-.min.js → needle-engine.bundle-BthqMTPI.min.js} +128 -128
- package/dist/{needle-engine.bundle-BTJDRZkJ.js → needle-engine.bundle-Fj5SzBaF.js} +4378 -4355
- package/dist/needle-engine.js +402 -400
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/dist/{postprocessing-61aXdqNz.umd.cjs → postprocessing-CVb_x9YY.umd.cjs} +1 -1
- package/dist/{postprocessing-D9jDHD0U.js → postprocessing-ORx-0eCx.js} +1 -1
- package/dist/{postprocessing-Be9Ds4NK.min.js → postprocessing-Ywv5oKkX.min.js} +1 -1
- package/dist/three-examples-BX_Sktc9.min.js +501 -0
- package/dist/{three-examples-BihZ_R96.js → three-examples-CNexix3E.js} +2436 -2781
- package/dist/{three-examples-Ce6Th3bv.umd.cjs → three-examples-DWxXVnws.umd.cjs} +21 -21
- package/dist/{vendor-BRpzuoJE.min.js → vendor-C43vobGc.min.js} +37 -37
- package/dist/{vendor-p_xp9KuJ.js → vendor-Z4SPrTcP.js} +2402 -2047
- package/dist/vendor-xfQ8tKF3.umd.cjs +1121 -0
- package/lib/engine/api.d.ts +2 -0
- package/lib/engine/api.js +2 -0
- package/lib/engine/api.js.map +1 -1
- package/lib/engine/engine_addressables.d.ts +12 -12
- package/lib/engine/engine_addressables.js +30 -23
- package/lib/engine/engine_addressables.js.map +1 -1
- package/lib/engine/engine_animation.d.ts +1 -3
- package/lib/engine/engine_animation.js +15 -9
- package/lib/engine/engine_animation.js.map +1 -1
- package/lib/engine/engine_feature_flags.d.ts +3 -0
- package/lib/engine/engine_feature_flags.js +6 -0
- package/lib/engine/engine_feature_flags.js.map +1 -0
- package/lib/engine/engine_gameobject.js +0 -4
- package/lib/engine/engine_gameobject.js.map +1 -1
- package/lib/engine/engine_loaders.js +15 -11
- package/lib/engine/engine_loaders.js.map +1 -1
- package/lib/engine/engine_mainloop_utils.d.ts +2 -1
- package/lib/engine/engine_mainloop_utils.js +18 -6
- package/lib/engine/engine_mainloop_utils.js.map +1 -1
- package/lib/engine/engine_pmrem.d.ts +6 -0
- package/lib/engine/engine_pmrem.js +9 -40
- package/lib/engine/engine_pmrem.js.map +1 -1
- package/lib/engine/extensions/extensions.js +2 -2
- package/lib/engine/extensions/extensions.js.map +1 -1
- package/lib/engine/js-extensions/Object3D.js +19 -0
- package/lib/engine/js-extensions/Object3D.js.map +1 -1
- package/lib/engine-components/Animation.js +2 -1
- package/lib/engine-components/Animation.js.map +1 -1
- package/lib/engine-components/AnimationUtilsAutoplay.js +1 -6
- package/lib/engine-components/AnimationUtilsAutoplay.js.map +1 -1
- package/lib/engine-components/DropListener.d.ts +17 -12
- package/lib/engine-components/DropListener.js +34 -31
- package/lib/engine-components/DropListener.js.map +1 -1
- package/lib/engine-components/LookAtConstraint.d.ts +5 -1
- package/lib/engine-components/LookAtConstraint.js +8 -0
- package/lib/engine-components/LookAtConstraint.js.map +1 -1
- package/lib/engine-components/OrbitControls.d.ts +5 -7
- package/lib/engine-components/OrbitControls.js +12 -11
- package/lib/engine-components/OrbitControls.js.map +1 -1
- package/lib/engine-components/Skybox.js +9 -3
- package/lib/engine-components/Skybox.js.map +1 -1
- package/lib/engine-components/webxr/WebXRImageTracking.d.ts +1 -1
- package/lib/engine-components/webxr/WebXRImageTracking.js +12 -10
- package/lib/engine-components/webxr/WebXRImageTracking.js.map +1 -1
- package/package.json +4 -3
- package/plugins/vite/alias.js +45 -23
- package/src/engine/api.ts +3 -1
- package/src/engine/engine_addressables.ts +44 -33
- package/src/engine/engine_animation.ts +17 -9
- package/src/engine/engine_feature_flags.ts +8 -0
- package/src/engine/engine_gameobject.ts +0 -4
- package/src/engine/engine_loaders.ts +18 -13
- package/src/engine/engine_mainloop_utils.ts +24 -8
- package/src/engine/engine_pmrem.ts +9 -45
- package/src/engine/extensions/extensions.ts +2 -2
- package/src/engine/js-extensions/Object3D.ts +25 -2
- package/src/engine-components/Animation.ts +1 -1
- package/src/engine-components/AnimationUtilsAutoplay.ts +1 -6
- package/src/engine-components/DropListener.ts +40 -31
- package/src/engine-components/LookAtConstraint.ts +9 -1
- package/src/engine-components/OrbitControls.ts +19 -16
- package/src/engine-components/Skybox.ts +8 -4
- package/src/engine-components/webxr/WebXRImageTracking.ts +16 -14
- package/dist/three-examples-DKY9Nfge.min.js +0 -501
- package/dist/vendor-Ja-vKV-a.umd.cjs +0 -1121
|
@@ -12,6 +12,7 @@ import { imageToCanvas, USDObject, USDWriter, USDZExporterContext } from "../../
|
|
|
12
12
|
import { USDZExporter } from "../../engine-components/export/usdz/USDZExporter.js";
|
|
13
13
|
import { Behaviour, GameObject } from "../Component.js";
|
|
14
14
|
import { Renderer } from "../Renderer.js";
|
|
15
|
+
import { Context } from "../../engine/engine_context.js";
|
|
15
16
|
|
|
16
17
|
// https://github.com/immersive-web/marker-tracking/blob/main/explainer.md
|
|
17
18
|
|
|
@@ -159,6 +160,10 @@ class ImageTrackingExtension implements IUSDExporterExtension {
|
|
|
159
160
|
this.widthInMeters = widthInMeters;
|
|
160
161
|
}
|
|
161
162
|
|
|
163
|
+
private getImageTrackingComponents() {
|
|
164
|
+
return GameObject.findObjectsOfType(WebXRImageTracking, Context.Current).filter(c => c.trackedImages && c.trackedImages.length > 0 && c.activeAndEnabled);
|
|
165
|
+
}
|
|
166
|
+
|
|
162
167
|
onAfterHierarchy(_context: USDZExporterContext, writer: USDWriter) {
|
|
163
168
|
const iOSVersion = DeviceUtilities.getiOSVersion();
|
|
164
169
|
const majorVersion = iOSVersion ? parseInt(iOSVersion.split(".")[0]) : 18;
|
|
@@ -171,12 +176,10 @@ class ImageTrackingExtension implements IUSDExporterExtension {
|
|
|
171
176
|
}
|
|
172
177
|
|
|
173
178
|
onBeforeBuildDocument(_context: USDZExporterContext) {
|
|
174
|
-
const imageTracking =
|
|
175
|
-
if (!imageTracking || !imageTracking.trackedImages) return;
|
|
179
|
+
const imageTracking = this.getImageTrackingComponents()[0];
|
|
176
180
|
|
|
177
181
|
// Warn if more than one tracked image is used for USDZ; that's not supported at the moment.
|
|
178
|
-
if (imageTracking.trackedImages
|
|
179
|
-
{
|
|
182
|
+
if (imageTracking && imageTracking.trackedImages?.length > 1) {
|
|
180
183
|
if (isDevEnvironment()) showBalloonWarning("USDZ: Only one tracked image is supported.");
|
|
181
184
|
console.warn("USDZ: Only one tracked image is supported.");
|
|
182
185
|
}
|
|
@@ -187,15 +190,14 @@ class ImageTrackingExtension implements IUSDExporterExtension {
|
|
|
187
190
|
}
|
|
188
191
|
|
|
189
192
|
onExportObject(object: Object3D<Object3DEventMap>, model: USDObject, _context: USDZExporterContext) {
|
|
190
|
-
const imageTracking =
|
|
191
|
-
if (!imageTracking || !imageTracking.trackedImages) return;
|
|
193
|
+
const imageTracking = this.getImageTrackingComponents()[0];
|
|
194
|
+
if (!imageTracking || !imageTracking.trackedImages?.length) return;
|
|
192
195
|
|
|
196
|
+
const exporter = GameObject.findObjectOfType(USDZExporter);
|
|
197
|
+
if (!exporter) return;
|
|
193
198
|
|
|
194
199
|
for (const trackedImage of imageTracking.trackedImages) {
|
|
195
200
|
if (trackedImage.object?.asset === object) {
|
|
196
|
-
const exporter = GameObject.findObjectOfType(USDZExporter);
|
|
197
|
-
if (!exporter) continue;
|
|
198
|
-
|
|
199
201
|
const { scale, target } = exporter.getARScaleAndTarget();
|
|
200
202
|
|
|
201
203
|
// We have to reset the image tracking object's position and rotation, because QuickLook applies them.
|
|
@@ -220,8 +222,8 @@ class ImageTrackingExtension implements IUSDExporterExtension {
|
|
|
220
222
|
// Thus, we can't have separate transforms for "regularly placing content" and "placing content with an image marker".
|
|
221
223
|
// model.extraSchemas.push("Preliminary_AnchoringAPI");
|
|
222
224
|
// model.addEventListener("serialize", (_writer: USDWriter, _context: USDZExporterContext) => {
|
|
223
|
-
|
|
224
|
-
|
|
225
|
+
// writer.appendLine( `token preliminary:anchoring:type = "image"` );
|
|
226
|
+
// writer.appendLine( `rel preliminary:imageAnchoring:referenceImage = </${context.document.name}/Scenes/Scene/AnchoringReferenceImage>` );
|
|
225
227
|
// });
|
|
226
228
|
|
|
227
229
|
// We can only apply this to the first tracked image, more are not supported by QuickLook.
|
|
@@ -238,7 +240,7 @@ class ImageTrackingExtension implements IUSDExporterExtension {
|
|
|
238
240
|
export class WebXRImageTracking extends Behaviour {
|
|
239
241
|
|
|
240
242
|
@serializable(WebXRImageTrackingModel)
|
|
241
|
-
trackedImages
|
|
243
|
+
trackedImages: WebXRImageTrackingModel[] = [];
|
|
242
244
|
|
|
243
245
|
/** Applies smoothing based on detected jitter to the tracked image. */
|
|
244
246
|
@serializable()
|
|
@@ -337,7 +339,7 @@ export class WebXRImageTracking extends Behaviour {
|
|
|
337
339
|
|
|
338
340
|
onLeaveXR(_args: NeedleXREventArgs): void {
|
|
339
341
|
|
|
340
|
-
if(!this.supported && DeviceUtilities.isAndroidDevice()) {
|
|
342
|
+
if (!this.supported && DeviceUtilities.isAndroidDevice()) {
|
|
341
343
|
showBalloonWarning(this.webXRIncubationsWarning);
|
|
342
344
|
}
|
|
343
345
|
|
|
@@ -364,7 +366,7 @@ export class WebXRImageTracking extends Behaviour {
|
|
|
364
366
|
private readonly imageToObjectMap = new Map<WebXRImageTrackingModel, { object: Object3D | null, frames: number, lastTrackingTime: number }>();
|
|
365
367
|
private readonly currentImages: WebXRTrackedImage[] = [];
|
|
366
368
|
|
|
367
|
-
|
|
369
|
+
|
|
368
370
|
private readonly webXRIncubationsWarning = "Image tracking is currently not supported on this device. On Chrome for Android, you can enable the <a target=\"_blank\" href=\"#\" onclick=\"() => console.log('I')\">chrome://flags/#webxr-incubations</a> flag.";
|
|
369
371
|
|
|
370
372
|
onUpdateXR(args: NeedleXREventArgs): void {
|