@needle-tools/engine 3.36.5-beta → 3.36.6-beta

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.
@@ -2,6 +2,7 @@ export * from "./debug/index.js";
2
2
  export * from "./engine_addressables.js";
3
3
  export * from "./engine_application.js";
4
4
  export * from "./engine_assetdatabase.js";
5
+ export { getCameraController, setAutoFitEnabled, setCameraController, useForAutoFit } from "./engine_camera.js";
5
6
  export * from "./engine_components.js";
6
7
  export * from "./engine_components_internal.js";
7
8
  export * from "./engine_components_internal.js";
package/lib/engine/api.js CHANGED
@@ -2,6 +2,7 @@ export * from "./debug/index.js";
2
2
  export * from "./engine_addressables.js";
3
3
  export * from "./engine_application.js";
4
4
  export * from "./engine_assetdatabase.js";
5
+ export { getCameraController, setAutoFitEnabled, setCameraController, useForAutoFit } from "./engine_camera.js";
5
6
  export * from "./engine_components.js";
6
7
  export * from "./engine_components_internal.js";
7
8
  export * from "./engine_components_internal.js";
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/engine/api.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAA;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAC,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC1F,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAE1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC9D,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,aAAa,CAAA"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/engine/api.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAC,iBAAiB,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAC9G,cAAc,wBAAwB,CAAC;AACvC,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAChD,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,uBAAuB,CAAA;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC3F,cAAc,2BAA2B,CAAC;AAC1C,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AACxD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oCAAoC,CAAC;AACnD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAE1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAC9D,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAA;AACtC,cAAc,aAAa,CAAA"}
@@ -7,5 +7,7 @@ export declare function getCameraController(cam: Camera): ICameraController | nu
7
7
  export declare function setCameraController(cam: Camera, cameraController: ICameraController, active: boolean): void;
8
8
  /** @internal */
9
9
  export declare function useForAutoFit(obj: Object3D): boolean;
10
- /** @internal */
10
+ /**
11
+ * Enable or disable autofitting for the given object
12
+ */
11
13
  export declare function setAutoFitEnabled(obj: Object3D, enabled: boolean): void;
@@ -22,7 +22,9 @@ export function useForAutoFit(obj) {
22
22
  // otherwise if anything is set except false we assume it should be included
23
23
  return obj[autofit] !== false;
24
24
  }
25
- /** @internal */
25
+ /**
26
+ * Enable or disable autofitting for the given object
27
+ */
26
28
  export function setAutoFitEnabled(obj, enabled) {
27
29
  obj[autofit] = enabled;
28
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"engine_camera.js","sourceRoot":"","sources":["../../src/engine/engine_camera.ts"],"names":[],"mappings":"AAKA,MAAM,iBAAiB,GAAG,yBAAyB,CAAC;AAEpD;GACG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC3C,OAAO,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAClC,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,mBAAmB,CAAC,GAAW,EAAE,gBAAmC,EAAE,MAAe;IACjG,IAAI,MAAM;QACN,GAAG,CAAC,iBAAiB,CAAC,GAAG,gBAAgB,CAAC;SACzC;QACD,IAAI,GAAG,CAAC,iBAAiB,CAAC,KAAK,gBAAgB;YAC3C,GAAG,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC;KACrC;AACL,CAAC;AAGD,MAAM,OAAO,GAAG,gBAAgB,CAAC;AAEjC,gBAAgB;AAChB,MAAM,UAAU,aAAa,CAAC,GAAa;IACvC,yDAAyD;IACzD,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5C,4EAA4E;IAC5E,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC;AAClC,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,iBAAiB,CAAC,GAAa,EAAE,OAAgB;IAC7D,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAE3B,CAAC"}
1
+ {"version":3,"file":"engine_camera.js","sourceRoot":"","sources":["../../src/engine/engine_camera.ts"],"names":[],"mappings":"AAKA,MAAM,iBAAiB,GAAG,yBAAyB,CAAC;AAEpD;GACG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC3C,OAAO,GAAG,CAAC,iBAAiB,CAAC,CAAC;AAClC,CAAC;AAED,qDAAqD;AACrD,MAAM,UAAU,mBAAmB,CAAC,GAAW,EAAE,gBAAmC,EAAE,MAAe;IACjG,IAAI,MAAM;QACN,GAAG,CAAC,iBAAiB,CAAC,GAAG,gBAAgB,CAAC;SACzC;QACD,IAAI,GAAG,CAAC,iBAAiB,CAAC,KAAK,gBAAgB;YAC3C,GAAG,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC;KACrC;AACL,CAAC;AAGD,MAAM,OAAO,GAAG,gBAAgB,CAAC;AAEjC,gBAAgB;AAChB,MAAM,UAAU,aAAa,CAAC,GAAa;IACvC,yDAAyD;IACzD,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5C,4EAA4E;IAC5E,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,CAAC;AAClC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAa,EAAE,OAAgB;IAC7D,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAC3B,CAAC"}
@@ -52,6 +52,9 @@ export declare class WebARSessionRoot extends Behaviour {
52
52
  private onScaleChanged;
53
53
  private onRevertSceneChanges;
54
54
  private onCreateAnchor;
55
+ private upVec;
56
+ private lookPoint;
57
+ private worldUpVec;
55
58
  private applyViewBasedTransform;
56
59
  private onApplyPose;
57
60
  }
@@ -160,6 +160,7 @@ export class WebARSessionRoot extends Behaviour {
160
160
  }
161
161
  }
162
162
  else {
163
+ // Update anchors, if any
163
164
  if (this._anchor && args.xr.referenceSpace) {
164
165
  const pose = args.xr.frame.getPose(this._anchor.anchorSpace, args.xr.referenceSpace);
165
166
  if (pose && this.context.time.frame % 20 === 0) {
@@ -173,7 +174,7 @@ export class WebARSessionRoot extends Behaviour {
173
174
  }
174
175
  }
175
176
  }
176
- // scene has been placed
177
+ // Scene has been placed
177
178
  if (this.arTouchTransform) {
178
179
  if (!this.userInput)
179
180
  this.userInput = new WebXRSessionRootUserInput(this.context);
@@ -220,8 +221,18 @@ export class WebARSessionRoot extends Behaviour {
220
221
  reticle.matrixAutoUpdate = false;
221
222
  reticle.visible = false;
222
223
  }
223
- reticle.position.lerp(hit.position, this.context.time.deltaTime / .1);
224
- reticle.quaternion.slerp(hit.quaternion, this.context.time.deltaTime / .05);
224
+ reticle["lastPos"] = reticle["lastPos"] || hit.position.clone();
225
+ reticle["lastQuat"] = reticle["lastQuat"] || hit.quaternion.clone();
226
+ // reticle["targetPos"] = reticle["targetPos"] || hit.position.clone();
227
+ // reticle["targetQuat"] = reticle["targetQuat"] || hit.quaternion.clone();
228
+ // TODO we likely want the reticle itself to be placed _exactly_ and then the visuals being lerped,
229
+ // Right now this leads to a "rotation glitch" when going from a horizontal to a vertical surface
230
+ reticle.position.copy(reticle["lastPos"].lerp(hit.position, this.context.time.deltaTime / .1));
231
+ reticle["lastPos"].copy(reticle.position);
232
+ reticle.quaternion.copy(reticle["lastQuat"].slerp(hit.quaternion, this.context.time.deltaTime / .05));
233
+ reticle["lastQuat"].copy(reticle.quaternion);
234
+ // TODO make sure original reticle asset scale is respected, or document it should be uniformly scaled
235
+ // scale *= this.customReticle?.asset?.scale?.x || 1;
225
236
  reticle.scale.set(scale, scale, scale);
226
237
  // if (this.invertForward) {
227
238
  // reticle.rotateY(Math.PI);
@@ -271,6 +282,9 @@ export class WebARSessionRoot extends Behaviour {
271
282
  this._isPlacing = false;
272
283
  this.context.input.removeEventListener("pointerup", this.onPlaceScene);
273
284
  this.onRevertSceneChanges();
285
+ // TODO: we should probably use the non-lerped position and quaternion here
286
+ reticle.position.copy(reticle["lastPos"]);
287
+ reticle.quaternion.copy(reticle["lastQuat"]);
274
288
  this.onApplyPose(reticle);
275
289
  if (this.useXRAnchor) {
276
290
  this.onCreateAnchor(NeedleXRSession.active, hit);
@@ -311,6 +325,9 @@ export class WebARSessionRoot extends Behaviour {
311
325
  }
312
326
  }
313
327
  }
328
+ upVec = new Vector3(0, 1, 0);
329
+ lookPoint = new Vector3();
330
+ worldUpVec = new Vector3(0, 1, 0);
314
331
  applyViewBasedTransform(reticle) {
315
332
  // Make reticle face the user to unify the placement experience across devices.
316
333
  // The pose that we're receiving from the hit test varies between devices:
@@ -321,9 +338,31 @@ export class WebARSessionRoot extends Behaviour {
321
338
  const reticleGo = reticle;
322
339
  const camWP = camGo.worldPosition;
323
340
  const reticleWp = reticleGo.worldPosition;
324
- // const distance = camWP.distanceTo(reticleWp);
325
- camWP.y = reticleWp.y;
326
- reticle.lookAt(camWP);
341
+ this.upVec.set(0, 1, 0).applyQuaternion(reticle.quaternion);
342
+ // upVec may be pointing AWAY from us, we have to flip it if that's the case
343
+ const camPos = camGo.worldPosition;
344
+ if (camPos) {
345
+ const camToReticle = reticle.position.clone().sub(camPos);
346
+ const angle = camToReticle.angleTo(this.upVec);
347
+ if (angle < Math.PI / 2) {
348
+ this.upVec.negate();
349
+ }
350
+ }
351
+ const upAngle = this.upVec.angleTo(this.worldUpVec) * 180 / Math.PI;
352
+ // For debugging look angle for AR placement
353
+ // Gizmos.DrawDirection(reticle.position, upVec, "blue", 0.1);
354
+ // Gizmos.DrawLabel(reticle.position, upAngle.toFixed(2), 0.1);
355
+ const angleForWallPlacement = 30;
356
+ if ((upAngle > angleForWallPlacement && upAngle < 180 - angleForWallPlacement) ||
357
+ (upAngle < -angleForWallPlacement && upAngle > -180 + angleForWallPlacement)) {
358
+ this.lookPoint.copy(reticle.position).add(this.upVec);
359
+ this.lookPoint.y = reticle.position.y;
360
+ reticle.lookAt(this.lookPoint);
361
+ }
362
+ else {
363
+ camWP.y = reticleWp.y;
364
+ reticle.lookAt(camWP);
365
+ }
327
366
  // TODO: ability to scale the reticle so that we can fit the scene depending on the view angle or distance to the reticle.
328
367
  // Currently, doing this leads to wrong placement of the scene.
329
368
  /*
@@ -1 +1 @@
1
- {"version":3,"file":"WebARSessionRoot.js","sourceRoot":"","sources":["../../../src/engine-components/webxr/WebARSessionRoot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WebARSessionRoot.js","sourceRoot":"","sources":["../../../src/engine-components/webxr/WebARSessionRoot.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@needle-tools/engine",
3
- "version": "3.36.5-beta",
3
+ "version": "3.36.6-beta",
4
4
  "description": "Needle Engine is a web-based runtime for 3D apps. It runs on your machine for development with great integrations into editors like Unity or Blender - and can be deployed onto any device! It is flexible, extensible and networking and XR are built-in",
5
5
  "main": "dist/needle-engine.umd.cjs",
6
6
  "type": "module",
package/src/engine/api.ts CHANGED
@@ -3,6 +3,7 @@ export * from "./debug/index.js";
3
3
  export * from "./engine_addressables.js";
4
4
  export * from "./engine_application.js";
5
5
  export * from "./engine_assetdatabase.js";
6
+ export { getCameraController,setAutoFitEnabled, setCameraController, useForAutoFit } from "./engine_camera.js"
6
7
  export * from "./engine_components.js";
7
8
  export * from "./engine_components_internal.js";
8
9
  export * from "./engine_components_internal.js";
@@ -20,7 +21,7 @@ export * from "./engine_gltf.js";
20
21
  export * from "./engine_hot_reload.js";
21
22
  export * from "./engine_input.js";
22
23
  export { InstancingUtil } from "./engine_instancing.js";
23
- export { hasCommercialLicense,hasIndieLicense, hasProLicense } from "./engine_license.js";
24
+ export { hasCommercialLicense, hasIndieLicense, hasProLicense } from "./engine_license.js";
24
25
  export * from "./engine_lifecycle_api.js";
25
26
  export * from "./engine_math.js";
26
27
  export * from "./engine_networking.js";
@@ -32,8 +32,9 @@ export function useForAutoFit(obj: Object3D): boolean {
32
32
  return obj[autofit] !== false;
33
33
  }
34
34
 
35
- /** @internal */
35
+ /**
36
+ * Enable or disable autofitting for the given object
37
+ */
36
38
  export function setAutoFitEnabled(obj: Object3D, enabled: boolean): void {
37
39
  obj[autofit] = enabled;
38
-
39
40
  }
@@ -1,14 +1,13 @@
1
- import { AxesHelper, DoubleSide, Matrix4, Mesh, MeshBasicMaterial, Object3D, Plane, Quaternion, Raycaster, RingGeometry, Scene, Vector3 } from "three";
1
+ import { AxesHelper, DoubleSide, Matrix4, Mesh, MeshBasicMaterial, Object3D, Plane, Raycaster, RingGeometry, Scene, Vector3 } from "three";
2
2
 
3
3
  import { isDevEnvironment, showBalloonWarning } from "../../engine/debug/index.js";
4
4
  import { AssetReference } from "../../engine/engine_addressables.js";
5
5
  import { Context } from "../../engine/engine_context.js";
6
- import { ObjectUtils, PrimitiveType } from "../../engine/engine_create_objects.js";
7
6
  import { destroy, instantiate } from "../../engine/engine_gameobject.js";
8
7
  import { InputEventQueue, NEPointerEvent } from "../../engine/engine_input.js";
9
8
  import { serializable } from "../../engine/engine_serialization_decorator.js";
10
9
  import type { IComponent, IGameObject } from "../../engine/engine_types.js";
11
- import { getParam, isAndroidDevice, isMobileDevice } from "../../engine/engine_utils.js";
10
+ import { getParam, isAndroidDevice } from "../../engine/engine_utils.js";
12
11
  import { NeedleXRController, type NeedleXREventArgs, type NeedleXRHitTestResult, NeedleXRSession } from "../../engine/engine_xr.js";
13
12
  import { Behaviour, GameObject } from "../Component.js";
14
13
 
@@ -190,6 +189,7 @@ export class WebARSessionRoot extends Behaviour {
190
189
 
191
190
  }
192
191
  else {
192
+ // Update anchors, if any
193
193
  if (this._anchor && args.xr.referenceSpace) {
194
194
  const pose = args.xr.frame.getPose(this._anchor.anchorSpace, args.xr.referenceSpace);
195
195
  if (pose && this.context.time.frame % 20 === 0) {
@@ -204,7 +204,7 @@ export class WebARSessionRoot extends Behaviour {
204
204
  }
205
205
  }
206
206
 
207
- // scene has been placed
207
+ // Scene has been placed
208
208
  if (this.arTouchTransform) {
209
209
  if (!this.userInput) this.userInput = new WebXRSessionRootUserInput(this.context);
210
210
  this.userInput?.enable();
@@ -255,9 +255,22 @@ export class WebARSessionRoot extends Behaviour {
255
255
  reticle.visible = false;
256
256
  }
257
257
 
258
- reticle.position.lerp(hit.position, this.context.time.deltaTime / .1);
259
- reticle.quaternion.slerp(hit.quaternion, this.context.time.deltaTime / .05);
258
+ reticle["lastPos"] = reticle["lastPos"] || hit.position.clone();
259
+ reticle["lastQuat"] = reticle["lastQuat"] || hit.quaternion.clone();
260
+ // reticle["targetPos"] = reticle["targetPos"] || hit.position.clone();
261
+ // reticle["targetQuat"] = reticle["targetQuat"] || hit.quaternion.clone();
262
+
263
+ // TODO we likely want the reticle itself to be placed _exactly_ and then the visuals being lerped,
264
+ // Right now this leads to a "rotation glitch" when going from a horizontal to a vertical surface
265
+ reticle.position.copy(reticle["lastPos"].lerp(hit.position, this.context.time.deltaTime / .1));
266
+ reticle["lastPos"].copy(reticle.position);
267
+ reticle.quaternion.copy(reticle["lastQuat"].slerp(hit.quaternion, this.context.time.deltaTime / .05));
268
+ reticle["lastQuat"].copy(reticle.quaternion);
269
+
270
+ // TODO make sure original reticle asset scale is respected, or document it should be uniformly scaled
271
+ // scale *= this.customReticle?.asset?.scale?.x || 1;
260
272
  reticle.scale.set(scale, scale, scale);
273
+
261
274
  // if (this.invertForward) {
262
275
  // reticle.rotateY(Math.PI);
263
276
  // }
@@ -317,6 +330,10 @@ export class WebARSessionRoot extends Behaviour {
317
330
 
318
331
  this.onRevertSceneChanges();
319
332
 
333
+ // TODO: we should probably use the non-lerped position and quaternion here
334
+ reticle.position.copy(reticle["lastPos"]);
335
+ reticle.quaternion.copy(reticle["lastQuat"]);
336
+
320
337
  this.onApplyPose(reticle);
321
338
 
322
339
  if (this.useXRAnchor) {
@@ -362,7 +379,12 @@ export class WebARSessionRoot extends Behaviour {
362
379
  }
363
380
  }
364
381
 
382
+ private upVec: Vector3 = new Vector3(0, 1, 0);
383
+ private lookPoint: Vector3 = new Vector3();
384
+ private worldUpVec: Vector3 = new Vector3(0, 1, 0);
385
+
365
386
  private applyViewBasedTransform(reticle: Object3D) {
387
+
366
388
  // Make reticle face the user to unify the placement experience across devices.
367
389
  // The pose that we're receiving from the hit test varies between devices:
368
390
  // - Quest: currently aligned to the mesh that was hit (depends on room setup), has changed a couple times
@@ -372,9 +394,36 @@ export class WebARSessionRoot extends Behaviour {
372
394
  const reticleGo = reticle as GameObject;
373
395
  const camWP = camGo.worldPosition;
374
396
  const reticleWp = reticleGo.worldPosition;
375
- // const distance = camWP.distanceTo(reticleWp);
376
- camWP.y = reticleWp.y;
377
- reticle.lookAt(camWP);
397
+
398
+ this.upVec.set(0,1,0).applyQuaternion(reticle.quaternion);
399
+
400
+ // upVec may be pointing AWAY from us, we have to flip it if that's the case
401
+ const camPos = camGo.worldPosition;
402
+ if (camPos) {
403
+ const camToReticle = reticle.position.clone().sub(camPos);
404
+ const angle = camToReticle.angleTo(this.upVec);
405
+ if (angle < Math.PI / 2) {
406
+ this.upVec.negate();
407
+ }
408
+ }
409
+
410
+ const upAngle = this.upVec.angleTo(this.worldUpVec) * 180 / Math.PI;
411
+ // For debugging look angle for AR placement
412
+ // Gizmos.DrawDirection(reticle.position, upVec, "blue", 0.1);
413
+ // Gizmos.DrawLabel(reticle.position, upAngle.toFixed(2), 0.1);
414
+
415
+ const angleForWallPlacement = 30;
416
+ if ((upAngle > angleForWallPlacement && upAngle < 180 - angleForWallPlacement) ||
417
+ (upAngle < -angleForWallPlacement && upAngle > -180 + angleForWallPlacement)) {
418
+
419
+ this.lookPoint.copy(reticle.position).add(this.upVec);
420
+ this.lookPoint.y = reticle.position.y;
421
+ reticle.lookAt(this.lookPoint);
422
+ }
423
+ else {
424
+ camWP.y = reticleWp.y;
425
+ reticle.lookAt(camWP);
426
+ }
378
427
 
379
428
  // TODO: ability to scale the reticle so that we can fit the scene depending on the view angle or distance to the reticle.
380
429
  // Currently, doing this leads to wrong placement of the scene.