@iwsdk/core 0.1.0
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/LICENSE +21 -0
- package/dist/asset/asset-manager.d.ts +72 -0
- package/dist/asset/asset-manager.d.ts.map +1 -0
- package/dist/asset/asset-manager.js +138 -0
- package/dist/asset/asset-manager.js.map +1 -0
- package/dist/asset/cache-manager.d.ts +44 -0
- package/dist/asset/cache-manager.d.ts.map +1 -0
- package/dist/asset/cache-manager.js +80 -0
- package/dist/asset/cache-manager.js.map +1 -0
- package/dist/asset/index.d.ts +9 -0
- package/dist/asset/index.d.ts.map +1 -0
- package/dist/asset/loaders/audio-loader.d.ts +21 -0
- package/dist/asset/loaders/audio-loader.d.ts.map +1 -0
- package/dist/asset/loaders/audio-loader.js +57 -0
- package/dist/asset/loaders/audio-loader.js.map +1 -0
- package/dist/asset/loaders/gltf-loader.d.ts +33 -0
- package/dist/asset/loaders/gltf-loader.d.ts.map +1 -0
- package/dist/asset/loaders/gltf-loader.js +79 -0
- package/dist/asset/loaders/gltf-loader.js.map +1 -0
- package/dist/asset/loaders/hdr-texture-loader.d.ts +18 -0
- package/dist/asset/loaders/hdr-texture-loader.d.ts.map +1 -0
- package/dist/asset/loaders/hdr-texture-loader.js +65 -0
- package/dist/asset/loaders/hdr-texture-loader.js.map +1 -0
- package/dist/asset/loaders/texture-loader.d.ts +21 -0
- package/dist/asset/loaders/texture-loader.d.ts.map +1 -0
- package/dist/asset/loaders/texture-loader.js +57 -0
- package/dist/asset/loaders/texture-loader.js.map +1 -0
- package/dist/audio/audio-pool.d.ts +59 -0
- package/dist/audio/audio-pool.d.ts.map +1 -0
- package/dist/audio/audio-pool.js +105 -0
- package/dist/audio/audio-pool.js.map +1 -0
- package/dist/audio/audio-system.d.ts +326 -0
- package/dist/audio/audio-system.d.ts.map +1 -0
- package/dist/audio/audio-system.js +478 -0
- package/dist/audio/audio-system.js.map +1 -0
- package/dist/audio/audio-utils.d.ts +71 -0
- package/dist/audio/audio-utils.d.ts.map +1 -0
- package/dist/audio/audio-utils.js +145 -0
- package/dist/audio/audio-utils.js.map +1 -0
- package/dist/audio/audio.d.ts +178 -0
- package/dist/audio/audio.d.ts.map +1 -0
- package/dist/audio/audio.js +104 -0
- package/dist/audio/audio.js.map +1 -0
- package/dist/audio/index.d.ts +11 -0
- package/dist/audio/index.d.ts.map +1 -0
- package/dist/ecs/component-registry.d.ts +54 -0
- package/dist/ecs/component-registry.d.ts.map +1 -0
- package/dist/ecs/component-registry.js +86 -0
- package/dist/ecs/component-registry.js.map +1 -0
- package/dist/ecs/component.d.ts +12 -0
- package/dist/ecs/component.d.ts.map +1 -0
- package/dist/ecs/entity.d.ts +17 -0
- package/dist/ecs/entity.d.ts.map +1 -0
- package/dist/ecs/entity.js +13 -0
- package/dist/ecs/entity.js.map +1 -0
- package/dist/ecs/index.d.ts +12 -0
- package/dist/ecs/index.d.ts.map +1 -0
- package/dist/ecs/system.d.ts +70 -0
- package/dist/ecs/system.d.ts.map +1 -0
- package/dist/ecs/system.js +79 -0
- package/dist/ecs/system.js.map +1 -0
- package/dist/ecs/world.d.ts +101 -0
- package/dist/ecs/world.d.ts.map +1 -0
- package/dist/ecs/world.js +165 -0
- package/dist/ecs/world.js.map +1 -0
- package/dist/environment/dome-gradient.d.ts +39 -0
- package/dist/environment/dome-gradient.d.ts.map +1 -0
- package/dist/environment/dome-gradient.js +30 -0
- package/dist/environment/dome-gradient.js.map +1 -0
- package/dist/environment/dome-texture.d.ts +39 -0
- package/dist/environment/dome-texture.d.ts.map +1 -0
- package/dist/environment/dome-texture.js +30 -0
- package/dist/environment/dome-texture.js.map +1 -0
- package/dist/environment/environment-system.d.ts +82 -0
- package/dist/environment/environment-system.d.ts.map +1 -0
- package/dist/environment/environment-system.js +389 -0
- package/dist/environment/environment-system.js.map +1 -0
- package/dist/environment/gradient-environment.d.ts +37 -0
- package/dist/environment/gradient-environment.d.ts.map +1 -0
- package/dist/environment/gradient-environment.js +99 -0
- package/dist/environment/gradient-environment.js.map +1 -0
- package/dist/environment/ibl-gradient.d.ts +38 -0
- package/dist/environment/ibl-gradient.d.ts.map +1 -0
- package/dist/environment/ibl-gradient.js +29 -0
- package/dist/environment/ibl-gradient.js.map +1 -0
- package/dist/environment/ibl-texture.d.ts +36 -0
- package/dist/environment/ibl-texture.d.ts.map +1 -0
- package/dist/environment/ibl-texture.js +30 -0
- package/dist/environment/ibl-texture.js.map +1 -0
- package/dist/environment/index.d.ts +12 -0
- package/dist/environment/index.d.ts.map +1 -0
- package/dist/grab/distance-grabbable.d.ts +115 -0
- package/dist/grab/distance-grabbable.d.ts.map +1 -0
- package/dist/grab/distance-grabbable.js +102 -0
- package/dist/grab/distance-grabbable.js.map +1 -0
- package/dist/grab/grab-system.d.ts +320 -0
- package/dist/grab/grab-system.d.ts.map +1 -0
- package/dist/grab/grab-system.js +239 -0
- package/dist/grab/grab-system.js.map +1 -0
- package/dist/grab/handles.d.ts +43 -0
- package/dist/grab/handles.d.ts.map +1 -0
- package/dist/grab/handles.js +132 -0
- package/dist/grab/handles.js.map +1 -0
- package/dist/grab/index.d.ts +13 -0
- package/dist/grab/index.d.ts.map +1 -0
- package/dist/grab/index.js +23 -0
- package/dist/grab/index.js.map +1 -0
- package/dist/grab/one-hand-grabbable.d.ts +80 -0
- package/dist/grab/one-hand-grabbable.d.ts.map +1 -0
- package/dist/grab/one-hand-grabbable.js +80 -0
- package/dist/grab/one-hand-grabbable.js.map +1 -0
- package/dist/grab/pointer-events-patch.d.ts +16 -0
- package/dist/grab/pointer-events-patch.d.ts.map +1 -0
- package/dist/grab/pointer-events-patch.js +223 -0
- package/dist/grab/pointer-events-patch.js.map +1 -0
- package/dist/grab/two-hands-grabbable.d.ts +103 -0
- package/dist/grab/two-hands-grabbable.d.ts.map +1 -0
- package/dist/grab/two-hands-grabbable.js +100 -0
- package/dist/grab/two-hands-grabbable.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +82 -0
- package/dist/index.js.map +1 -0
- package/dist/init/index.d.ts +9 -0
- package/dist/init/index.d.ts.map +1 -0
- package/dist/init/world-initializer.d.ts +76 -0
- package/dist/init/world-initializer.d.ts.map +1 -0
- package/dist/init/world-initializer.js +403 -0
- package/dist/init/world-initializer.js.map +1 -0
- package/dist/init/xr.d.ts +87 -0
- package/dist/init/xr.d.ts.map +1 -0
- package/dist/init/xr.js +193 -0
- package/dist/init/xr.js.map +1 -0
- package/dist/input/index.d.ts +9 -0
- package/dist/input/index.d.ts.map +1 -0
- package/dist/input/input-system.d.ts +52 -0
- package/dist/input/input-system.d.ts.map +1 -0
- package/dist/input/input-system.js +176 -0
- package/dist/input/input-system.js.map +1 -0
- package/dist/input/state-tags.d.ts +56 -0
- package/dist/input/state-tags.d.ts.map +1 -0
- package/dist/input/state-tags.js +63 -0
- package/dist/input/state-tags.js.map +1 -0
- package/dist/level/index.d.ts +12 -0
- package/dist/level/index.d.ts.map +1 -0
- package/dist/level/level-entity-creator.d.ts +27 -0
- package/dist/level/level-entity-creator.d.ts.map +1 -0
- package/dist/level/level-entity-creator.js +110 -0
- package/dist/level/level-entity-creator.js.map +1 -0
- package/dist/level/level-glxf-importer.d.ts +22 -0
- package/dist/level/level-glxf-importer.d.ts.map +1 -0
- package/dist/level/level-glxf-importer.js +40 -0
- package/dist/level/level-glxf-importer.js.map +1 -0
- package/dist/level/level-root.d.ts +18 -0
- package/dist/level/level-root.d.ts.map +1 -0
- package/dist/level/level-root.js +25 -0
- package/dist/level/level-root.js.map +1 -0
- package/dist/level/level-system.d.ts +54 -0
- package/dist/level/level-system.d.ts.map +1 -0
- package/dist/level/level-system.js +134 -0
- package/dist/level/level-system.js.map +1 -0
- package/dist/level/level-tag.d.ts +25 -0
- package/dist/level/level-tag.d.ts.map +1 -0
- package/dist/level/level-tag.js +28 -0
- package/dist/level/level-tag.js.map +1 -0
- package/dist/locomotion/geometries/beveled-cylinder.d.ts +12 -0
- package/dist/locomotion/geometries/beveled-cylinder.d.ts.map +1 -0
- package/dist/locomotion/geometries/beveled-cylinder.js +64 -0
- package/dist/locomotion/geometries/beveled-cylinder.js.map +1 -0
- package/dist/locomotion/index.d.ts +11 -0
- package/dist/locomotion/index.d.ts.map +1 -0
- package/dist/locomotion/locomotion.d.ts +239 -0
- package/dist/locomotion/locomotion.d.ts.map +1 -0
- package/dist/locomotion/locomotion.js +256 -0
- package/dist/locomotion/locomotion.js.map +1 -0
- package/dist/locomotion/materials/line.d.ts +24 -0
- package/dist/locomotion/materials/line.d.ts.map +1 -0
- package/dist/locomotion/materials/line.js +307 -0
- package/dist/locomotion/materials/line.js.map +1 -0
- package/dist/locomotion/slide.d.ts +76 -0
- package/dist/locomotion/slide.d.ts.map +1 -0
- package/dist/locomotion/slide.js +131 -0
- package/dist/locomotion/slide.js.map +1 -0
- package/dist/locomotion/teleport.d.ts +68 -0
- package/dist/locomotion/teleport.d.ts.map +1 -0
- package/dist/locomotion/teleport.js +150 -0
- package/dist/locomotion/teleport.js.map +1 -0
- package/dist/locomotion/turn.d.ts +77 -0
- package/dist/locomotion/turn.d.ts.map +1 -0
- package/dist/locomotion/turn.js +126 -0
- package/dist/locomotion/turn.js.map +1 -0
- package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/index.js +13 -0
- package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/index.js.map +1 -0
- package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/interpreter/index.js +154 -0
- package/dist/node_modules/.pnpm/@pmndrs_uikitml@0.0.10_@pmndrs_uikit@1.0.32_super-three@0.177.0_/node_modules/@pmndrs/uikitml/dist/interpreter/index.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.js +66 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/error-codes.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.js +162 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/foreign-content.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.js +519 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/html.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.js +15 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/token.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/unicode.js +32 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/common/unicode.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.js +10 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/formatting-element-list.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.js +41 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/index.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.js +35 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/parser/open-element-stack.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.js +24 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/serializer/index.js.map +1 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.js +92 -0
- package/dist/node_modules/.pnpm/parse5@7.3.0/node_modules/parse5/dist/tokenizer/index.js.map +1 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/libs/fflate.module.js +382 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/libs/fflate.module.js.map +1 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js +2587 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/EXRLoader.js.map +1 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js +477 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/examples/jsm/loaders/RGBELoader.js.map +1 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/src/math/MathUtils.js +17 -0
- package/dist/node_modules/.pnpm/super-three@0.177.0/node_modules/super-three/src/math/MathUtils.js.map +1 -0
- package/dist/physics/index.d.ts +11 -0
- package/dist/physics/index.d.ts.map +1 -0
- package/dist/physics/physics-system.d.ts +314 -0
- package/dist/physics/physics-system.d.ts.map +1 -0
- package/dist/physics/physics-system.js +419 -0
- package/dist/physics/physics-system.js.map +1 -0
- package/dist/physics/physicsBody.d.ts +83 -0
- package/dist/physics/physicsBody.d.ts.map +1 -0
- package/dist/physics/physicsBody.js +60 -0
- package/dist/physics/physicsBody.js.map +1 -0
- package/dist/physics/physicsManipulation.d.ts +51 -0
- package/dist/physics/physicsManipulation.d.ts.map +1 -0
- package/dist/physics/physicsManipulation.js +46 -0
- package/dist/physics/physicsManipulation.js.map +1 -0
- package/dist/physics/physicsShape.d.ts +133 -0
- package/dist/physics/physicsShape.d.ts.map +1 -0
- package/dist/physics/physicsShape.js +97 -0
- package/dist/physics/physicsShape.js.map +1 -0
- package/dist/physics/utils.d.ts +21 -0
- package/dist/physics/utils.d.ts.map +1 -0
- package/dist/physics/utils.js +130 -0
- package/dist/physics/utils.js.map +1 -0
- package/dist/runtime/index.d.ts +8 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/three.d.ts +8 -0
- package/dist/runtime/three.d.ts.map +1 -0
- package/dist/runtime/three.js +18 -0
- package/dist/runtime/three.js.map +1 -0
- package/dist/scene-understanding/anchor.d.ts +42 -0
- package/dist/scene-understanding/anchor.d.ts.map +1 -0
- package/dist/scene-understanding/anchor.js +45 -0
- package/dist/scene-understanding/anchor.js.map +1 -0
- package/dist/scene-understanding/index.d.ts +11 -0
- package/dist/scene-understanding/index.d.ts.map +1 -0
- package/dist/scene-understanding/mesh.d.ts +67 -0
- package/dist/scene-understanding/mesh.d.ts.map +1 -0
- package/dist/scene-understanding/mesh.js +55 -0
- package/dist/scene-understanding/mesh.js.map +1 -0
- package/dist/scene-understanding/plane.d.ts +39 -0
- package/dist/scene-understanding/plane.d.ts.map +1 -0
- package/dist/scene-understanding/plane.js +42 -0
- package/dist/scene-understanding/plane.js.map +1 -0
- package/dist/scene-understanding/scene-understanding-system.d.ts +180 -0
- package/dist/scene-understanding/scene-understanding-system.d.ts.map +1 -0
- package/dist/scene-understanding/scene-understanding-system.js +342 -0
- package/dist/scene-understanding/scene-understanding-system.js.map +1 -0
- package/dist/transform/index.d.ts +10 -0
- package/dist/transform/index.d.ts.map +1 -0
- package/dist/transform/synced-quaternion.d.ts +35 -0
- package/dist/transform/synced-quaternion.d.ts.map +1 -0
- package/dist/transform/synced-quaternion.js +128 -0
- package/dist/transform/synced-quaternion.js.map +1 -0
- package/dist/transform/synced-vector3.d.ts +34 -0
- package/dist/transform/synced-vector3.d.ts.map +1 -0
- package/dist/transform/synced-vector3.js +106 -0
- package/dist/transform/synced-vector3.js.map +1 -0
- package/dist/transform/transform.d.ts +100 -0
- package/dist/transform/transform.d.ts.map +1 -0
- package/dist/transform/transform.js +194 -0
- package/dist/transform/transform.js.map +1 -0
- package/dist/types/webxr-augmentations.d.ts +23 -0
- package/dist/types/webxr-augmentations.d.ts.map +1 -0
- package/dist/ui/document.d.ts +112 -0
- package/dist/ui/document.d.ts.map +1 -0
- package/dist/ui/document.js +298 -0
- package/dist/ui/document.js.map +1 -0
- package/dist/ui/follow.d.ts +197 -0
- package/dist/ui/follow.d.ts.map +1 -0
- package/dist/ui/follow.js +143 -0
- package/dist/ui/follow.js.map +1 -0
- package/dist/ui/index.d.ts +18 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/screenspace.d.ts +219 -0
- package/dist/ui/screenspace.d.ts.map +1 -0
- package/dist/ui/screenspace.js +215 -0
- package/dist/ui/screenspace.js.map +1 -0
- package/dist/ui/ui.d.ts +209 -0
- package/dist/ui/ui.d.ts.map +1 -0
- package/dist/ui/ui.js +185 -0
- package/dist/ui/ui.js.map +1 -0
- package/dist/vendor/basis/README.md +46 -0
- package/dist/vendor/basis/basis_transcoder.js +19 -0
- package/dist/vendor/basis/basis_transcoder.wasm +0 -0
- package/dist/vendor/draco/README.md +32 -0
- package/dist/vendor/draco/draco_decoder.js +34 -0
- package/dist/vendor/draco/draco_decoder.wasm +0 -0
- package/dist/vendor/draco/draco_encoder.js +33 -0
- package/dist/vendor/draco/draco_wasm_wrapper.js +117 -0
- package/dist/vendor/draco/gltf/draco_decoder.js +33 -0
- package/dist/vendor/draco/gltf/draco_decoder.wasm +0 -0
- package/dist/vendor/draco/gltf/draco_encoder.js +33 -0
- package/dist/vendor/draco/gltf/draco_wasm_wrapper.js +116 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +4 -0
- package/dist/version.js.map +1 -0
- package/dist/visibility/index.d.ts +8 -0
- package/dist/visibility/index.d.ts.map +1 -0
- package/dist/visibility/visibility.d.ts +37 -0
- package/dist/visibility/visibility.d.ts.map +1 -0
- package/dist/visibility/visibility.js +52 -0
- package/dist/visibility/visibility.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { Types } from '../ecs/index.js';
|
|
8
|
+
/**
|
|
9
|
+
* Component representing detected real‑world 3D mesh geometry in AR/VR environments. This component
|
|
10
|
+
* should be attached to entities by the SceneUnderstandingSystem and be queried by custom systems.
|
|
11
|
+
*
|
|
12
|
+
* @remarks
|
|
13
|
+
* - Automatically created by {@link SceneUnderstandingSystem} when meshes are detected.
|
|
14
|
+
* - Represents complex 3D geometry like furniture, objects, and room structure.
|
|
15
|
+
* - Supports both bounded 3D objects (furniture, objects) and global mesh (room structure).
|
|
16
|
+
* - Bounded meshes include semantic labels, bounding boxes, and calculated dimensions.
|
|
17
|
+
* - Global meshes represent overall room structure without semantic classification.
|
|
18
|
+
* - Entities are destroyed when the corresponding real‑world mesh is no longer detected.
|
|
19
|
+
* - Requires WebXR session with 'mesh‑detection' feature enabled.
|
|
20
|
+
* - Users should not manually create entities with this component and let the scene understanding
|
|
21
|
+
* system manage them.
|
|
22
|
+
*
|
|
23
|
+
* @example React to detected meshes
|
|
24
|
+
* ```ts
|
|
25
|
+
* your-system.query({ required: [XRMesh] }).subscribe('qualify', (entity) => {
|
|
26
|
+
* const isBounded = entity.getValue(XRMesh, 'isBounded3D')
|
|
27
|
+
* const semanticLabel = entity.getValue(XRMesh, 'semanticLabel')
|
|
28
|
+
*
|
|
29
|
+
* if (isBounded && semanticLabel === 'table') {
|
|
30
|
+
* console.log('Table detected!')
|
|
31
|
+
* const dimensions = entity.getValue(XRMesh, 'dimensions')
|
|
32
|
+
* console.log('Table size:', dimensions)
|
|
33
|
+
* }
|
|
34
|
+
* })
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* @category Scene Understanding
|
|
38
|
+
* @see {@link SceneUnderstandingSystem}
|
|
39
|
+
* @see {@link XRPlane}
|
|
40
|
+
*/
|
|
41
|
+
export declare const XRMesh: import("elics").Component<{
|
|
42
|
+
_mesh: {
|
|
43
|
+
type: Types.Object;
|
|
44
|
+
default: undefined;
|
|
45
|
+
};
|
|
46
|
+
isBounded3D: {
|
|
47
|
+
type: Types.Boolean;
|
|
48
|
+
default: false;
|
|
49
|
+
};
|
|
50
|
+
semanticLabel: {
|
|
51
|
+
type: Types.String;
|
|
52
|
+
default: string;
|
|
53
|
+
};
|
|
54
|
+
min: {
|
|
55
|
+
type: Types.Vec3;
|
|
56
|
+
default: [number, number, number];
|
|
57
|
+
};
|
|
58
|
+
max: {
|
|
59
|
+
type: Types.Vec3;
|
|
60
|
+
default: [number, number, number];
|
|
61
|
+
};
|
|
62
|
+
dimensions: {
|
|
63
|
+
type: Types.Vec3;
|
|
64
|
+
default: [number, number, number];
|
|
65
|
+
};
|
|
66
|
+
}>;
|
|
67
|
+
//# sourceMappingURL=mesh.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mesh.d.ts","sourceRoot":"","sources":["../../src/scene-understanding/mesh.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAmB,MAAM,iBAAiB,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;EAWlB,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import '@preact/signals-core';
|
|
2
|
+
import '../ecs/world.js';
|
|
3
|
+
import { createComponent, Types } from 'elics';
|
|
4
|
+
import '../ecs/component-registry.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
8
|
+
*
|
|
9
|
+
* This source code is licensed under the MIT license found in the
|
|
10
|
+
* LICENSE file in the root directory of this source tree.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Component representing detected real‑world 3D mesh geometry in AR/VR environments. This component
|
|
14
|
+
* should be attached to entities by the SceneUnderstandingSystem and be queried by custom systems.
|
|
15
|
+
*
|
|
16
|
+
* @remarks
|
|
17
|
+
* - Automatically created by {@link SceneUnderstandingSystem} when meshes are detected.
|
|
18
|
+
* - Represents complex 3D geometry like furniture, objects, and room structure.
|
|
19
|
+
* - Supports both bounded 3D objects (furniture, objects) and global mesh (room structure).
|
|
20
|
+
* - Bounded meshes include semantic labels, bounding boxes, and calculated dimensions.
|
|
21
|
+
* - Global meshes represent overall room structure without semantic classification.
|
|
22
|
+
* - Entities are destroyed when the corresponding real‑world mesh is no longer detected.
|
|
23
|
+
* - Requires WebXR session with 'mesh‑detection' feature enabled.
|
|
24
|
+
* - Users should not manually create entities with this component and let the scene understanding
|
|
25
|
+
* system manage them.
|
|
26
|
+
*
|
|
27
|
+
* @example React to detected meshes
|
|
28
|
+
* ```ts
|
|
29
|
+
* your-system.query({ required: [XRMesh] }).subscribe('qualify', (entity) => {
|
|
30
|
+
* const isBounded = entity.getValue(XRMesh, 'isBounded3D')
|
|
31
|
+
* const semanticLabel = entity.getValue(XRMesh, 'semanticLabel')
|
|
32
|
+
*
|
|
33
|
+
* if (isBounded && semanticLabel === 'table') {
|
|
34
|
+
* console.log('Table detected!')
|
|
35
|
+
* const dimensions = entity.getValue(XRMesh, 'dimensions')
|
|
36
|
+
* console.log('Table size:', dimensions)
|
|
37
|
+
* }
|
|
38
|
+
* })
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* @category Scene Understanding
|
|
42
|
+
* @see {@link SceneUnderstandingSystem}
|
|
43
|
+
* @see {@link XRPlane}
|
|
44
|
+
*/
|
|
45
|
+
const XRMesh = createComponent('XRMesh', {
|
|
46
|
+
_mesh: { type: Types.Object, default: undefined },
|
|
47
|
+
isBounded3D: { type: Types.Boolean, default: false },
|
|
48
|
+
semanticLabel: { type: Types.String, default: '' },
|
|
49
|
+
min: { type: Types.Vec3, default: [0, 0, 0] },
|
|
50
|
+
max: { type: Types.Vec3, default: [0, 0, 0] },
|
|
51
|
+
dimensions: { type: Types.Vec3, default: [0, 0, 0] },
|
|
52
|
+
}, 'Component for managing 3D meshes in the scene');
|
|
53
|
+
|
|
54
|
+
export { XRMesh };
|
|
55
|
+
//# sourceMappingURL=mesh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mesh.js","sources":["../../src/scene-understanding/mesh.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAAA;;;;;AAKG;AAIH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgCG;AAEI,MAAM,MAAM,GAAG,eAAe,CACnC,QAAQ,EACR;IACE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;IACjD,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE;IACpD,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;AAClD,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AAC7C,IAAA,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AAC7C,IAAA,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;CACrD,EACD,+CAA+C;;;;"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { Types } from '../ecs/index.js';
|
|
8
|
+
/**
|
|
9
|
+
* Component representing a detected real‑world plane surface in AR/VR environments. This component
|
|
10
|
+
* should be attached to entities by the SceneUnderstandingSystem and be queried by custom systems.
|
|
11
|
+
*
|
|
12
|
+
* @remarks
|
|
13
|
+
* - Automatically created by {@link SceneUnderstandingSystem} when planes are detected.
|
|
14
|
+
* - Represents flat surfaces like floors, walls, and ceilings in the real world.
|
|
15
|
+
* - Entities are destroyed when the corresponding real‑world plane is no longer detected.
|
|
16
|
+
* - Requires WebXR session with 'plane‑detection' feature enabled.
|
|
17
|
+
* - Users should not manually create entities with this component and let the scene understanding
|
|
18
|
+
* system manage them.
|
|
19
|
+
*
|
|
20
|
+
* @example React to detected planes
|
|
21
|
+
* ```ts
|
|
22
|
+
* your-system.query({ required: [XRPlane] }).subscribe('qualify', (entity) => {
|
|
23
|
+
* const plane = entity.getValue(XRPlane, 'plane')
|
|
24
|
+
* console.log('Detected plane orientation:', plane.orientation)
|
|
25
|
+
* console.log('Plane position:', entity.object3D?.position)
|
|
26
|
+
* })
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @category Scene Understanding
|
|
30
|
+
* @see {@link SceneUnderstandingSystem}
|
|
31
|
+
* @see {@link XRMesh}
|
|
32
|
+
*/
|
|
33
|
+
export declare const XRPlane: import("elics").Component<{
|
|
34
|
+
_plane: {
|
|
35
|
+
type: Types.Object;
|
|
36
|
+
default: undefined;
|
|
37
|
+
};
|
|
38
|
+
}>;
|
|
39
|
+
//# sourceMappingURL=plane.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plane.d.ts","sourceRoot":"","sources":["../../src/scene-understanding/plane.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,EAAmB,MAAM,iBAAiB,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,eAAO,MAAM,OAAO;;;;;EAMnB,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import '@preact/signals-core';
|
|
2
|
+
import '../ecs/world.js';
|
|
3
|
+
import { createComponent, Types } from 'elics';
|
|
4
|
+
import '../ecs/component-registry.js';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
8
|
+
*
|
|
9
|
+
* This source code is licensed under the MIT license found in the
|
|
10
|
+
* LICENSE file in the root directory of this source tree.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Component representing a detected real‑world plane surface in AR/VR environments. This component
|
|
14
|
+
* should be attached to entities by the SceneUnderstandingSystem and be queried by custom systems.
|
|
15
|
+
*
|
|
16
|
+
* @remarks
|
|
17
|
+
* - Automatically created by {@link SceneUnderstandingSystem} when planes are detected.
|
|
18
|
+
* - Represents flat surfaces like floors, walls, and ceilings in the real world.
|
|
19
|
+
* - Entities are destroyed when the corresponding real‑world plane is no longer detected.
|
|
20
|
+
* - Requires WebXR session with 'plane‑detection' feature enabled.
|
|
21
|
+
* - Users should not manually create entities with this component and let the scene understanding
|
|
22
|
+
* system manage them.
|
|
23
|
+
*
|
|
24
|
+
* @example React to detected planes
|
|
25
|
+
* ```ts
|
|
26
|
+
* your-system.query({ required: [XRPlane] }).subscribe('qualify', (entity) => {
|
|
27
|
+
* const plane = entity.getValue(XRPlane, 'plane')
|
|
28
|
+
* console.log('Detected plane orientation:', plane.orientation)
|
|
29
|
+
* console.log('Plane position:', entity.object3D?.position)
|
|
30
|
+
* })
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @category Scene Understanding
|
|
34
|
+
* @see {@link SceneUnderstandingSystem}
|
|
35
|
+
* @see {@link XRMesh}
|
|
36
|
+
*/
|
|
37
|
+
const XRPlane = createComponent('XRPlane', {
|
|
38
|
+
_plane: { type: Types.Object, default: undefined },
|
|
39
|
+
}, 'Component for managing 3D planes in the scene');
|
|
40
|
+
|
|
41
|
+
export { XRPlane };
|
|
42
|
+
//# sourceMappingURL=plane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plane.js","sources":["../../src/scene-understanding/plane.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;AAAA;;;;;AAKG;AAIH;;;;;;;;;;;;;;;;;;;;;;;;AAwBG;AAEI,MAAM,OAAO,GAAG,eAAe,CACpC,SAAS,EACT;IACE,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;CACnD,EACD,+CAA+C;;;;"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
import { Types } from '../ecs/index.js';
|
|
8
|
+
declare const SceneUnderstandingSystem_base: import("elics").SystemConstructor<{
|
|
9
|
+
showWireFrame: {
|
|
10
|
+
type: Types.Boolean;
|
|
11
|
+
default: false;
|
|
12
|
+
};
|
|
13
|
+
}, {
|
|
14
|
+
planeEntities: {
|
|
15
|
+
required: import("elics").Component<{
|
|
16
|
+
_plane: {
|
|
17
|
+
type: Types.Object;
|
|
18
|
+
default: undefined;
|
|
19
|
+
};
|
|
20
|
+
}>[];
|
|
21
|
+
};
|
|
22
|
+
meshEntities: {
|
|
23
|
+
required: import("elics").Component<{
|
|
24
|
+
_mesh: {
|
|
25
|
+
type: Types.Object;
|
|
26
|
+
default: undefined;
|
|
27
|
+
};
|
|
28
|
+
isBounded3D: {
|
|
29
|
+
type: Types.Boolean;
|
|
30
|
+
default: false;
|
|
31
|
+
};
|
|
32
|
+
semanticLabel: {
|
|
33
|
+
type: Types.String;
|
|
34
|
+
default: string;
|
|
35
|
+
};
|
|
36
|
+
min: {
|
|
37
|
+
type: Types.Vec3;
|
|
38
|
+
default: [number, number, number];
|
|
39
|
+
};
|
|
40
|
+
max: {
|
|
41
|
+
type: Types.Vec3;
|
|
42
|
+
default: [number, number, number];
|
|
43
|
+
};
|
|
44
|
+
dimensions: {
|
|
45
|
+
type: Types.Vec3;
|
|
46
|
+
default: [number, number, number];
|
|
47
|
+
};
|
|
48
|
+
}>[];
|
|
49
|
+
};
|
|
50
|
+
anchoredEntities: {
|
|
51
|
+
required: import("elics").Component<{
|
|
52
|
+
attached: {
|
|
53
|
+
type: Types.Boolean;
|
|
54
|
+
default: false;
|
|
55
|
+
};
|
|
56
|
+
}>[];
|
|
57
|
+
};
|
|
58
|
+
}, import("../ecs/world.js").World, import("../ecs/system.js").System<{
|
|
59
|
+
showWireFrame: {
|
|
60
|
+
type: Types.Boolean;
|
|
61
|
+
default: false;
|
|
62
|
+
};
|
|
63
|
+
}, {
|
|
64
|
+
planeEntities: {
|
|
65
|
+
required: import("elics").Component<{
|
|
66
|
+
_plane: {
|
|
67
|
+
type: Types.Object;
|
|
68
|
+
default: undefined;
|
|
69
|
+
};
|
|
70
|
+
}>[];
|
|
71
|
+
};
|
|
72
|
+
meshEntities: {
|
|
73
|
+
required: import("elics").Component<{
|
|
74
|
+
_mesh: {
|
|
75
|
+
type: Types.Object;
|
|
76
|
+
default: undefined;
|
|
77
|
+
};
|
|
78
|
+
isBounded3D: {
|
|
79
|
+
type: Types.Boolean;
|
|
80
|
+
default: false;
|
|
81
|
+
};
|
|
82
|
+
semanticLabel: {
|
|
83
|
+
type: Types.String;
|
|
84
|
+
default: string;
|
|
85
|
+
};
|
|
86
|
+
min: {
|
|
87
|
+
type: Types.Vec3;
|
|
88
|
+
default: [number, number, number];
|
|
89
|
+
};
|
|
90
|
+
max: {
|
|
91
|
+
type: Types.Vec3;
|
|
92
|
+
default: [number, number, number];
|
|
93
|
+
};
|
|
94
|
+
dimensions: {
|
|
95
|
+
type: Types.Vec3;
|
|
96
|
+
default: [number, number, number];
|
|
97
|
+
};
|
|
98
|
+
}>[];
|
|
99
|
+
};
|
|
100
|
+
anchoredEntities: {
|
|
101
|
+
required: import("elics").Component<{
|
|
102
|
+
attached: {
|
|
103
|
+
type: Types.Boolean;
|
|
104
|
+
default: false;
|
|
105
|
+
};
|
|
106
|
+
}>[];
|
|
107
|
+
};
|
|
108
|
+
}>>;
|
|
109
|
+
/**
|
|
110
|
+
* Manages WebXR scene understanding features including plane detection, mesh detection, and anchoring.
|
|
111
|
+
*
|
|
112
|
+
* @remarks
|
|
113
|
+
* - Automatically detects and visualizes real‑world planes and meshes in AR/VR environments.
|
|
114
|
+
* - Creates entities with {@link XRPlane} components for detected planes (floors, walls, ceilings).
|
|
115
|
+
* - Creates entities with {@link XRMesh} components for detected 3D geometry.
|
|
116
|
+
* - Supports anchoring objects to real‑world positions using {@link XRAnchor} components.
|
|
117
|
+
* - Requires WebXR session features: 'plane‑detection', 'mesh‑detection', 'anchor' when using the related features.
|
|
118
|
+
* - Automatically manages entity lifecycle as real‑world geometry changes.
|
|
119
|
+
* - Provides optional visual feedback with wireframe meshes for detected geometry.
|
|
120
|
+
* - Objects with {@link XRAnchor} are automatically attached to a stable world‑anchored group.
|
|
121
|
+
*
|
|
122
|
+
* @example Basic scene understanding setup
|
|
123
|
+
* ```ts
|
|
124
|
+
* // WebXR session must request required features
|
|
125
|
+
* World.create(document.getElementById('scene-container'), {
|
|
126
|
+
* assets,
|
|
127
|
+
* xr: {
|
|
128
|
+
* sessionMode: SessionMode.ImmersiveAR,
|
|
129
|
+
* features: { planeDetection: true, meshDetection: true, anchors: true },
|
|
130
|
+
* }
|
|
131
|
+
* })
|
|
132
|
+
*
|
|
133
|
+
* // Add to your world to enable scene understanding
|
|
134
|
+
* world.addSystem(SceneUnderstandingSystem)
|
|
135
|
+
*
|
|
136
|
+
|
|
137
|
+
* ```
|
|
138
|
+
*
|
|
139
|
+
* @example Create an anchored object
|
|
140
|
+
* ```ts
|
|
141
|
+
* const cube = world.createTransformEntity(cubeObject)
|
|
142
|
+
* cube.addComponent(XRAnchor) // Will be anchored to real-world position
|
|
143
|
+
* ```
|
|
144
|
+
*
|
|
145
|
+
* @example React to detected planes
|
|
146
|
+
* ```ts
|
|
147
|
+
* // Planes are automatically created as entities with XRPlane component
|
|
148
|
+
* system.query({ required: [XRPlane] }).subscribe('qualify', (entity) => {
|
|
149
|
+
* const plane = entity.getValue(XRPlane, '_plane')
|
|
150
|
+
* console.log('New plane detected:', plane.orientation)
|
|
151
|
+
* })
|
|
152
|
+
* ```
|
|
153
|
+
*
|
|
154
|
+
* @category Scene Understanding
|
|
155
|
+
* @see {@link XRPlane}
|
|
156
|
+
* @see {@link XRMesh}
|
|
157
|
+
* @see {@link XRAnchor}
|
|
158
|
+
*/
|
|
159
|
+
export declare class SceneUnderstandingSystem extends SceneUnderstandingSystem_base {
|
|
160
|
+
private planeFeatureEnabled;
|
|
161
|
+
private meshFeatureEnabled;
|
|
162
|
+
private anchorFeatureEnabled;
|
|
163
|
+
private anchorRequested;
|
|
164
|
+
private xrAnchor;
|
|
165
|
+
private currentPlanes;
|
|
166
|
+
private currentMeshes;
|
|
167
|
+
private anchoredGroup;
|
|
168
|
+
private matrixBuffer;
|
|
169
|
+
init(): void;
|
|
170
|
+
update(_delta: number, _time: number): void;
|
|
171
|
+
private updatePlanes;
|
|
172
|
+
private updateMeshes;
|
|
173
|
+
private updateEnabledFeatures;
|
|
174
|
+
private createAnchor;
|
|
175
|
+
private updateAnchoredObject;
|
|
176
|
+
private flatToVec3Array;
|
|
177
|
+
private findMinMaxEntries;
|
|
178
|
+
}
|
|
179
|
+
export {};
|
|
180
|
+
//# sourceMappingURL=scene-understanding-system.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-understanding-system.d.ts","sourceRoot":"","sources":["../../src/scene-understanding/scene-understanding-system.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAwB,KAAK,EAAE,MAAM,iBAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAe9D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,qBAAa,wBAAyB,SAAQ,6BAS7C;IACC,OAAO,CAAC,mBAAmB,CAAsB;IACjD,OAAO,CAAC,kBAAkB,CAAsB;IAChD,OAAO,CAAC,oBAAoB,CAAsB;IAClD,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,aAAa,CAAsB;IAE3C,OAAO,CAAC,YAAY,CAAiB;IAErC,IAAI,IAAI,IAAI;IAkCZ,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAuC3C,OAAO,CAAC,YAAY;IAqEpB,OAAO,CAAC,YAAY;IA6EpB,OAAO,CAAC,qBAAqB;YAgCf,YAAY;IAoB1B,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,iBAAiB;CAkB1B"}
|