@aura3d/engine 1.4.5 → 1.5.1

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.
Files changed (513) hide show
  1. package/README.md +95 -29
  2. package/dist/animation/Retargeting.d.ts +12 -0
  3. package/dist/animation/Retargeting.d.ts.map +1 -0
  4. package/dist/animation/Retargeting.js +19 -0
  5. package/dist/animation/Retargeting.js.map +1 -0
  6. package/dist/assets/GLTFLoader.d.ts +4 -0
  7. package/dist/assets/GLTFLoader.d.ts.map +1 -1
  8. package/dist/assets/GLTFLoader.js +39 -4
  9. package/dist/assets/GLTFLoader.js.map +1 -1
  10. package/dist/assets/GLTFRenderResources.d.ts +16 -0
  11. package/dist/assets/GLTFRenderResources.d.ts.map +1 -1
  12. package/dist/assets/GLTFRenderResources.js +42 -2
  13. package/dist/assets/GLTFRenderResources.js.map +1 -1
  14. package/dist/assets/asset-corpus/ProductionGLTFRenderPipeline.d.ts +6 -0
  15. package/dist/assets/asset-corpus/ProductionGLTFRenderPipeline.d.ts.map +1 -1
  16. package/dist/assets/asset-corpus/ProductionGLTFRenderPipeline.js +2 -1
  17. package/dist/assets/asset-corpus/ProductionGLTFRenderPipeline.js.map +1 -1
  18. package/dist/assets/index.d.ts +0 -1
  19. package/dist/assets/index.d.ts.map +1 -1
  20. package/dist/assets/index.js +0 -1
  21. package/dist/assets/index.js.map +1 -1
  22. package/dist/assets/loaders/index.d.ts +0 -1
  23. package/dist/assets/loaders/index.d.ts.map +1 -1
  24. package/dist/assets/loaders/index.js +0 -1
  25. package/dist/assets/loaders/index.js.map +1 -1
  26. package/dist/aura3d-cli/asset-intent.d.ts +148 -0
  27. package/dist/aura3d-cli/asset-intent.d.ts.map +1 -0
  28. package/dist/aura3d-cli/asset-intent.js +145 -0
  29. package/dist/aura3d-cli/asset-intent.js.map +1 -0
  30. package/dist/aura3d-cli/asset-role-admission.d.ts +174 -0
  31. package/dist/aura3d-cli/asset-role-admission.d.ts.map +1 -0
  32. package/dist/aura3d-cli/asset-role-admission.js +381 -0
  33. package/dist/aura3d-cli/asset-role-admission.js.map +1 -0
  34. package/dist/aura3d-cli/asset-screening-effects.d.ts +95 -0
  35. package/dist/aura3d-cli/asset-screening-effects.d.ts.map +1 -0
  36. package/dist/aura3d-cli/asset-screening-effects.js +321 -0
  37. package/dist/aura3d-cli/asset-screening-effects.js.map +1 -0
  38. package/dist/aura3d-cli/asset-screening-pipeline.d.ts +132 -0
  39. package/dist/aura3d-cli/asset-screening-pipeline.d.ts.map +1 -0
  40. package/dist/aura3d-cli/asset-screening-pipeline.js +277 -0
  41. package/dist/aura3d-cli/asset-screening-pipeline.js.map +1 -0
  42. package/dist/aura3d-cli/cartoon-asset-profiles.d.ts +15 -0
  43. package/dist/aura3d-cli/cartoon-asset-profiles.d.ts.map +1 -0
  44. package/dist/aura3d-cli/cartoon-asset-profiles.js +46 -0
  45. package/dist/aura3d-cli/cartoon-asset-profiles.js.map +1 -0
  46. package/dist/aura3d-cli/cli-help.js +1 -1
  47. package/dist/aura3d-cli/cli.js +16 -2
  48. package/dist/aura3d-cli/cli.js.map +1 -1
  49. package/dist/aura3d-cli/index.d.ts +8 -0
  50. package/dist/aura3d-cli/index.d.ts.map +1 -1
  51. package/dist/aura3d-cli/index.js +390 -17
  52. package/dist/aura3d-cli/index.js.map +1 -1
  53. package/dist/aura3d-cli/pull-bridge/search.d.ts +4 -0
  54. package/dist/aura3d-cli/pull-bridge/search.d.ts.map +1 -1
  55. package/dist/aura3d-cli/pull-bridge/search.js +22 -0
  56. package/dist/aura3d-cli/pull-bridge/search.js.map +1 -1
  57. package/dist/aura3d-cli/pull-bridge.d.ts +20 -5
  58. package/dist/aura3d-cli/pull-bridge.d.ts.map +1 -1
  59. package/dist/aura3d-cli/pull-bridge.js +38 -1
  60. package/dist/aura3d-cli/pull-bridge.js.map +1 -1
  61. package/dist/controls/ControlState.d.ts +1 -1
  62. package/dist/controls/ControlState.d.ts.map +1 -1
  63. package/dist/controls/DragControls.d.ts +21 -1
  64. package/dist/controls/DragControls.d.ts.map +1 -1
  65. package/dist/controls/DragControls.js +24 -2
  66. package/dist/controls/DragControls.js.map +1 -1
  67. package/dist/controls/FirstPersonControls.d.ts +10 -1
  68. package/dist/controls/FirstPersonControls.d.ts.map +1 -1
  69. package/dist/controls/FirstPersonControls.js +18 -2
  70. package/dist/controls/FirstPersonControls.js.map +1 -1
  71. package/dist/controls/FlyControls.d.ts +42 -0
  72. package/dist/controls/FlyControls.d.ts.map +1 -1
  73. package/dist/controls/FlyControls.js +106 -3
  74. package/dist/controls/FlyControls.js.map +1 -1
  75. package/dist/controls/MapControls.d.ts +13 -0
  76. package/dist/controls/MapControls.d.ts.map +1 -1
  77. package/dist/controls/MapControls.js +40 -2
  78. package/dist/controls/MapControls.js.map +1 -1
  79. package/dist/controls/OrbitControls.d.ts +54 -0
  80. package/dist/controls/OrbitControls.d.ts.map +1 -1
  81. package/dist/controls/OrbitControls.js +133 -0
  82. package/dist/controls/OrbitControls.js.map +1 -1
  83. package/dist/controls/PointerLockControls.d.ts +12 -5
  84. package/dist/controls/PointerLockControls.d.ts.map +1 -1
  85. package/dist/controls/PointerLockControls.js +30 -11
  86. package/dist/controls/PointerLockControls.js.map +1 -1
  87. package/dist/controls/SelectionManager.d.ts +22 -1
  88. package/dist/controls/SelectionManager.d.ts.map +1 -1
  89. package/dist/controls/SelectionManager.js +64 -6
  90. package/dist/controls/SelectionManager.js.map +1 -1
  91. package/dist/controls/TransformControls.d.ts +135 -1
  92. package/dist/controls/TransformControls.d.ts.map +1 -1
  93. package/dist/controls/TransformControls.js +534 -10
  94. package/dist/controls/TransformControls.js.map +1 -1
  95. package/dist/controls/index.d.ts +7 -2
  96. package/dist/controls/index.d.ts.map +1 -1
  97. package/dist/controls/index.js +1 -1
  98. package/dist/controls/index.js.map +1 -1
  99. package/dist/create-aura3d/showcase-spec-game-geometry-extractor.d.ts +2 -0
  100. package/dist/create-aura3d/showcase-spec-game-geometry-extractor.d.ts.map +1 -1
  101. package/dist/create-aura3d/showcase-spec-game-geometry-extractor.js +769 -42
  102. package/dist/create-aura3d/showcase-spec-game-geometry-extractor.js.map +1 -1
  103. package/dist/create-aura3d/showcase-spec-game-template-evidence.d.ts.map +1 -1
  104. package/dist/create-aura3d/showcase-spec-game-template-evidence.js +22 -2
  105. package/dist/create-aura3d/showcase-spec-game-template-evidence.js.map +1 -1
  106. package/dist/create-aura3d/showcase-spec-replacement-candidates.js +26 -0
  107. package/dist/create-aura3d/showcase-spec-replacement-candidates.js.map +1 -1
  108. package/dist/ecs/components/MeshComponent.d.ts +5 -2
  109. package/dist/ecs/components/MeshComponent.d.ts.map +1 -1
  110. package/dist/ecs/components/MeshComponent.js.map +1 -1
  111. package/dist/editor-runtime/CartoonSceneEditor.d.ts +111 -0
  112. package/dist/editor-runtime/CartoonSceneEditor.d.ts.map +1 -0
  113. package/dist/editor-runtime/CartoonSceneEditor.js +285 -0
  114. package/dist/editor-runtime/CartoonSceneEditor.js.map +1 -0
  115. package/dist/editor-runtime/InteractiveTransformGizmo.d.ts +142 -0
  116. package/dist/editor-runtime/InteractiveTransformGizmo.d.ts.map +1 -0
  117. package/dist/editor-runtime/InteractiveTransformGizmo.js +468 -0
  118. package/dist/editor-runtime/InteractiveTransformGizmo.js.map +1 -0
  119. package/dist/editor-runtime/index.d.ts +2 -0
  120. package/dist/editor-runtime/index.d.ts.map +1 -1
  121. package/dist/editor-runtime/index.js +1 -0
  122. package/dist/editor-runtime/index.js.map +1 -1
  123. package/dist/engine/agent-api/ApplicationKits.d.ts +307 -0
  124. package/dist/engine/agent-api/ApplicationKits.d.ts.map +1 -0
  125. package/dist/engine/agent-api/ApplicationKits.js +650 -0
  126. package/dist/engine/agent-api/ApplicationKits.js.map +1 -0
  127. package/dist/engine/agent-api/CartoonAssetManifest.d.ts +50 -0
  128. package/dist/engine/agent-api/CartoonAssetManifest.d.ts.map +1 -0
  129. package/dist/engine/agent-api/CartoonAssetManifest.js +65 -0
  130. package/dist/engine/agent-api/CartoonAssetManifest.js.map +1 -0
  131. package/dist/engine/agent-api/CartoonDirector.d.ts +120 -0
  132. package/dist/engine/agent-api/CartoonDirector.d.ts.map +1 -0
  133. package/dist/engine/agent-api/CartoonDirector.js +432 -0
  134. package/dist/engine/agent-api/CartoonDirector.js.map +1 -0
  135. package/dist/engine/agent-api/CartoonEpisodePackage.d.ts +51 -0
  136. package/dist/engine/agent-api/CartoonEpisodePackage.d.ts.map +1 -0
  137. package/dist/engine/agent-api/CartoonEpisodePackage.js +79 -0
  138. package/dist/engine/agent-api/CartoonEpisodePackage.js.map +1 -0
  139. package/dist/engine/agent-api/CartoonMotionQuality.d.ts +83 -0
  140. package/dist/engine/agent-api/CartoonMotionQuality.d.ts.map +1 -0
  141. package/dist/engine/agent-api/CartoonMotionQuality.js +128 -0
  142. package/dist/engine/agent-api/CartoonMotionQuality.js.map +1 -0
  143. package/dist/engine/agent-api/CartoonPerformance.d.ts +150 -0
  144. package/dist/engine/agent-api/CartoonPerformance.d.ts.map +1 -0
  145. package/dist/engine/agent-api/CartoonPerformance.js +345 -0
  146. package/dist/engine/agent-api/CartoonPerformance.js.map +1 -0
  147. package/dist/engine/agent-api/CartoonRenderQueue.d.ts +143 -0
  148. package/dist/engine/agent-api/CartoonRenderQueue.d.ts.map +1 -0
  149. package/dist/engine/agent-api/CartoonRenderQueue.js +410 -0
  150. package/dist/engine/agent-api/CartoonRenderQueue.js.map +1 -0
  151. package/dist/engine/agent-api/CartoonRouteProof.d.ts +112 -0
  152. package/dist/engine/agent-api/CartoonRouteProof.d.ts.map +1 -0
  153. package/dist/engine/agent-api/CartoonRouteProof.js +127 -0
  154. package/dist/engine/agent-api/CartoonRouteProof.js.map +1 -0
  155. package/dist/engine/agent-api/CombatFrameData.d.ts +210 -0
  156. package/dist/engine/agent-api/CombatFrameData.d.ts.map +1 -0
  157. package/dist/engine/agent-api/CombatFrameData.js +324 -0
  158. package/dist/engine/agent-api/CombatFrameData.js.map +1 -0
  159. package/dist/engine/agent-api/FocusSelection.d.ts +186 -0
  160. package/dist/engine/agent-api/FocusSelection.d.ts.map +1 -0
  161. package/dist/engine/agent-api/FocusSelection.js +436 -0
  162. package/dist/engine/agent-api/FocusSelection.js.map +1 -0
  163. package/dist/engine/agent-api/GameEvidence.d.ts +1 -0
  164. package/dist/engine/agent-api/GameEvidence.d.ts.map +1 -1
  165. package/dist/engine/agent-api/GameEvidence.js +1 -0
  166. package/dist/engine/agent-api/GameEvidence.js.map +1 -1
  167. package/dist/engine/agent-api/GameGenreKits.d.ts +43 -1
  168. package/dist/engine/agent-api/GameGenreKits.d.ts.map +1 -1
  169. package/dist/engine/agent-api/GameGenreKits.js +79 -13
  170. package/dist/engine/agent-api/GameGenreKits.js.map +1 -1
  171. package/dist/engine/agent-api/GameRuntime.d.ts +1 -0
  172. package/dist/engine/agent-api/GameRuntime.d.ts.map +1 -1
  173. package/dist/engine/agent-api/GameRuntime.js +1 -0
  174. package/dist/engine/agent-api/GameRuntime.js.map +1 -1
  175. package/dist/engine/agent-api/GameSceneGeometryBindings.d.ts +22 -0
  176. package/dist/engine/agent-api/GameSceneGeometryBindings.d.ts.map +1 -1
  177. package/dist/engine/agent-api/GameSceneGeometryBindings.js +9 -0
  178. package/dist/engine/agent-api/GameSceneGeometryBindings.js.map +1 -1
  179. package/dist/engine/agent-api/LayeredSceneComposition.d.ts +295 -0
  180. package/dist/engine/agent-api/LayeredSceneComposition.d.ts.map +1 -0
  181. package/dist/engine/agent-api/LayeredSceneComposition.js +387 -0
  182. package/dist/engine/agent-api/LayeredSceneComposition.js.map +1 -0
  183. package/dist/engine/agent-api/PlatformerMotion.d.ts +177 -0
  184. package/dist/engine/agent-api/PlatformerMotion.d.ts.map +1 -0
  185. package/dist/engine/agent-api/PlatformerMotion.js +207 -0
  186. package/dist/engine/agent-api/PlatformerMotion.js.map +1 -0
  187. package/dist/engine/agent-api/SceneGroundingUtils.d.ts +62 -0
  188. package/dist/engine/agent-api/SceneGroundingUtils.d.ts.map +1 -1
  189. package/dist/engine/agent-api/SceneGroundingUtils.js +37 -0
  190. package/dist/engine/agent-api/SceneGroundingUtils.js.map +1 -1
  191. package/dist/engine/agent-api/SceneQueries.d.ts +124 -0
  192. package/dist/engine/agent-api/SceneQueries.d.ts.map +1 -0
  193. package/dist/engine/agent-api/SceneQueries.js +221 -0
  194. package/dist/engine/agent-api/SceneQueries.js.map +1 -0
  195. package/dist/engine/agent-api/SpatialAnchoring.d.ts +232 -0
  196. package/dist/engine/agent-api/SpatialAnchoring.d.ts.map +1 -0
  197. package/dist/engine/agent-api/SpatialAnchoring.js +348 -0
  198. package/dist/engine/agent-api/SpatialAnchoring.js.map +1 -0
  199. package/dist/engine/agent-api/SubjectFramingUtils.d.ts +127 -0
  200. package/dist/engine/agent-api/SubjectFramingUtils.d.ts.map +1 -0
  201. package/dist/engine/agent-api/SubjectFramingUtils.js +126 -0
  202. package/dist/engine/agent-api/SubjectFramingUtils.js.map +1 -0
  203. package/dist/engine/agent-api/TouchControlBinding.d.ts +81 -0
  204. package/dist/engine/agent-api/TouchControlBinding.d.ts.map +1 -0
  205. package/dist/engine/agent-api/TouchControlBinding.js +116 -0
  206. package/dist/engine/agent-api/TouchControlBinding.js.map +1 -0
  207. package/dist/engine/agent-api/VehicleChassis.d.ts +192 -0
  208. package/dist/engine/agent-api/VehicleChassis.d.ts.map +1 -0
  209. package/dist/engine/agent-api/VehicleChassis.js +322 -0
  210. package/dist/engine/agent-api/VehicleChassis.js.map +1 -0
  211. package/dist/engine/agent-api/VehicleDriverAi.d.ts +123 -0
  212. package/dist/engine/agent-api/VehicleDriverAi.d.ts.map +1 -0
  213. package/dist/engine/agent-api/VehicleDriverAi.js +217 -0
  214. package/dist/engine/agent-api/VehicleDriverAi.js.map +1 -0
  215. package/dist/engine/agent-api/WorldLabelRenderer.d.ts +146 -0
  216. package/dist/engine/agent-api/WorldLabelRenderer.d.ts.map +1 -0
  217. package/dist/engine/agent-api/WorldLabelRenderer.js +331 -0
  218. package/dist/engine/agent-api/WorldLabelRenderer.js.map +1 -0
  219. package/dist/engine/agent-api/index.d.ts +69 -0
  220. package/dist/engine/agent-api/index.d.ts.map +1 -1
  221. package/dist/engine/agent-api/index.js +633 -75
  222. package/dist/engine/agent-api/index.js.map +1 -1
  223. package/dist/engine/agent-api/product-viewer-runtime.d.ts.map +1 -1
  224. package/dist/engine/production-runtime/GameRenderPreset.d.ts +32 -0
  225. package/dist/engine/production-runtime/GameRenderPreset.d.ts.map +1 -1
  226. package/dist/engine/production-runtime/GameRenderPreset.js +37 -2
  227. package/dist/engine/production-runtime/GameRenderPreset.js.map +1 -1
  228. package/dist/engine/production-runtime/TypedGLBActor.d.ts +8 -0
  229. package/dist/engine/production-runtime/TypedGLBActor.d.ts.map +1 -1
  230. package/dist/engine/production-runtime/TypedGLBActor.js +2 -1
  231. package/dist/engine/production-runtime/TypedGLBActor.js.map +1 -1
  232. package/dist/input/controls/PointerLockControls.d.ts +1 -1
  233. package/dist/input/controls/PointerLockControls.d.ts.map +1 -1
  234. package/dist/input/controls/PointerLockControls.js +12 -0
  235. package/dist/input/controls/PointerLockControls.js.map +1 -1
  236. package/dist/physics/Collider.d.ts +1 -1
  237. package/dist/physics/Collider.d.ts.map +1 -1
  238. package/dist/physics/Collider.js +2 -2
  239. package/dist/physics/Collider.js.map +1 -1
  240. package/dist/physics/CollisionEvents.d.ts +1 -0
  241. package/dist/physics/CollisionEvents.d.ts.map +1 -1
  242. package/dist/physics/CollisionEvents.js.map +1 -1
  243. package/dist/physics/NarrowPhase.d.ts +11 -0
  244. package/dist/physics/NarrowPhase.d.ts.map +1 -0
  245. package/dist/physics/NarrowPhase.js +565 -0
  246. package/dist/physics/NarrowPhase.js.map +1 -0
  247. package/dist/physics/PhysicsDebugDraw.js +19 -1
  248. package/dist/physics/PhysicsDebugDraw.js.map +1 -1
  249. package/dist/physics/PhysicsWorld.d.ts +43 -0
  250. package/dist/physics/PhysicsWorld.d.ts.map +1 -1
  251. package/dist/physics/PhysicsWorld.js +305 -30
  252. package/dist/physics/PhysicsWorld.js.map +1 -1
  253. package/dist/physics/RigidBody.d.ts +8 -1
  254. package/dist/physics/RigidBody.d.ts.map +1 -1
  255. package/dist/physics/RigidBody.js +32 -5
  256. package/dist/physics/RigidBody.js.map +1 -1
  257. package/dist/physics/Shape.d.ts +16 -2
  258. package/dist/physics/Shape.d.ts.map +1 -1
  259. package/dist/physics/Shape.js +93 -31
  260. package/dist/physics/Shape.js.map +1 -1
  261. package/dist/physics/TimeOfImpact.d.ts +15 -0
  262. package/dist/physics/TimeOfImpact.d.ts.map +1 -0
  263. package/dist/physics/TimeOfImpact.js +81 -0
  264. package/dist/physics/TimeOfImpact.js.map +1 -0
  265. package/dist/physics/index.d.ts +2 -0
  266. package/dist/physics/index.d.ts.map +1 -1
  267. package/dist/physics/index.js +2 -0
  268. package/dist/physics/index.js.map +1 -1
  269. package/dist/rendering/CascadedShadowMaps.d.ts +9 -1
  270. package/dist/rendering/CascadedShadowMaps.d.ts.map +1 -1
  271. package/dist/rendering/CascadedShadowMaps.js +68 -0
  272. package/dist/rendering/CascadedShadowMaps.js.map +1 -1
  273. package/dist/rendering/ClusteredForwardLighting.d.ts +28 -0
  274. package/dist/rendering/ClusteredForwardLighting.d.ts.map +1 -0
  275. package/dist/rendering/ClusteredForwardLighting.js +156 -0
  276. package/dist/rendering/ClusteredForwardLighting.js.map +1 -0
  277. package/dist/rendering/DepthPass.d.ts +14 -1
  278. package/dist/rendering/DepthPass.d.ts.map +1 -1
  279. package/dist/rendering/DepthPass.js +19 -4
  280. package/dist/rendering/DepthPass.js.map +1 -1
  281. package/dist/rendering/EnvironmentMapResources.d.ts +59 -1
  282. package/dist/rendering/EnvironmentMapResources.d.ts.map +1 -1
  283. package/dist/rendering/EnvironmentMapResources.js +140 -100
  284. package/dist/rendering/EnvironmentMapResources.js.map +1 -1
  285. package/dist/rendering/EnvironmentPlatform.d.ts +3 -2
  286. package/dist/rendering/EnvironmentPlatform.d.ts.map +1 -1
  287. package/dist/rendering/EnvironmentPlatform.js +99 -44
  288. package/dist/rendering/EnvironmentPlatform.js.map +1 -1
  289. package/dist/rendering/ForwardPass.d.ts +37 -0
  290. package/dist/rendering/ForwardPass.d.ts.map +1 -1
  291. package/dist/rendering/ForwardPass.js +234 -7
  292. package/dist/rendering/ForwardPass.js.map +1 -1
  293. package/dist/rendering/Geometry.d.ts +19 -0
  294. package/dist/rendering/Geometry.d.ts.map +1 -1
  295. package/dist/rendering/Geometry.js +64 -0
  296. package/dist/rendering/Geometry.js.map +1 -1
  297. package/dist/rendering/IBL.d.ts.map +1 -1
  298. package/dist/rendering/IBL.js +0 -1
  299. package/dist/rendering/IBL.js.map +1 -1
  300. package/dist/rendering/LightCollector.d.ts +5 -1
  301. package/dist/rendering/LightCollector.d.ts.map +1 -1
  302. package/dist/rendering/LightCollector.js +16 -3
  303. package/dist/rendering/LightCollector.js.map +1 -1
  304. package/dist/rendering/LightUniforms.d.ts +26 -1
  305. package/dist/rendering/LightUniforms.d.ts.map +1 -1
  306. package/dist/rendering/LightUniforms.js +140 -8
  307. package/dist/rendering/LightUniforms.js.map +1 -1
  308. package/dist/rendering/LightingRig.d.ts +77 -0
  309. package/dist/rendering/LightingRig.d.ts.map +1 -1
  310. package/dist/rendering/LightingRig.js +100 -11
  311. package/dist/rendering/LightingRig.js.map +1 -1
  312. package/dist/rendering/MeshConsolidation.d.ts +63 -0
  313. package/dist/rendering/MeshConsolidation.d.ts.map +1 -0
  314. package/dist/rendering/MeshConsolidation.js +251 -0
  315. package/dist/rendering/MeshConsolidation.js.map +1 -0
  316. package/dist/rendering/PMREM.d.ts +13 -1
  317. package/dist/rendering/PMREM.d.ts.map +1 -1
  318. package/dist/rendering/PMREM.js +18 -4
  319. package/dist/rendering/PMREM.js.map +1 -1
  320. package/dist/rendering/PostProcessPass.d.ts +24 -2
  321. package/dist/rendering/PostProcessPass.d.ts.map +1 -1
  322. package/dist/rendering/PostProcessPass.js +136 -18
  323. package/dist/rendering/PostProcessPass.js.map +1 -1
  324. package/dist/rendering/PrimitiveSubmissionAudit.d.ts +195 -0
  325. package/dist/rendering/PrimitiveSubmissionAudit.d.ts.map +1 -0
  326. package/dist/rendering/PrimitiveSubmissionAudit.js +280 -0
  327. package/dist/rendering/PrimitiveSubmissionAudit.js.map +1 -0
  328. package/dist/rendering/ProductTurntableFixtures.d.ts.map +1 -1
  329. package/dist/rendering/ProductTurntableFixtures.js +93 -13
  330. package/dist/rendering/ProductTurntableFixtures.js.map +1 -1
  331. package/dist/rendering/ReflectionProbe.d.ts +59 -0
  332. package/dist/rendering/ReflectionProbe.d.ts.map +1 -1
  333. package/dist/rendering/ReflectionProbe.js +224 -0
  334. package/dist/rendering/ReflectionProbe.js.map +1 -1
  335. package/dist/rendering/ReflectionSurfaces.d.ts +4 -2
  336. package/dist/rendering/ReflectionSurfaces.d.ts.map +1 -1
  337. package/dist/rendering/ReflectionSurfaces.js +13 -8
  338. package/dist/rendering/ReflectionSurfaces.js.map +1 -1
  339. package/dist/rendering/RenderBackend.d.ts +1 -1
  340. package/dist/rendering/RenderBackend.d.ts.map +1 -1
  341. package/dist/rendering/RenderBackend.js +5 -1
  342. package/dist/rendering/RenderBackend.js.map +1 -1
  343. package/dist/rendering/RenderDevice.d.ts +13 -2
  344. package/dist/rendering/RenderDevice.d.ts.map +1 -1
  345. package/dist/rendering/RenderDevice.js +5 -2
  346. package/dist/rendering/RenderDevice.js.map +1 -1
  347. package/dist/rendering/Renderer.d.ts +41 -1
  348. package/dist/rendering/Renderer.d.ts.map +1 -1
  349. package/dist/rendering/Renderer.js +406 -61
  350. package/dist/rendering/Renderer.js.map +1 -1
  351. package/dist/rendering/RendererPostprocessPlan.d.ts +10 -3
  352. package/dist/rendering/RendererPostprocessPlan.d.ts.map +1 -1
  353. package/dist/rendering/RendererPostprocessPlan.js +25 -5
  354. package/dist/rendering/RendererPostprocessPlan.js.map +1 -1
  355. package/dist/rendering/RendererVisualPipelineReport.d.ts +3 -2
  356. package/dist/rendering/RendererVisualPipelineReport.d.ts.map +1 -1
  357. package/dist/rendering/RendererVisualPipelineReport.js +2 -0
  358. package/dist/rendering/RendererVisualPipelineReport.js.map +1 -1
  359. package/dist/rendering/ScreenSpaceLineMaterial.d.ts +34 -0
  360. package/dist/rendering/ScreenSpaceLineMaterial.d.ts.map +1 -0
  361. package/dist/rendering/ScreenSpaceLineMaterial.js +93 -0
  362. package/dist/rendering/ScreenSpaceLineMaterial.js.map +1 -0
  363. package/dist/rendering/ShaderChunks.d.ts +7 -0
  364. package/dist/rendering/ShaderChunks.d.ts.map +1 -1
  365. package/dist/rendering/ShaderChunks.js +137 -0
  366. package/dist/rendering/ShaderChunks.js.map +1 -1
  367. package/dist/rendering/ShaderLibrary.d.ts +17 -0
  368. package/dist/rendering/ShaderLibrary.d.ts.map +1 -1
  369. package/dist/rendering/ShaderLibrary.js +940 -98
  370. package/dist/rendering/ShaderLibrary.js.map +1 -1
  371. package/dist/rendering/ShadowPass.d.ts +10 -0
  372. package/dist/rendering/ShadowPass.d.ts.map +1 -1
  373. package/dist/rendering/ShadowPass.js +8 -1
  374. package/dist/rendering/ShadowPass.js.map +1 -1
  375. package/dist/rendering/SkinnedLitMaterial.d.ts +6 -0
  376. package/dist/rendering/SkinnedLitMaterial.d.ts.map +1 -1
  377. package/dist/rendering/SkinnedLitMaterial.js +22 -8
  378. package/dist/rendering/SkinnedLitMaterial.js.map +1 -1
  379. package/dist/rendering/SkinnedUnlitMaterial.d.ts +8 -0
  380. package/dist/rendering/SkinnedUnlitMaterial.d.ts.map +1 -1
  381. package/dist/rendering/SkinnedUnlitMaterial.js +26 -9
  382. package/dist/rendering/SkinnedUnlitMaterial.js.map +1 -1
  383. package/dist/rendering/SpecularPrefilter.d.ts +42 -0
  384. package/dist/rendering/SpecularPrefilter.d.ts.map +1 -0
  385. package/dist/rendering/SpecularPrefilter.js +480 -0
  386. package/dist/rendering/SpecularPrefilter.js.map +1 -0
  387. package/dist/rendering/TerrainFixtures.d.ts +24 -0
  388. package/dist/rendering/TerrainFixtures.d.ts.map +1 -1
  389. package/dist/rendering/TerrainFixtures.js +96 -0
  390. package/dist/rendering/TerrainFixtures.js.map +1 -1
  391. package/dist/rendering/Texture.d.ts +7 -0
  392. package/dist/rendering/Texture.d.ts.map +1 -1
  393. package/dist/rendering/Texture.js +9 -0
  394. package/dist/rendering/Texture.js.map +1 -1
  395. package/dist/rendering/VertexFormat.d.ts +34 -1
  396. package/dist/rendering/VertexFormat.d.ts.map +1 -1
  397. package/dist/rendering/VertexFormat.js +61 -0
  398. package/dist/rendering/VertexFormat.js.map +1 -1
  399. package/dist/rendering/WebGL2Device.d.ts +48 -0
  400. package/dist/rendering/WebGL2Device.d.ts.map +1 -1
  401. package/dist/rendering/WebGL2Device.js +1298 -44
  402. package/dist/rendering/WebGL2Device.js.map +1 -1
  403. package/dist/rendering/WebGPUDevice.d.ts +7 -2
  404. package/dist/rendering/WebGPUDevice.d.ts.map +1 -1
  405. package/dist/rendering/WebGPUDevice.js +111 -17
  406. package/dist/rendering/WebGPUDevice.js.map +1 -1
  407. package/dist/rendering/WebGPUSkinningLimits.d.ts +14 -0
  408. package/dist/rendering/WebGPUSkinningLimits.d.ts.map +1 -0
  409. package/dist/rendering/WebGPUSkinningLimits.js +14 -0
  410. package/dist/rendering/WebGPUSkinningLimits.js.map +1 -0
  411. package/dist/rendering/cartoon/CartoonMaterialStyle.d.ts +19 -0
  412. package/dist/rendering/cartoon/CartoonMaterialStyle.d.ts.map +1 -0
  413. package/dist/rendering/cartoon/CartoonMaterialStyle.js +13 -0
  414. package/dist/rendering/cartoon/CartoonMaterialStyle.js.map +1 -0
  415. package/dist/rendering/cartoon/CartoonRenderPreset.d.ts +36 -0
  416. package/dist/rendering/cartoon/CartoonRenderPreset.d.ts.map +1 -0
  417. package/dist/rendering/cartoon/CartoonRenderPreset.js +23 -0
  418. package/dist/rendering/cartoon/CartoonRenderPreset.js.map +1 -0
  419. package/dist/rendering/cartoon/CartoonToonMaterial.d.ts +130 -0
  420. package/dist/rendering/cartoon/CartoonToonMaterial.d.ts.map +1 -0
  421. package/dist/rendering/cartoon/CartoonToonMaterial.js +303 -0
  422. package/dist/rendering/cartoon/CartoonToonMaterial.js.map +1 -0
  423. package/dist/rendering/cartoon/CartoonVisualQuality.d.ts +28 -0
  424. package/dist/rendering/cartoon/CartoonVisualQuality.d.ts.map +1 -0
  425. package/dist/rendering/cartoon/CartoonVisualQuality.js +39 -0
  426. package/dist/rendering/cartoon/CartoonVisualQuality.js.map +1 -0
  427. package/dist/rendering/cartoon/applyCartoonRenderPreset.d.ts +79 -0
  428. package/dist/rendering/cartoon/applyCartoonRenderPreset.d.ts.map +1 -0
  429. package/dist/rendering/cartoon/applyCartoonRenderPreset.js +88 -0
  430. package/dist/rendering/cartoon/applyCartoonRenderPreset.js.map +1 -0
  431. package/dist/rendering/cartoon/index.d.ts +6 -0
  432. package/dist/rendering/cartoon/index.d.ts.map +1 -0
  433. package/dist/rendering/cartoon/index.js +6 -0
  434. package/dist/rendering/cartoon/index.js.map +1 -0
  435. package/dist/rendering/index.d.ts +26 -15
  436. package/dist/rendering/index.d.ts.map +1 -1
  437. package/dist/rendering/index.js +15 -9
  438. package/dist/rendering/index.js.map +1 -1
  439. package/dist/rendering/postprocess/NativeLdrEffectLuts.d.ts +93 -0
  440. package/dist/rendering/postprocess/NativeLdrEffectLuts.d.ts.map +1 -0
  441. package/dist/rendering/postprocess/NativeLdrEffectLuts.js +202 -0
  442. package/dist/rendering/postprocess/NativeLdrEffectLuts.js.map +1 -0
  443. package/dist/rendering/production-runtime/PBRHDRPipeline.d.ts.map +1 -1
  444. package/dist/rendering/production-runtime/PBRHDRPipeline.js +3 -0
  445. package/dist/rendering/production-runtime/PBRHDRPipeline.js.map +1 -1
  446. package/dist/rendering/production-runtime/ProductionRendererTypes.d.ts +1 -0
  447. package/dist/rendering/production-runtime/ProductionRendererTypes.d.ts.map +1 -1
  448. package/dist/rendering/production-runtime/ProductionRendererTypes.js.map +1 -1
  449. package/dist/rendering/production-runtime/ProductionWebGL2Renderer.d.ts.map +1 -1
  450. package/dist/rendering/production-runtime/ProductionWebGL2Renderer.js +5 -3
  451. package/dist/rendering/production-runtime/ProductionWebGL2Renderer.js.map +1 -1
  452. package/dist/rendering/production-runtime/ProductionWebGPURenderer.d.ts.map +1 -1
  453. package/dist/rendering/production-runtime/ProductionWebGPURenderer.js +9 -5
  454. package/dist/rendering/production-runtime/ProductionWebGPURenderer.js.map +1 -1
  455. package/dist/rendering/production-runtime/TransmissionBackdropCapture.d.ts +5 -0
  456. package/dist/rendering/production-runtime/TransmissionBackdropCapture.d.ts.map +1 -1
  457. package/dist/rendering/production-runtime/TransmissionBackdropCapture.js +40 -0
  458. package/dist/rendering/production-runtime/TransmissionBackdropCapture.js.map +1 -1
  459. package/dist/rendering/production-runtime/environment/HDRLoader.d.ts +6 -0
  460. package/dist/rendering/production-runtime/environment/HDRLoader.d.ts.map +1 -1
  461. package/dist/rendering/production-runtime/environment/HDRLoader.js +19 -0
  462. package/dist/rendering/production-runtime/environment/HDRLoader.js.map +1 -1
  463. package/dist/rendering/production-runtime/index.d.ts +3 -1
  464. package/dist/rendering/production-runtime/index.d.ts.map +1 -1
  465. package/dist/rendering/production-runtime/index.js +1 -0
  466. package/dist/rendering/production-runtime/index.js.map +1 -1
  467. package/dist/scene/Light.d.ts +1 -1
  468. package/dist/scene/Light.d.ts.map +1 -1
  469. package/dist/scene/RectAreaLight.d.ts +22 -0
  470. package/dist/scene/RectAreaLight.d.ts.map +1 -0
  471. package/dist/scene/RectAreaLight.js +46 -0
  472. package/dist/scene/RectAreaLight.js.map +1 -0
  473. package/dist/scene/Scene.d.ts +6 -1
  474. package/dist/scene/Scene.d.ts.map +1 -1
  475. package/dist/scene/Scene.js +8 -1
  476. package/dist/scene/Scene.js.map +1 -1
  477. package/dist/scene/SceneSerializer.d.ts +3 -1
  478. package/dist/scene/SceneSerializer.d.ts.map +1 -1
  479. package/dist/scene/SceneSerializer.js +14 -7
  480. package/dist/scene/SceneSerializer.js.map +1 -1
  481. package/dist/scene/index.d.ts +1 -0
  482. package/dist/scene/index.d.ts.map +1 -1
  483. package/dist/scene/index.js +1 -0
  484. package/dist/scene/index.js.map +1 -1
  485. package/dist/scripting/CartoonNodeCategories.d.ts +3 -0
  486. package/dist/scripting/CartoonNodeCategories.d.ts.map +1 -0
  487. package/dist/scripting/CartoonNodeCategories.js +9 -0
  488. package/dist/scripting/CartoonNodeCategories.js.map +1 -0
  489. package/dist/scripting/CartoonVisualNodes.d.ts +3 -0
  490. package/dist/scripting/CartoonVisualNodes.d.ts.map +1 -0
  491. package/dist/scripting/CartoonVisualNodes.js +41 -0
  492. package/dist/scripting/CartoonVisualNodes.js.map +1 -0
  493. package/package.json +131 -114
  494. package/templates/production-asset-inspector/README.md +5 -0
  495. package/templates/production-asset-inspector/asset-manifest.json +9 -0
  496. package/templates/production-asset-inspector/index.html +2 -0
  497. package/templates/production-asset-inspector/package.json +17 -0
  498. package/templates/production-asset-inspector/src/main.ts +16 -0
  499. package/templates/production-material-studio/README.md +5 -0
  500. package/templates/production-material-studio/asset-manifest.json +9 -0
  501. package/templates/production-material-studio/index.html +2 -0
  502. package/templates/production-material-studio/package.json +17 -0
  503. package/templates/production-material-studio/src/main.ts +16 -0
  504. package/templates/production-product-configurator/README.md +5 -0
  505. package/templates/production-product-configurator/asset-manifest.json +9 -0
  506. package/templates/production-product-configurator/index.html +2 -0
  507. package/templates/production-product-configurator/package.json +17 -0
  508. package/templates/production-product-configurator/src/main.ts +16 -0
  509. package/templates/production-product-viewer/README.md +7 -0
  510. package/templates/production-product-viewer/asset-manifest.json +8 -0
  511. package/templates/production-product-viewer/index.html +26 -0
  512. package/templates/production-product-viewer/package.json +17 -0
  513. package/templates/production-product-viewer/src/main.ts +70 -0
@@ -0,0 +1,221 @@
1
+ /**
2
+ * Reusable scene queries: raycasts, shape casts and ground probes.
3
+ *
4
+ * ## Why this exists
5
+ *
6
+ * The physics audit (`tests/reports/aura3d-physics-audit.json`) classified raycasts, shape
7
+ * casts, penetration resolution, friction, restitution, constraints and continuous
8
+ * collision detection as **unused**: implemented in `@aura3d/physics`, covered by its own
9
+ * suites, and unreachable from the public agent API. A route needing to answer "what is
10
+ * under this point" therefore had two options -- reach into a package's internals, or write
11
+ * the query by hand. Both are the same defect class as the hardcoded contact planes this
12
+ * remediation removed.
13
+ *
14
+ * `PhysicsWorld` already implements `raycast`, `raycastAll`, `sphereCast` and
15
+ * `sphereCastAll`. This module is the public surface over them, plus the pure
16
+ * scene-geometry queries a route usually actually wants: a downward ground probe, and a
17
+ * query against declarative scene nodes rather than a constructed physics world.
18
+ *
19
+ * The pure paths are dependency-free and unit-testable; the physics-backed path adapts a
20
+ * `PhysicsWorld` when a route has one.
21
+ */
22
+ import { placedBounds } from "./SpatialAnchoring.js";
23
+ /**
24
+ * Reduce declarative scene nodes to query targets.
25
+ *
26
+ * Only nodes with a resolvable position and scale participate. A model's bounds are its
27
+ * node scale, which is a conservative approximation: the caller is told so by
28
+ * {@link SceneQueryTarget}'s documentation rather than discovering it from a wrong result.
29
+ */
30
+ export function sceneQueryTargets(nodes) {
31
+ const targets = [];
32
+ for (const node of nodes) {
33
+ if (node.kind !== "primitive" && node.kind !== "model")
34
+ continue;
35
+ const positioned = node;
36
+ const position = positioned.position;
37
+ if (!position)
38
+ continue;
39
+ const scale = positioned.scale;
40
+ const size = scale === undefined
41
+ ? [1, 1, 1]
42
+ : typeof scale === "number"
43
+ ? [scale, scale, scale]
44
+ : [scale[0], scale[1], scale[2]];
45
+ targets.push({
46
+ nodeName: node.name,
47
+ // Primitive nodes are centred on their position, so the placed bounds' floor is half
48
+ // a height below it.
49
+ bounds: placedBounds({
50
+ position: [position[0], position[1] - size[1] / 2, position[2]],
51
+ size,
52
+ floorY: position[1] - size[1] / 2
53
+ })
54
+ });
55
+ }
56
+ return targets;
57
+ }
58
+ /**
59
+ * Cast a ray against query targets, returning the nearest hit.
60
+ *
61
+ * Slab-method AABB intersection: exact for axis-aligned boxes and correct for the
62
+ * conservative bounds of other node kinds.
63
+ */
64
+ export function raycastSceneTargets(targets, ray) {
65
+ return raycastSceneTargetsAll(targets, ray)[0];
66
+ }
67
+ /** Every hit along a ray, nearest first. */
68
+ export function raycastSceneTargetsAll(targets, ray) {
69
+ const direction = normalize(ray.direction);
70
+ if (direction === undefined)
71
+ return [];
72
+ const maxDistance = ray.maxDistance ?? Number.POSITIVE_INFINITY;
73
+ const hits = [];
74
+ for (const target of targets) {
75
+ const hit = intersectAabb(ray.origin, direction, target.bounds, maxDistance);
76
+ if (!hit)
77
+ continue;
78
+ hits.push({ nodeName: target.nodeName, point: hit.point, normal: hit.normal, distance: hit.distance });
79
+ }
80
+ return hits.sort((a, b) => a.distance - b.distance);
81
+ }
82
+ /**
83
+ * Downward ground probe.
84
+ *
85
+ * The query a route asks most often, and the one that was previously answered by a frozen
86
+ * constant. Returns the surface height under a point, or `undefined` when nothing is below
87
+ * it -- which is a meaningful answer, not a reason to substitute zero.
88
+ */
89
+ export function groundProbe(targets, x, z, options = {}) {
90
+ const fromHeight = options.fromHeight ?? 1e4;
91
+ const hit = raycastSceneTargets(targets, {
92
+ origin: [x, fromHeight, z],
93
+ direction: [0, -1, 0],
94
+ maxDistance: options.maxDistance ?? Number.POSITIVE_INFINITY
95
+ });
96
+ if (!hit)
97
+ return undefined;
98
+ return { height: hit.point[1], normal: hit.normal, nodeName: hit.nodeName };
99
+ }
100
+ /**
101
+ * Sphere cast against query targets.
102
+ *
103
+ * Implemented by inflating each target's bounds by the sphere radius, which is the standard
104
+ * conservative reduction of a sphere sweep to a ray test. Corners are therefore treated as
105
+ * rounded by radius rather than exactly; that over-reports contact slightly near an edge and
106
+ * never under-reports, which is the safe direction for a clearance query.
107
+ */
108
+ export function sphereCastSceneTargets(targets, ray, radius) {
109
+ const inflated = targets.map((target) => ({
110
+ nodeName: target.nodeName,
111
+ bounds: inflateBounds(target.bounds, Math.max(0, radius))
112
+ }));
113
+ return raycastSceneTargets(inflated, ray);
114
+ }
115
+ /**
116
+ * Public raycast against a physics world.
117
+ *
118
+ * The adapter that makes `PhysicsWorld.raycast` reachable without a route importing
119
+ * `@aura3d/physics` directly. Returns the same {@link SceneQueryHit} shape as the pure
120
+ * paths, so a route can move between them without changing its call sites.
121
+ */
122
+ export function raycastPhysicsWorld(world, ray) {
123
+ const direction = normalize(ray.direction);
124
+ if (direction === undefined)
125
+ return undefined;
126
+ const hit = world.raycast(ray.origin, direction, ray.maxDistance === undefined ? {} : { maxDistance: ray.maxDistance });
127
+ if (!hit)
128
+ return undefined;
129
+ return {
130
+ // A physics hit identifies a collider by id; the caller maps that to a name if it needs one.
131
+ nodeName: `collider-${hit.colliderId}`,
132
+ point: [hit.point[0], hit.point[1], hit.point[2]],
133
+ normal: [hit.normal[0], hit.normal[1], hit.normal[2]],
134
+ distance: hit.distance
135
+ };
136
+ }
137
+ /** Public sphere cast against a physics world, when the world supports one. */
138
+ export function sphereCastPhysicsWorld(world, ray, radius) {
139
+ if (!world.sphereCast)
140
+ return undefined;
141
+ const direction = normalize(ray.direction);
142
+ if (direction === undefined)
143
+ return undefined;
144
+ const hit = world.sphereCast(ray.origin, radius, direction, ray.maxDistance === undefined ? {} : { maxDistance: ray.maxDistance });
145
+ if (!hit)
146
+ return undefined;
147
+ return {
148
+ nodeName: undefined,
149
+ point: [hit.point[0], hit.point[1], hit.point[2]],
150
+ normal: [hit.normal[0], hit.normal[1], hit.normal[2]],
151
+ distance: hit.distance
152
+ };
153
+ }
154
+ function inflateBounds(bounds, amount) {
155
+ return {
156
+ min: [bounds.min[0] - amount, bounds.min[1] - amount, bounds.min[2] - amount],
157
+ max: [bounds.max[0] + amount, bounds.max[1] + amount, bounds.max[2] + amount],
158
+ center: bounds.center,
159
+ size: [bounds.size[0] + amount * 2, bounds.size[1] + amount * 2, bounds.size[2] + amount * 2],
160
+ floorY: bounds.floorY - amount
161
+ };
162
+ }
163
+ /** Slab-method ray/AABB intersection. Returns the entry point and its face normal. */
164
+ function intersectAabb(origin, direction, bounds, maxDistance) {
165
+ let tMin = 0;
166
+ let tMax = maxDistance;
167
+ let hitAxis = 0;
168
+ let hitSign = 1;
169
+ const min = bounds.min;
170
+ const max = bounds.max;
171
+ for (let axis = 0; axis < 3; axis += 1) {
172
+ const o = origin[axis];
173
+ const d = direction[axis];
174
+ if (Math.abs(d) < 1e-12) {
175
+ // Ray is parallel to this slab: it must already be inside it.
176
+ if (o < min[axis] || o > max[axis])
177
+ return undefined;
178
+ continue;
179
+ }
180
+ const inverse = 1 / d;
181
+ let near = (min[axis] - o) * inverse;
182
+ let far = (max[axis] - o) * inverse;
183
+ let sign = -1;
184
+ if (near > far) {
185
+ const swap = near;
186
+ near = far;
187
+ far = swap;
188
+ sign = 1;
189
+ }
190
+ if (near > tMin) {
191
+ tMin = near;
192
+ hitAxis = axis;
193
+ hitSign = sign;
194
+ }
195
+ if (far < tMax)
196
+ tMax = far;
197
+ if (tMin > tMax)
198
+ return undefined;
199
+ }
200
+ if (tMin > maxDistance)
201
+ return undefined;
202
+ const normal = [0, 0, 0];
203
+ const mutable = normal;
204
+ mutable[hitAxis] = hitSign;
205
+ return {
206
+ point: [
207
+ origin[0] + direction[0] * tMin,
208
+ origin[1] + direction[1] * tMin,
209
+ origin[2] + direction[2] * tMin
210
+ ],
211
+ normal,
212
+ distance: tMin
213
+ };
214
+ }
215
+ function normalize(vector) {
216
+ const length = Math.hypot(vector[0], vector[1], vector[2]);
217
+ if (!(length > 0) || !Number.isFinite(length))
218
+ return undefined;
219
+ return [vector[0] / length, vector[1] / length, vector[2] / length];
220
+ }
221
+ //# sourceMappingURL=SceneQueries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SceneQueries.js","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/SceneQueries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,232 @@
1
+ /**
2
+ * Asset-relative spatial layout and semantic anchoring.
3
+ *
4
+ * ## Why this exists
5
+ *
6
+ * Public routes placed helper geometry -- status markers, control stations,
7
+ * selection rings, callout panels, staging props -- at literal world
8
+ * coordinates chosen by eye against whatever asset was loaded that week. When
9
+ * the asset changed, or its bounds changed, the coordinates did not. The
10
+ * visible result is procedural boxes floating beside the scene rather than
11
+ * attached to the equipment they annotate.
12
+ *
13
+ * `CAR_SCENE_HEIGHT` was the same defect in a single constant: a value correct
14
+ * for one asset, frozen, then wrong. This module removes the reason to write
15
+ * such a constant. A route states intent -- "above this machine", "beside the
16
+ * workcell", "on the floor in front of the product" -- and reads back a world
17
+ * position derived from the asset's own placed bounds.
18
+ *
19
+ * Everything here is pure: no renderer, no asset loading, no DOM. Anchors are
20
+ * resolved from {@link PlacedBounds}, which a route obtains from typed asset
21
+ * bounds plus its intended scale via {@link placedBoundsFromAsset}.
22
+ */
23
+ import { type SceneAssetLike, type SceneBounds, type Vec3 } from "./SceneGroundingUtils.js";
24
+ /**
25
+ * Bounds of an asset as it actually sits in the scene.
26
+ *
27
+ * Distinct from {@link SceneBounds}, which is in raw asset-local units. Anchors
28
+ * must resolve against placed bounds or they reproduce the defect they exist to
29
+ * prevent: a correct-looking offset in local units lands in the wrong place
30
+ * once the renderer normalizes and scales the model.
31
+ */
32
+ export interface PlacedBounds {
33
+ readonly min: Vec3;
34
+ readonly max: Vec3;
35
+ readonly center: Vec3;
36
+ readonly size: Vec3;
37
+ /** Y of the surface the subject rests on. */
38
+ readonly floorY: number;
39
+ }
40
+ /** Faces and corners of a placed bounding volume. */
41
+ export type BoundsAnchor = "center" | "top" | "bottom" | "front" | "rear" | "left" | "right" | "top-front" | "top-rear" | "top-left" | "top-right" | "floor-front" | "floor-rear" | "floor-left" | "floor-right" | "corner-front-left" | "corner-front-right" | "corner-rear-left" | "corner-rear-right";
42
+ export interface AnchorOptions {
43
+ /**
44
+ * Distance to push the anchor outward along its own face normal, in world
45
+ * units. Positive moves away from the subject.
46
+ */
47
+ readonly offset?: number | undefined;
48
+ /**
49
+ * Additional world-space nudge applied after the face offset. Reserved for
50
+ * genuine art direction; it is not a place to reintroduce asset-specific
51
+ * corrections.
52
+ */
53
+ readonly worldOffset?: Vec3 | undefined;
54
+ /**
55
+ * Keep the anchor at floor level regardless of the face chosen. Used for
56
+ * ground-standing props beside an asset.
57
+ */
58
+ readonly onFloor?: boolean | undefined;
59
+ }
60
+ export interface ResolvedAnchor {
61
+ readonly position: Vec3;
62
+ /** Outward normal of the face the anchor was taken from. */
63
+ readonly normal: Vec3;
64
+ readonly anchor: BoundsAnchor;
65
+ /** True when the anchor lies outside the subject's placed bounds. */
66
+ readonly outsideBounds: boolean;
67
+ }
68
+ /**
69
+ * Build placed bounds from a subject's world position, size and floor.
70
+ *
71
+ * `position` is the subject's floor contact point, matching how Aura3D's safe
72
+ * model renderer grounds a normalized model on its node origin.
73
+ */
74
+ export declare function placedBounds(options: {
75
+ readonly position: Vec3;
76
+ readonly size: Vec3;
77
+ readonly floorY?: number | undefined;
78
+ }): PlacedBounds;
79
+ /**
80
+ * Placed bounds for a typed asset rendered with `model(asset)`.
81
+ *
82
+ * Mirrors the safe renderer: the asset is normalized to
83
+ * `normalizedMaxDimension`, multiplied by node scale, and grounded so its
84
+ * lowest point rests on `floorY`. A route therefore never needs the asset's raw
85
+ * dimensions to place something relative to it.
86
+ */
87
+ export declare function placedBoundsFromAsset(asset: SceneAssetLike, options: {
88
+ readonly position?: Vec3 | undefined;
89
+ /** `targetMaxDimension` passed to `model(asset)`, in world units. */
90
+ readonly targetMaxDimension: number;
91
+ readonly floorY?: number | undefined;
92
+ }): PlacedBounds;
93
+ /** Placed bounds for a raw {@link SceneBounds} already expressed in world units. */
94
+ export declare function placedBoundsFromWorldBounds(bounds: SceneBounds): PlacedBounds;
95
+ /**
96
+ * Resolve a world position on or beside a subject's placed bounds.
97
+ *
98
+ * The returned position is on the named face at `offset` distance outward. This
99
+ * is the replacement for literal helper coordinates: it tracks the asset.
100
+ */
101
+ export declare function resolveBoundsAnchor(bounds: PlacedBounds, anchor: BoundsAnchor, options?: AnchorOptions): ResolvedAnchor;
102
+ /** True when a world point lies inside the placed bounds (inclusive). */
103
+ export declare function containsPoint(bounds: PlacedBounds, point: Vec3, epsilon?: number): boolean;
104
+ /**
105
+ * A named region inside a subject, expressed in normalized bounds space.
106
+ *
107
+ * This is how a route addresses "the assembly zone" or "the earcups" without
108
+ * hardcoding world coordinates. `u`/`v`/`w` run 0..1 across the subject's X/Y/Z
109
+ * extents, so the region follows the asset when its size or placement changes.
110
+ */
111
+ export interface SemanticRegion {
112
+ readonly id: string;
113
+ readonly label?: string | undefined;
114
+ /** Normalized centre within the subject's bounds, each component 0..1. */
115
+ readonly u: number;
116
+ readonly v: number;
117
+ readonly w: number;
118
+ /** Normalized extents of the region, each component 0..1. Defaults to a point. */
119
+ readonly extent?: readonly [number, number, number] | undefined;
120
+ }
121
+ export interface ResolvedSemanticRegion {
122
+ readonly id: string;
123
+ readonly label: string | undefined;
124
+ readonly center: Vec3;
125
+ readonly size: Vec3;
126
+ readonly min: Vec3;
127
+ readonly max: Vec3;
128
+ }
129
+ /** Resolve a normalized semantic region to world-space bounds on the subject. */
130
+ export declare function resolveSemanticRegion(bounds: PlacedBounds, region: SemanticRegion): ResolvedSemanticRegion;
131
+ export interface DistributionOptions {
132
+ /** How many items to place. */
133
+ readonly count: number;
134
+ /** Minimum world-space gap between adjacent items. */
135
+ readonly minSpacing?: number | undefined;
136
+ /** Deterministic seed. Distribution is fully determined by this value. */
137
+ readonly seed?: number | undefined;
138
+ /** Keep every item on the floor plane. */
139
+ readonly onFloor?: boolean | undefined;
140
+ /** Jitter as a fraction of available spacing, 0..1. Defaults to 0 (exact grid). */
141
+ readonly jitter?: number | undefined;
142
+ }
143
+ export interface DistributedPlacement {
144
+ readonly index: number;
145
+ readonly position: Vec3;
146
+ /** Distance to the nearest other placement. */
147
+ readonly nearestNeighborDistance: number;
148
+ }
149
+ /**
150
+ * Distribute items evenly across a region, honouring a minimum spacing.
151
+ *
152
+ * Deterministic for a given seed so gameplay and evidence are reproducible.
153
+ * Used instead of `-0.45 + index * 0.17` style literals, which encode both the
154
+ * region and its spacing into one unexplained pair of numbers.
155
+ */
156
+ export declare function distributeInRegion(region: {
157
+ readonly min: Vec3;
158
+ readonly max: Vec3;
159
+ }, options: DistributionOptions): readonly DistributedPlacement[];
160
+ /** Minimum-spacing check for a set of placements. */
161
+ export declare function validateSpacing(placements: readonly DistributedPlacement[], minSpacing: number): {
162
+ readonly ok: boolean;
163
+ readonly violations: readonly {
164
+ readonly index: number;
165
+ readonly distance: number;
166
+ }[];
167
+ };
168
+ export interface RadialPlacementOptions {
169
+ readonly count: number;
170
+ /** Radius measured from the subject's bounds, not from the origin. */
171
+ readonly radius: number;
172
+ /** Starting angle in radians. Defaults to 0. */
173
+ readonly startAngle?: number | undefined;
174
+ /** Height above the floor. Defaults to the subject's vertical centre. */
175
+ readonly height?: number | undefined;
176
+ /** Sweep in radians. Defaults to a full circle. */
177
+ readonly sweep?: number | undefined;
178
+ }
179
+ /**
180
+ * Place items on a circle around a subject.
181
+ *
182
+ * The radius is added to the subject's own horizontal half-extent, so a ring of
183
+ * markers stays clear of the asset regardless of how large the asset is.
184
+ */
185
+ export declare function distributeAroundBounds(bounds: PlacedBounds, options: RadialPlacementOptions): readonly DistributedPlacement[];
186
+ /**
187
+ * Spatial invariant report for a set of helper placements.
188
+ *
189
+ * This is the machine-checkable form of "no floating procedural props". A route
190
+ * publishes it; a gate asserts on it. It replaces judging placement by eye or
191
+ * by counting coloured pixels.
192
+ */
193
+ export interface SpatialInvariantReport {
194
+ readonly schema: "aura3d-spatial-invariants/1.0";
195
+ readonly subjectBounds: PlacedBounds;
196
+ readonly checks: readonly {
197
+ readonly id: string;
198
+ readonly description: string;
199
+ readonly passes: boolean;
200
+ readonly detail: string;
201
+ }[];
202
+ readonly passes: boolean;
203
+ }
204
+ export interface HelperPlacementClaim {
205
+ readonly id: string;
206
+ readonly position: Vec3;
207
+ /**
208
+ * Where this element is meant to sit relative to the subject.
209
+ * `inside` -- within the subject's bounds (a selection ring on a part)
210
+ * `surface` -- on a bounds face, within one tolerance of it
211
+ * `outside` -- deliberately beside the subject (a control station, a panel)
212
+ */
213
+ readonly relation: "inside" | "surface" | "outside";
214
+ /** Maximum world distance from the subject's bounds for `outside` elements. */
215
+ readonly maxDistance?: number | undefined;
216
+ }
217
+ /**
218
+ * Verify that helper geometry is anchored to its subject.
219
+ *
220
+ * `outside` elements must remain within `maxDistance` of the bounds: that is
221
+ * what separates "a control station beside the workcell" from "a box floating in
222
+ * the void". The default of 2x the subject's largest extent is generous enough
223
+ * for staging and tight enough to catch the digital-twin defect class.
224
+ */
225
+ export declare function checkSpatialInvariants(bounds: PlacedBounds, claims: readonly HelperPlacementClaim[], options?: {
226
+ readonly surfaceTolerance?: number | undefined;
227
+ }): SpatialInvariantReport;
228
+ /** Shortest distance from a point to the bounds surface (0 when on it). */
229
+ export declare function distanceToBoundsSurface(bounds: PlacedBounds, point: Vec3): number;
230
+ /** Distance from a point to the bounds volume; 0 when inside. */
231
+ export declare function distanceOutsideBounds(bounds: PlacedBounds, point: Vec3): number;
232
+ //# sourceMappingURL=SpatialAnchoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpatialAnchoring.d.ts","sourceRoot":"","sources":["../../../../../packages/engine/src/agent-api/SpatialAnchoring.ts"],"names":[],"mappings":"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"}