@aura3d/engine 1.5.1 → 2.0.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/README.md +142 -83
- package/dist/animation/FootIk.d.ts +10 -1
- package/dist/animation/FootIk.d.ts.map +1 -1
- package/dist/animation/FootIk.js.map +1 -1
- package/dist/animation/HumanoidRetargeting.js +1 -1
- package/dist/animation/RigQuality.d.ts +1 -1
- package/dist/animation/RigQuality.js +2 -2
- package/dist/animation/RigQuality.js.map +1 -1
- package/dist/animation/SecondaryAnimationSampling.d.ts +55 -0
- package/dist/animation/SecondaryAnimationSampling.d.ts.map +1 -0
- package/dist/animation/SecondaryAnimationSampling.js +145 -0
- package/dist/animation/SecondaryAnimationSampling.js.map +1 -0
- package/dist/animation/SpringBones.d.ts.map +1 -1
- package/dist/animation/SpringBones.js +1 -2
- package/dist/animation/SpringBones.js.map +1 -1
- package/dist/animation/browser-index.d.ts +0 -2
- package/dist/animation/browser-index.d.ts.map +1 -1
- package/dist/animation/browser-index.js +0 -2
- package/dist/animation/browser-index.js.map +1 -1
- package/dist/animation/index.d.ts +0 -2
- package/dist/animation/index.d.ts.map +1 -1
- package/dist/animation/index.js +0 -2
- package/dist/animation/index.js.map +1 -1
- package/dist/assets/GLTFAnimationRuntime.d.ts +4 -0
- package/dist/assets/GLTFAnimationRuntime.d.ts.map +1 -1
- package/dist/assets/GLTFAnimationRuntime.js +29 -6
- package/dist/assets/GLTFAnimationRuntime.js.map +1 -1
- package/dist/assets/GLTFLoader.d.ts.map +1 -1
- package/dist/assets/GLTFLoader.js +13 -4
- package/dist/assets/GLTFLoader.js.map +1 -1
- package/dist/assets/browser-index.d.ts +0 -4
- package/dist/assets/browser-index.d.ts.map +1 -1
- package/dist/assets/browser-index.js +0 -2
- package/dist/assets/browser-index.js.map +1 -1
- package/dist/assets/gltf-runtime.d.ts +6 -0
- package/dist/assets/gltf-runtime.d.ts.map +1 -0
- package/dist/assets/gltf-runtime.js +4 -0
- package/dist/assets/gltf-runtime.js.map +1 -0
- package/dist/assets/index.d.ts +0 -4
- package/dist/assets/index.d.ts.map +1 -1
- package/dist/assets/index.js +0 -2
- package/dist/assets/index.js.map +1 -1
- package/dist/audio/AudioBus.d.ts +19 -1
- package/dist/audio/AudioBus.d.ts.map +1 -1
- package/dist/audio/AudioBus.js.map +1 -1
- package/dist/audio/AudioFileManager.d.ts +5 -0
- package/dist/audio/AudioFileManager.d.ts.map +1 -1
- package/dist/audio/AudioFileManager.js +13 -0
- package/dist/audio/AudioFileManager.js.map +1 -1
- package/dist/audio/AudioSource.d.ts +8 -0
- package/dist/audio/AudioSource.d.ts.map +1 -1
- package/dist/audio/AudioSource.js +56 -7
- package/dist/audio/AudioSource.js.map +1 -1
- package/dist/audio/index.d.ts +1 -7
- package/dist/audio/index.d.ts.map +1 -1
- package/dist/audio/index.js +0 -3
- package/dist/audio/index.js.map +1 -1
- package/dist/aura3d-cli/asset-core-types.d.ts +1 -1
- package/dist/aura3d-cli/asset-core-types.d.ts.map +1 -1
- package/dist/aura3d-cli/asset-manifest.d.ts.map +1 -1
- package/dist/aura3d-cli/asset-manifest.js +36 -2
- package/dist/aura3d-cli/asset-manifest.js.map +1 -1
- package/dist/aura3d-cli/asset-role-admission.js +1 -1
- package/dist/aura3d-cli/asset-role-admission.js.map +1 -1
- package/dist/aura3d-cli/cli-help.js +3 -3
- package/dist/aura3d-cli/cli-help.js.map +1 -1
- package/dist/aura3d-cli/cli-options.d.ts +1 -1
- package/dist/aura3d-cli/cli-options.d.ts.map +1 -1
- package/dist/aura3d-cli/cli-options.js +2 -2
- package/dist/aura3d-cli/cli-options.js.map +1 -1
- package/dist/aura3d-cli/cli.js +1 -1
- package/dist/aura3d-cli/cli.js.map +1 -1
- package/dist/aura3d-cli/index.d.ts.map +1 -1
- package/dist/aura3d-cli/index.js +13 -5
- package/dist/aura3d-cli/index.js.map +1 -1
- package/dist/create-aura3d/index.d.ts.map +1 -1
- package/dist/create-aura3d/index.js +10 -4
- package/dist/create-aura3d/index.js.map +1 -1
- package/dist/create-aura3d/showcase-spec-evidence.js +5 -1
- package/dist/create-aura3d/showcase-spec-evidence.js.map +1 -1
- package/dist/create-aura3d/showcase-spec-game-geometry-extractor.d.ts +8 -1
- package/dist/create-aura3d/showcase-spec-game-geometry-extractor.d.ts.map +1 -1
- package/dist/create-aura3d/showcase-spec-game-geometry-extractor.js +191 -31
- package/dist/create-aura3d/showcase-spec-game-geometry-extractor.js.map +1 -1
- package/dist/create-aura3d/showcase-spec-game-template-evidence.d.ts.map +1 -1
- package/dist/create-aura3d/showcase-spec-game-template-evidence.js +7 -0
- package/dist/create-aura3d/showcase-spec-game-template-evidence.js.map +1 -1
- package/dist/create-aura3d/showcase-spec-parser.js +1 -1
- package/dist/create-aura3d/showcase-spec-parser.js.map +1 -1
- package/dist/create-aura3d/showcase-spec-types.d.ts +50 -0
- package/dist/create-aura3d/showcase-spec-types.d.ts.map +1 -1
- package/dist/editor-runtime/index.d.ts +0 -2
- package/dist/editor-runtime/index.d.ts.map +1 -1
- package/dist/editor-runtime/index.js +0 -1
- package/dist/editor-runtime/index.js.map +1 -1
- package/dist/engine/agent-api/GameAssetValidation.js +1 -1
- package/dist/engine/agent-api/GameAssetValidation.js.map +1 -1
- package/dist/engine/agent-api/GameEvidence.js +1 -1
- package/dist/engine/agent-api/GameEvidence.js.map +1 -1
- package/dist/engine/agent-api/GameGenreKits.d.ts +63 -0
- package/dist/engine/agent-api/GameGenreKits.d.ts.map +1 -1
- package/dist/engine/agent-api/GameGenreKits.js +274 -56
- package/dist/engine/agent-api/GameGenreKits.js.map +1 -1
- package/dist/engine/agent-api/GameRuntime.d.ts +38 -1
- package/dist/engine/agent-api/GameRuntime.d.ts.map +1 -1
- package/dist/engine/agent-api/GameRuntime.js +69 -1
- package/dist/engine/agent-api/GameRuntime.js.map +1 -1
- package/dist/engine/agent-api/GameSceneGeometryBindings.d.ts +24 -0
- package/dist/engine/agent-api/GameSceneGeometryBindings.d.ts.map +1 -1
- package/dist/engine/agent-api/GameSceneGeometryBindings.js +52 -0
- package/dist/engine/agent-api/GameSceneGeometryBindings.js.map +1 -1
- package/dist/engine/agent-api/LeanArcadeRuntime.d.ts +111 -0
- package/dist/engine/agent-api/LeanArcadeRuntime.d.ts.map +1 -0
- package/dist/engine/agent-api/LeanArcadeRuntime.js +219 -0
- package/dist/engine/agent-api/LeanArcadeRuntime.js.map +1 -0
- package/dist/engine/agent-api/PhysicsRuntime.d.ts +332 -0
- package/dist/engine/agent-api/PhysicsRuntime.d.ts.map +1 -0
- package/dist/engine/agent-api/PhysicsRuntime.js +619 -0
- package/dist/engine/agent-api/PhysicsRuntime.js.map +1 -0
- package/dist/engine/agent-api/PlatformerMotion.d.ts +124 -0
- package/dist/engine/agent-api/PlatformerMotion.d.ts.map +1 -1
- package/dist/engine/agent-api/PlatformerMotion.js +101 -16
- package/dist/engine/agent-api/PlatformerMotion.js.map +1 -1
- package/dist/engine/agent-api/RootGeometry.d.ts +36 -0
- package/dist/engine/agent-api/RootGeometry.d.ts.map +1 -0
- package/dist/engine/agent-api/RootGeometry.js +152 -0
- package/dist/engine/agent-api/RootGeometry.js.map +1 -0
- package/dist/engine/agent-api/SpatialAnchoring.d.ts +47 -0
- package/dist/engine/agent-api/SpatialAnchoring.d.ts.map +1 -1
- package/dist/engine/agent-api/SpatialAnchoring.js +46 -0
- package/dist/engine/agent-api/SpatialAnchoring.js.map +1 -1
- package/dist/engine/agent-api/VehicleChassis.d.ts +52 -0
- package/dist/engine/agent-api/VehicleChassis.d.ts.map +1 -1
- package/dist/engine/agent-api/VehicleChassis.js +182 -8
- package/dist/engine/agent-api/VehicleChassis.js.map +1 -1
- package/dist/engine/agent-api/WorldLabelRenderer.d.ts +65 -1
- package/dist/engine/agent-api/WorldLabelRenderer.d.ts.map +1 -1
- package/dist/engine/agent-api/WorldLabelRenderer.js +48 -5
- package/dist/engine/agent-api/WorldLabelRenderer.js.map +1 -1
- package/dist/engine/agent-api/humanoid-walk-runtime.d.ts +1 -1
- package/dist/engine/agent-api/index.d.ts +240 -14
- package/dist/engine/agent-api/index.d.ts.map +1 -1
- package/dist/engine/agent-api/index.js +1435 -344
- package/dist/engine/agent-api/index.js.map +1 -1
- package/dist/engine/agent-api/lean-base.d.ts +224 -0
- package/dist/engine/agent-api/lean-base.d.ts.map +1 -0
- package/dist/engine/agent-api/lean-base.js +322 -0
- package/dist/engine/agent-api/lean-base.js.map +1 -0
- package/dist/engine/agent-api/lean-game.d.ts +3 -0
- package/dist/engine/agent-api/lean-game.d.ts.map +1 -0
- package/dist/engine/agent-api/lean-game.js +3 -0
- package/dist/engine/agent-api/lean-game.js.map +1 -0
- package/dist/engine/agent-api/lean-product.d.ts +3 -0
- package/dist/engine/agent-api/lean-product.d.ts.map +1 -0
- package/dist/engine/agent-api/lean-product.js +3 -0
- package/dist/engine/agent-api/lean-product.js.map +1 -0
- package/dist/engine/agent-api/lean.d.ts +3 -0
- package/dist/engine/agent-api/lean.d.ts.map +1 -0
- package/dist/engine/agent-api/lean.js +3 -0
- package/dist/engine/agent-api/lean.js.map +1 -0
- package/dist/engine/agent-api/media-node.d.ts +42 -0
- package/dist/engine/agent-api/media-node.d.ts.map +1 -0
- package/dist/engine/agent-api/media-node.js +44 -0
- package/dist/engine/agent-api/media-node.js.map +1 -0
- package/dist/engine/agent-api/product-viewer-runtime.d.ts.map +1 -1
- package/dist/engine/game/GameAudio.d.ts +5 -0
- package/dist/engine/game/GameAudio.d.ts.map +1 -1
- package/dist/engine/game/GameAudio.js +65 -23
- package/dist/engine/game/GameAudio.js.map +1 -1
- package/dist/engine/production-runtime/TypedGLBActor.d.ts +9 -1
- package/dist/engine/production-runtime/TypedGLBActor.d.ts.map +1 -1
- package/dist/engine/production-runtime/TypedGLBActor.js +25 -7
- package/dist/engine/production-runtime/TypedGLBActor.js.map +1 -1
- package/dist/engine/production-runtime/index.d.ts +2 -2
- package/dist/engine/production-runtime/index.d.ts.map +1 -1
- package/dist/engine/threejs-example-parity/FlagshipFoundation.d.ts +3 -3
- package/dist/engine/threejs-example-parity/FlagshipFoundation.d.ts.map +1 -1
- package/dist/environments/index.d.ts +5 -10
- package/dist/environments/index.d.ts.map +1 -1
- package/dist/environments/index.js +0 -3
- package/dist/environments/index.js.map +1 -1
- package/dist/environments/node.d.ts +7 -0
- package/dist/environments/node.d.ts.map +1 -0
- package/dist/environments/node.js +5 -0
- package/dist/environments/node.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/input/InputActionBinding.d.ts +44 -0
- package/dist/input/InputActionBinding.d.ts.map +1 -0
- package/dist/input/InputActionBinding.js +86 -0
- package/dist/input/InputActionBinding.js.map +1 -0
- package/dist/input/InputActionBindingFixtures.d.ts +8 -0
- package/dist/input/InputActionBindingFixtures.d.ts.map +1 -1
- package/dist/input/InputActionBindingFixtures.js +8 -0
- package/dist/input/InputActionBindingFixtures.js.map +1 -1
- package/dist/input/InputValueProcessors.d.ts +19 -0
- package/dist/input/InputValueProcessors.d.ts.map +1 -0
- package/dist/input/InputValueProcessors.js +24 -0
- package/dist/input/InputValueProcessors.js.map +1 -0
- package/dist/input/index.d.ts +2 -6
- package/dist/input/index.d.ts.map +1 -1
- package/dist/input/index.js +1 -3
- package/dist/input/index.js.map +1 -1
- package/dist/lean/ArcadeRuntime.d.ts +111 -0
- package/dist/lean/ArcadeRuntime.d.ts.map +1 -0
- package/dist/lean/ArcadeRuntime.js +219 -0
- package/dist/lean/ArcadeRuntime.js.map +1 -0
- package/dist/lean/base.d.ts +228 -0
- package/dist/lean/base.d.ts.map +1 -0
- package/dist/lean/base.js +322 -0
- package/dist/lean/base.js.map +1 -0
- package/dist/lean/game.d.ts +19 -0
- package/dist/lean/game.d.ts.map +1 -0
- package/dist/lean/game.js +37 -0
- package/dist/lean/game.js.map +1 -0
- package/dist/lean/index.d.ts +4 -0
- package/dist/lean/index.d.ts.map +1 -0
- package/dist/lean/index.js +10 -0
- package/dist/lean/index.js.map +1 -0
- package/dist/lean/product.d.ts +4 -0
- package/dist/lean/product.d.ts.map +1 -0
- package/dist/lean/product.js +55 -0
- package/dist/lean/product.js.map +1 -0
- package/dist/materials/index.d.ts +1 -10
- package/dist/materials/index.d.ts.map +1 -1
- package/dist/materials/index.js +1 -6
- package/dist/materials/index.js.map +1 -1
- package/dist/materials/node.d.ts +4 -0
- package/dist/materials/node.d.ts.map +1 -0
- package/dist/materials/node.js +3 -0
- package/dist/materials/node.js.map +1 -0
- package/dist/physics/ArcadeCharacterController.d.ts +53 -0
- package/dist/physics/ArcadeCharacterController.d.ts.map +1 -0
- package/dist/physics/ArcadeCharacterController.js +98 -0
- package/dist/physics/ArcadeCharacterController.js.map +1 -0
- package/dist/physics/ArcadeVehicleTelemetry.d.ts +162 -0
- package/dist/physics/ArcadeVehicleTelemetry.d.ts.map +1 -0
- package/dist/physics/ArcadeVehicleTelemetry.js +363 -0
- package/dist/physics/ArcadeVehicleTelemetry.js.map +1 -0
- package/dist/physics/CharacterController.d.ts +52 -0
- package/dist/physics/CharacterController.d.ts.map +1 -1
- package/dist/physics/CharacterController.js +380 -7
- package/dist/physics/CharacterController.js.map +1 -1
- package/dist/physics/Constraint.d.ts +20 -4
- package/dist/physics/Constraint.d.ts.map +1 -1
- package/dist/physics/Constraint.js +34 -60
- package/dist/physics/Constraint.js.map +1 -1
- package/dist/physics/FightingCharacterController.d.ts +32 -0
- package/dist/physics/FightingCharacterController.d.ts.map +1 -0
- package/dist/physics/FightingCharacterController.js +76 -0
- package/dist/physics/FightingCharacterController.js.map +1 -0
- package/dist/physics/MeshBVH.d.ts +72 -0
- package/dist/physics/MeshBVH.d.ts.map +1 -0
- package/dist/physics/MeshBVH.js +244 -0
- package/dist/physics/MeshBVH.js.map +1 -0
- package/dist/physics/PathFollowDriver.d.ts +162 -0
- package/dist/physics/PathFollowDriver.d.ts.map +1 -0
- package/dist/physics/PathFollowDriver.js +163 -0
- package/dist/physics/PathFollowDriver.js.map +1 -0
- package/dist/physics/PhysicsDebugDraw.d.ts +40 -1
- package/dist/physics/PhysicsDebugDraw.d.ts.map +1 -1
- package/dist/physics/PhysicsDebugDraw.js +87 -17
- package/dist/physics/PhysicsDebugDraw.js.map +1 -1
- package/dist/physics/PhysicsWorld.d.ts +37 -18
- package/dist/physics/PhysicsWorld.d.ts.map +1 -1
- package/dist/physics/PhysicsWorld.js +231 -630
- package/dist/physics/PhysicsWorld.js.map +1 -1
- package/dist/physics/RacingLineProfile.d.ts +116 -0
- package/dist/physics/RacingLineProfile.d.ts.map +1 -0
- package/dist/physics/RacingLineProfile.js +181 -0
- package/dist/physics/RacingLineProfile.js.map +1 -0
- package/dist/physics/Raycast.d.ts +11 -0
- package/dist/physics/Raycast.d.ts.map +1 -1
- package/dist/physics/Raycast.js +62 -8
- package/dist/physics/Raycast.js.map +1 -1
- package/dist/physics/RigidBody.d.ts +16 -9
- package/dist/physics/RigidBody.d.ts.map +1 -1
- package/dist/physics/RigidBody.js +23 -75
- package/dist/physics/RigidBody.js.map +1 -1
- package/dist/physics/SurfaceQuery.d.ts +72 -0
- package/dist/physics/SurfaceQuery.d.ts.map +1 -0
- package/dist/physics/SurfaceQuery.js +89 -0
- package/dist/physics/SurfaceQuery.js.map +1 -0
- package/dist/physics/VehicleDynamics.d.ts +10 -0
- package/dist/physics/VehicleDynamics.d.ts.map +1 -1
- package/dist/physics/VehicleDynamics.js +31 -3
- package/dist/physics/VehicleDynamics.js.map +1 -1
- package/dist/physics/VehicleMotion.d.ts +125 -0
- package/dist/physics/VehicleMotion.d.ts.map +1 -0
- package/dist/physics/VehicleMotion.js +373 -0
- package/dist/physics/VehicleMotion.js.map +1 -0
- package/dist/physics/index.d.ts +62 -17
- package/dist/physics/index.d.ts.map +1 -1
- package/dist/physics/index.js +70 -17
- package/dist/physics/index.js.map +1 -1
- package/dist/physics/solverless-entry.d.ts +41 -0
- package/dist/physics/solverless-entry.d.ts.map +1 -0
- package/dist/physics/solverless-entry.js +40 -0
- package/dist/physics/solverless-entry.js.map +1 -0
- package/dist/physics/solverless.d.ts +37 -0
- package/dist/physics/solverless.d.ts.map +1 -0
- package/dist/physics/solverless.js +36 -0
- package/dist/physics/solverless.js.map +1 -0
- package/dist/physics/world-entry.d.ts +31 -0
- package/dist/physics/world-entry.d.ts.map +1 -0
- package/dist/physics/world-entry.js +30 -0
- package/dist/physics/world-entry.js.map +1 -0
- package/dist/physics/world.d.ts +18 -0
- package/dist/physics/world.d.ts.map +1 -0
- package/dist/physics/world.js +17 -0
- package/dist/physics/world.js.map +1 -0
- package/dist/physics-rapier/index.d.ts +169 -0
- package/dist/physics-rapier/index.d.ts.map +1 -0
- package/dist/physics-rapier/index.js +311 -0
- package/dist/physics-rapier/index.js.map +1 -0
- package/dist/product-studio/ProductLighting.d.ts.map +1 -1
- package/dist/product-studio/ProductLighting.js +34 -3
- package/dist/product-studio/ProductLighting.js.map +1 -1
- package/dist/rendering/ArchitecturalLighting.d.ts +35 -0
- package/dist/rendering/ArchitecturalLighting.d.ts.map +1 -0
- package/dist/rendering/ArchitecturalLighting.js +162 -0
- package/dist/rendering/ArchitecturalLighting.js.map +1 -0
- package/dist/rendering/ArchitecturalMaterialCatalog.d.ts +1 -1
- package/dist/rendering/ArchitecturalMaterialCatalog.d.ts.map +1 -1
- package/dist/rendering/ArchitecturalMaterialCatalog.js +1 -1
- package/dist/rendering/ArchitecturalMaterialCatalog.js.map +1 -1
- package/dist/rendering/ArchitecturalMeasurement.d.ts +27 -0
- package/dist/rendering/ArchitecturalMeasurement.d.ts.map +1 -0
- package/dist/rendering/ArchitecturalMeasurement.js +112 -0
- package/dist/rendering/ArchitecturalMeasurement.js.map +1 -0
- package/dist/rendering/CameraFraming.d.ts +77 -0
- package/dist/rendering/CameraFraming.d.ts.map +1 -1
- package/dist/rendering/CameraFraming.js +176 -1
- package/dist/rendering/CameraFraming.js.map +1 -1
- package/dist/rendering/CanonicalProductScene.d.ts +13 -0
- package/dist/rendering/CanonicalProductScene.d.ts.map +1 -0
- package/dist/rendering/CanonicalProductScene.js +78 -0
- package/dist/rendering/CanonicalProductScene.js.map +1 -0
- package/dist/rendering/CascadedShadowMaps.d.ts +1 -1
- package/dist/rendering/CascadedShadowMaps.d.ts.map +1 -1
- package/dist/rendering/CascadedShadowMaps.js +1 -1
- package/dist/rendering/CascadedShadowMaps.js.map +1 -1
- package/dist/rendering/DepthPass.d.ts +1 -1
- package/dist/rendering/DepthPass.d.ts.map +1 -1
- package/dist/rendering/DepthPass.js +2 -2
- package/dist/rendering/DepthPass.js.map +1 -1
- package/dist/rendering/EnvironmentBackgroundPass.d.ts +1 -1
- package/dist/rendering/EnvironmentBackgroundPass.d.ts.map +1 -1
- package/dist/rendering/EnvironmentBackgroundPass.js +2 -2
- package/dist/rendering/EnvironmentBackgroundPass.js.map +1 -1
- package/dist/rendering/EnvironmentPlatform.js +2 -2
- package/dist/rendering/EnvironmentPlatform.js.map +1 -1
- package/dist/rendering/ForwardPass.d.ts +1 -1
- package/dist/rendering/ForwardPass.d.ts.map +1 -1
- package/dist/rendering/ForwardPass.js +24 -10
- package/dist/rendering/ForwardPass.js.map +1 -1
- package/dist/rendering/Geometry.d.ts +2 -0
- package/dist/rendering/Geometry.d.ts.map +1 -1
- package/dist/rendering/Geometry.js +15 -0
- package/dist/rendering/Geometry.js.map +1 -1
- package/dist/rendering/InstancedPBRMaterial.js +1 -1
- package/dist/rendering/InstancedPBRMaterial.js.map +1 -1
- package/dist/rendering/InstancedUnlitMaterial.js +1 -1
- package/dist/rendering/InstancedUnlitMaterial.js.map +1 -1
- package/dist/rendering/Material.js +2 -2
- package/dist/rendering/Material.js.map +1 -1
- package/dist/rendering/MaterialBinding.js +4 -4
- package/dist/rendering/MaterialBinding.js.map +1 -1
- package/dist/rendering/MaterialInstance.js +2 -2
- package/dist/rendering/MaterialInstance.js.map +1 -1
- package/dist/rendering/MorphUnlitMaterial.js +1 -1
- package/dist/rendering/MorphUnlitMaterial.js.map +1 -1
- package/dist/rendering/NormalMappedPBRMaterial.js +1 -1
- package/dist/rendering/NormalMappedPBRMaterial.js.map +1 -1
- package/dist/rendering/OceanSurface.d.ts +62 -0
- package/dist/rendering/OceanSurface.d.ts.map +1 -0
- package/dist/rendering/OceanSurface.js +240 -0
- package/dist/rendering/OceanSurface.js.map +1 -0
- package/dist/rendering/PBRMaterial.d.ts.map +1 -1
- package/dist/rendering/PBRMaterial.js +3 -3
- package/dist/rendering/PBRMaterial.js.map +1 -1
- package/dist/rendering/PortableShaderMaterial.d.ts +60 -0
- package/dist/rendering/PortableShaderMaterial.d.ts.map +1 -0
- package/dist/rendering/PortableShaderMaterial.js +223 -0
- package/dist/rendering/PortableShaderMaterial.js.map +1 -0
- package/dist/rendering/PostProcessPass.d.ts.map +1 -1
- package/dist/rendering/PostProcessPass.js +30 -6
- package/dist/rendering/PostProcessPass.js.map +1 -1
- package/dist/rendering/ProceduralTexture.d.ts +27 -0
- package/dist/rendering/ProceduralTexture.d.ts.map +1 -0
- package/dist/rendering/ProceduralTexture.js +336 -0
- package/dist/rendering/ProceduralTexture.js.map +1 -0
- package/dist/rendering/ProductTurntable.d.ts +96 -0
- package/dist/rendering/ProductTurntable.d.ts.map +1 -0
- package/dist/rendering/ProductTurntable.js +639 -0
- package/dist/rendering/ProductTurntable.js.map +1 -0
- package/dist/rendering/RenderDevice.d.ts +30 -0
- package/dist/rendering/RenderDevice.d.ts.map +1 -1
- package/dist/rendering/RenderDevice.js.map +1 -1
- package/dist/rendering/Renderer.d.ts +28 -4
- package/dist/rendering/Renderer.d.ts.map +1 -1
- package/dist/rendering/Renderer.js +34 -12
- package/dist/rendering/Renderer.js.map +1 -1
- package/dist/rendering/RendererPostprocessPlan.js +4 -4
- package/dist/rendering/RendererPostprocessPlan.js.map +1 -1
- package/dist/rendering/ScreenSpaceLineMaterial.js +1 -1
- package/dist/rendering/ScreenSpaceLineMaterial.js.map +1 -1
- package/dist/rendering/ShaderChunks.d.ts.map +1 -1
- package/dist/rendering/ShaderChunks.js +81 -19
- package/dist/rendering/ShaderChunks.js.map +1 -1
- package/dist/rendering/ShaderLibrary.d.ts +2 -78
- package/dist/rendering/ShaderLibrary.d.ts.map +1 -1
- package/dist/rendering/ShaderLibrary.js +127 -793
- package/dist/rendering/ShaderLibrary.js.map +1 -1
- package/dist/rendering/ShaderLibraryCore.d.ts +100 -0
- package/dist/rendering/ShaderLibraryCore.d.ts.map +1 -0
- package/dist/rendering/ShaderLibraryCore.js +800 -0
- package/dist/rendering/ShaderLibraryCore.js.map +1 -0
- package/dist/rendering/ShaderModule.d.ts +1 -1
- package/dist/rendering/ShaderModule.d.ts.map +1 -1
- package/dist/rendering/ShaderModule.js +4 -2
- package/dist/rendering/ShaderModule.js.map +1 -1
- package/dist/rendering/ShadowPass.d.ts +1 -1
- package/dist/rendering/ShadowPass.d.ts.map +1 -1
- package/dist/rendering/ShadowPass.js +6 -4
- package/dist/rendering/ShadowPass.js.map +1 -1
- package/dist/rendering/SkinnedLitMaterial.js +1 -1
- package/dist/rendering/SkinnedLitMaterial.js.map +1 -1
- package/dist/rendering/SkinnedUnlitMaterial.js +1 -1
- package/dist/rendering/SkinnedUnlitMaterial.js.map +1 -1
- package/dist/rendering/SpaceEnvironment.d.ts +54 -0
- package/dist/rendering/SpaceEnvironment.d.ts.map +1 -0
- package/dist/rendering/SpaceEnvironment.js +116 -0
- package/dist/rendering/SpaceEnvironment.js.map +1 -0
- package/dist/rendering/TerrainHeightfield.d.ts +60 -0
- package/dist/rendering/TerrainHeightfield.d.ts.map +1 -0
- package/dist/rendering/TerrainHeightfield.js +239 -0
- package/dist/rendering/TerrainHeightfield.js.map +1 -0
- package/dist/rendering/TextureBinding.d.ts +14 -0
- package/dist/rendering/TextureBinding.d.ts.map +1 -1
- package/dist/rendering/TextureBinding.js +17 -0
- package/dist/rendering/TextureBinding.js.map +1 -1
- package/dist/rendering/TexturedPBRMaterial.js +1 -1
- package/dist/rendering/TexturedPBRMaterial.js.map +1 -1
- package/dist/rendering/TexturedUnlitMaterial.js +1 -1
- package/dist/rendering/TexturedUnlitMaterial.js.map +1 -1
- package/dist/rendering/UnlitMaterial.js +1 -1
- package/dist/rendering/UnlitMaterial.js.map +1 -1
- package/dist/rendering/VegetationFixtures.d.ts +1 -1
- package/dist/rendering/VegetationFixtures.d.ts.map +1 -1
- package/dist/rendering/VegetationFixtures.js +1 -1
- package/dist/rendering/VegetationFixtures.js.map +1 -1
- package/dist/rendering/VegetationScatter.d.ts +68 -0
- package/dist/rendering/VegetationScatter.d.ts.map +1 -0
- package/dist/rendering/VegetationScatter.js +241 -0
- package/dist/rendering/VegetationScatter.js.map +1 -0
- package/dist/rendering/VoxelWorld.d.ts +51 -0
- package/dist/rendering/VoxelWorld.d.ts.map +1 -0
- package/dist/rendering/VoxelWorld.js +183 -0
- package/dist/rendering/VoxelWorld.js.map +1 -0
- package/dist/rendering/Weather.d.ts +44 -0
- package/dist/rendering/Weather.d.ts.map +1 -0
- package/dist/rendering/Weather.js +140 -0
- package/dist/rendering/Weather.js.map +1 -0
- package/dist/rendering/WebGL2Device.d.ts +22 -0
- package/dist/rendering/WebGL2Device.d.ts.map +1 -1
- package/dist/rendering/WebGL2Device.js +134 -23
- package/dist/rendering/WebGL2Device.js.map +1 -1
- package/dist/rendering/WebGPUDevice.d.ts +19 -2
- package/dist/rendering/WebGPUDevice.d.ts.map +1 -1
- package/dist/rendering/WebGPUDevice.js +188 -9
- package/dist/rendering/WebGPUDevice.js.map +1 -1
- package/dist/rendering/index.d.ts +28 -35
- package/dist/rendering/index.d.ts.map +1 -1
- package/dist/rendering/index.js +36 -20
- package/dist/rendering/index.js.map +1 -1
- package/dist/rendering/lean/LeanProductRenderer.d.ts +29 -0
- package/dist/rendering/lean/LeanProductRenderer.d.ts.map +1 -0
- package/dist/rendering/lean/LeanProductRenderer.js +38 -0
- package/dist/rendering/lean/LeanProductRenderer.js.map +1 -0
- package/dist/rendering/lean/LeanProductionRenderer.d.ts +38 -0
- package/dist/rendering/lean/LeanProductionRenderer.d.ts.map +1 -0
- package/dist/rendering/lean/LeanProductionRenderer.js +88 -0
- package/dist/rendering/lean/LeanProductionRenderer.js.map +1 -0
- package/dist/rendering/lean-runtime.d.ts +18 -0
- package/dist/rendering/lean-runtime.d.ts.map +1 -0
- package/dist/rendering/lean-runtime.js +13 -0
- package/dist/rendering/lean-runtime.js.map +1 -0
- package/dist/rendering/postprocess/EffectComposer.d.ts.map +1 -1
- package/dist/rendering/postprocess/EffectComposer.js +1 -3
- package/dist/rendering/postprocess/EffectComposer.js.map +1 -1
- package/dist/rendering/production-runtime/PBRHDRPipeline.d.ts.map +1 -1
- package/dist/rendering/production-runtime/PBRHDRPipeline.js +5 -1
- package/dist/rendering/production-runtime/PBRHDRPipeline.js.map +1 -1
- package/dist/rendering/production-runtime/ProductionRendererTypes.d.ts +9 -0
- package/dist/rendering/production-runtime/ProductionRendererTypes.d.ts.map +1 -1
- package/dist/rendering/production-runtime/ProductionRendererTypes.js.map +1 -1
- package/dist/rendering/production-runtime/ProductionRuntimeRenderer.d.ts +5 -0
- package/dist/rendering/production-runtime/ProductionRuntimeRenderer.d.ts.map +1 -1
- package/dist/rendering/production-runtime/ProductionRuntimeRenderer.js +53 -5
- package/dist/rendering/production-runtime/ProductionRuntimeRenderer.js.map +1 -1
- package/dist/rendering/production-runtime/ProductionWebGL2Renderer.d.ts +10 -0
- package/dist/rendering/production-runtime/ProductionWebGL2Renderer.d.ts.map +1 -1
- package/dist/rendering/production-runtime/ProductionWebGL2Renderer.js +21 -2
- package/dist/rendering/production-runtime/ProductionWebGL2Renderer.js.map +1 -1
- package/dist/rendering/production-runtime/ProductionWebGPURenderer.d.ts.map +1 -1
- package/dist/rendering/production-runtime/ProductionWebGPURenderer.js +4 -1
- package/dist/rendering/production-runtime/ProductionWebGPURenderer.js.map +1 -1
- package/dist/rendering/webgpu-device-entry.d.ts +25 -0
- package/dist/rendering/webgpu-device-entry.d.ts.map +1 -0
- package/dist/rendering/webgpu-device-entry.js +24 -0
- package/dist/rendering/webgpu-device-entry.js.map +1 -0
- package/dist/rendering/webgpu.d.ts +25 -0
- package/dist/rendering/webgpu.d.ts.map +1 -0
- package/dist/rendering/webgpu.js +24 -0
- package/dist/rendering/webgpu.js.map +1 -0
- package/dist/scene/MathTypes.d.ts +1 -0
- package/dist/scene/MathTypes.d.ts.map +1 -1
- package/dist/scene/MathTypes.js +3 -0
- package/dist/scene/MathTypes.js.map +1 -1
- package/dist/scene/Renderable.d.ts +6 -0
- package/dist/scene/Renderable.d.ts.map +1 -1
- package/dist/scene/Renderable.js +8 -2
- package/dist/scene/Renderable.js.map +1 -1
- package/dist/scripting/index.d.ts +0 -16
- package/dist/scripting/index.d.ts.map +1 -1
- package/dist/scripting/index.js +0 -8
- package/dist/scripting/index.js.map +1 -1
- package/dist/workflows/production-runtime/ProductionExampleRuntime.d.ts +2 -2
- package/dist/workflows/production-runtime/ProductionExampleRuntime.d.ts.map +1 -1
- package/dist/workflows/production-runtime/ProductionExampleRuntime.js +2 -2
- package/dist/workflows/production-runtime/ProductionExampleRuntime.js.map +1 -1
- package/package.json +243 -127
- package/templates/cinematic-scene/node_modules/.vite/deps/_metadata.json +8 -0
- package/templates/cinematic-scene/node_modules/.vite/deps/package.json +3 -0
- package/templates/cinematic-scene/package.json +1 -1
- package/templates/cinematic-scene/test-results/.last-run.json +6 -0
- package/templates/cinematic-scene/test-results/route-health-Aura3D-cinematic-scene-reaches-ready-state/error-context.md +64 -0
- package/templates/mini-game/README.md +3 -2
- package/templates/mini-game/package.json +1 -1
- package/templates/mini-game/src/aura-assets.ts +1 -1
- package/templates/mini-game/src/main.ts +69 -141
- package/templates/product-viewer/README.md +7 -5
- package/templates/product-viewer/index.html +1 -1
- package/templates/product-viewer/node_modules/.vite/deps/_metadata.json +8 -0
- package/templates/product-viewer/node_modules/.vite/deps/package.json +3 -0
- package/templates/product-viewer/package.json +1 -1
- package/templates/product-viewer/src/aura-assets.ts +1 -1
- package/templates/product-viewer/src/main.ts +29 -23
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
const defaultRapierModule = await import("@dimforge/rapier3d-compat");
|
|
2
|
+
const defaultRapierInit = defaultRapierModule.init;
|
|
3
|
+
if (defaultRapierInit)
|
|
4
|
+
await defaultRapierInit({});
|
|
5
|
+
function finite(value, label) {
|
|
6
|
+
if (!Number.isFinite(value))
|
|
7
|
+
throw new TypeError(`${label} must be finite.`);
|
|
8
|
+
return value;
|
|
9
|
+
}
|
|
10
|
+
function vec(value, label) {
|
|
11
|
+
return { x: finite(value[0], `${label}[0]`), y: finite(value[1], `${label}[1]`), z: finite(value[2], `${label}[2]`) };
|
|
12
|
+
}
|
|
13
|
+
export class RapierBodyHandle {
|
|
14
|
+
#body;
|
|
15
|
+
#world;
|
|
16
|
+
constructor(world, body) { this.#world = world; this.#body = body; }
|
|
17
|
+
get id() { return this.#body.handle; }
|
|
18
|
+
position() { const p = this.#body.translation(); return [p.x, p.y, p.z]; }
|
|
19
|
+
velocity() { const p = this.#body.linvel(); return [p.x, p.y, p.z]; }
|
|
20
|
+
sleeping() { return this.#body.isSleeping(); }
|
|
21
|
+
applyForce(force) { this.#body.addForce(vec(force, "force"), true); return this; }
|
|
22
|
+
applyImpulse(impulse) { this.#body.applyImpulse(vec(impulse, "impulse"), true); return this; }
|
|
23
|
+
setVelocity(velocity) { this.#body.setLinvel(vec(velocity, "velocity"), true); return this; }
|
|
24
|
+
setPosition(position) { this.#body.setTranslation(vec(position, "position"), true); return this; }
|
|
25
|
+
wake() { this.#body.wakeUp(); return this; }
|
|
26
|
+
sleep() { this.#body.sleep(); return this; }
|
|
27
|
+
remove() { this.#world.removeBody(this); }
|
|
28
|
+
/** Stable typed escape hatch. The caller does not own or free this object. */
|
|
29
|
+
unsafeRapierBody() { return this.#body; }
|
|
30
|
+
/** The first attached collider, retained for the one-shape convenience API. */
|
|
31
|
+
unsafeRapierCollider() {
|
|
32
|
+
const collider = this.#body.collider(0);
|
|
33
|
+
if (!collider)
|
|
34
|
+
throw new Error("Rapier body has no collider.");
|
|
35
|
+
return collider;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export class RapierColliderHandle {
|
|
39
|
+
#collider;
|
|
40
|
+
#world;
|
|
41
|
+
constructor(world, collider) { this.#world = world; this.#collider = collider; }
|
|
42
|
+
get id() { return this.#collider.handle; }
|
|
43
|
+
remove() { this.#world.removeCollider(this); }
|
|
44
|
+
/** Stable typed escape hatch. The adapter owns and frees this object. */
|
|
45
|
+
unsafeRapierCollider() { return this.#collider; }
|
|
46
|
+
}
|
|
47
|
+
export class RapierJointHandle {
|
|
48
|
+
#joint;
|
|
49
|
+
#world;
|
|
50
|
+
#module;
|
|
51
|
+
constructor(world, joint, module) { this.#world = world; this.#joint = joint; this.#module = module; }
|
|
52
|
+
get id() { return this.#joint.handle; }
|
|
53
|
+
remove() { this.#world.removeJoint(this); }
|
|
54
|
+
configureMotor(speed, maxTorque) {
|
|
55
|
+
const joint = this.#joint;
|
|
56
|
+
joint.configureMotorModel(this.#module.MotorModel.ForceBased);
|
|
57
|
+
joint.setMotorMaxForce(finite(maxTorque, "maximum motor torque"));
|
|
58
|
+
joint.configureMotorVelocity(finite(speed, "motor speed"), 1);
|
|
59
|
+
}
|
|
60
|
+
/** Stable typed escape hatch. The adapter owns and frees this object. */
|
|
61
|
+
unsafeRapierJoint() { return this.#joint; }
|
|
62
|
+
}
|
|
63
|
+
export class RapierCharacterControllerHandle {
|
|
64
|
+
#world;
|
|
65
|
+
raw;
|
|
66
|
+
constructor(world, raw) { this.#world = world; this.raw = raw; }
|
|
67
|
+
enableAutostep(maxHeight, minWidth, includeDynamicBodies = false) { this.raw.enableAutostep(maxHeight, minWidth, includeDynamicBodies); return this; }
|
|
68
|
+
enableSnapToGround(distance) { this.raw.enableSnapToGround(distance); return this; }
|
|
69
|
+
setMaxSlopeClimbAngle(radians) { this.raw.setMaxSlopeClimbAngle(radians); return this; }
|
|
70
|
+
move(character, requested) {
|
|
71
|
+
const desired = vec(requested, "character movement");
|
|
72
|
+
this.raw.computeColliderMovement(character.unsafeRapierCollider(), desired);
|
|
73
|
+
const movement = this.raw.computedMovement();
|
|
74
|
+
const body = character.unsafeRapierCollider().parent();
|
|
75
|
+
if (!body)
|
|
76
|
+
throw new Error("Character collider must be attached to a rigid body.");
|
|
77
|
+
const current = body.translation();
|
|
78
|
+
const next = { x: current.x + movement.x, y: current.y + movement.y, z: current.z + movement.z };
|
|
79
|
+
body.setNextKinematicTranslation(next);
|
|
80
|
+
return {
|
|
81
|
+
requested: [...requested],
|
|
82
|
+
applied: [movement.x, movement.y, movement.z],
|
|
83
|
+
grounded: this.raw.computedGrounded(),
|
|
84
|
+
collisions: this.raw.numComputedCollisions(),
|
|
85
|
+
nextPosition: [next.x, next.y, next.z]
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
dispose() { this.#world.removeCharacterController(this); }
|
|
89
|
+
}
|
|
90
|
+
export class RapierVehicleControllerHandle {
|
|
91
|
+
#world;
|
|
92
|
+
raw;
|
|
93
|
+
constructor(world, raw) { this.#world = world; this.raw = raw; }
|
|
94
|
+
addWheel(connection, direction, axle, restLength, radius) {
|
|
95
|
+
this.raw.addWheel(vec(connection, "connection"), vec(direction, "direction"), vec(axle, "axle"), finite(restLength, "restLength"), finite(radius, "radius"));
|
|
96
|
+
return this;
|
|
97
|
+
}
|
|
98
|
+
update(dt) { this.raw.updateVehicle(finite(dt, "dt")); }
|
|
99
|
+
dispose() { this.#world.removeVehicleController(this); }
|
|
100
|
+
}
|
|
101
|
+
export class RapierPhysicsWorld {
|
|
102
|
+
#module;
|
|
103
|
+
#world;
|
|
104
|
+
#bodies = new Map();
|
|
105
|
+
#colliders = new Map();
|
|
106
|
+
#joints = new Map();
|
|
107
|
+
#characters = new Set();
|
|
108
|
+
#vehicles = new Set();
|
|
109
|
+
#disposed = false;
|
|
110
|
+
constructor(module, gravity) { this.#module = module; this.#world = new module.World(vec(gravity, "gravity")); }
|
|
111
|
+
get disposed() { return this.#disposed; }
|
|
112
|
+
createRigidBody(spec = {}) {
|
|
113
|
+
this.#assertAlive();
|
|
114
|
+
const R = this.#module;
|
|
115
|
+
const descriptor = spec.type === "fixed" ? R.RigidBodyDesc.fixed() : spec.type === "kinematic-position" ? R.RigidBodyDesc.kinematicPositionBased() : spec.type === "kinematic-velocity" ? R.RigidBodyDesc.kinematicVelocityBased() : R.RigidBodyDesc.dynamic();
|
|
116
|
+
if (spec.position)
|
|
117
|
+
descriptor.setTranslation(...spec.position.map((value, index) => finite(value, `position[${index}]`)));
|
|
118
|
+
if (spec.rotation)
|
|
119
|
+
descriptor.setRotation({ x: finite(spec.rotation[0], "rotation[0]"), y: finite(spec.rotation[1], "rotation[1]"), z: finite(spec.rotation[2], "rotation[2]"), w: finite(spec.rotation[3], "rotation[3]") });
|
|
120
|
+
if (spec.linearVelocity)
|
|
121
|
+
descriptor.setLinvel(...spec.linearVelocity.map((value, index) => finite(value, `linearVelocity[${index}]`)));
|
|
122
|
+
if (spec.angularVelocity)
|
|
123
|
+
descriptor.setAngvel(vec(spec.angularVelocity, "angularVelocity"));
|
|
124
|
+
if (spec.linearDamping !== undefined)
|
|
125
|
+
descriptor.setLinearDamping(finite(spec.linearDamping, "linearDamping"));
|
|
126
|
+
if (spec.angularDamping !== undefined)
|
|
127
|
+
descriptor.setAngularDamping(finite(spec.angularDamping, "angularDamping"));
|
|
128
|
+
if (spec.ccd !== undefined)
|
|
129
|
+
descriptor.setCcdEnabled(spec.ccd);
|
|
130
|
+
if (spec.canSleep !== undefined)
|
|
131
|
+
descriptor.setCanSleep(spec.canSleep);
|
|
132
|
+
if (spec.mass !== undefined && spec.principalAngularInertia) {
|
|
133
|
+
descriptor.setAdditionalMassProperties(finite(spec.mass, "mass"), { x: 0, y: 0, z: 0 }, vec(spec.principalAngularInertia, "principal angular inertia"), { x: 0, y: 0, z: 0, w: 1 });
|
|
134
|
+
}
|
|
135
|
+
else if (spec.mass !== undefined) {
|
|
136
|
+
descriptor.setAdditionalMass(finite(spec.mass, "mass"));
|
|
137
|
+
}
|
|
138
|
+
const body = this.#world.createRigidBody(descriptor);
|
|
139
|
+
const handle = new RapierBodyHandle(this, body);
|
|
140
|
+
this.#bodies.set(body.handle, handle);
|
|
141
|
+
return handle;
|
|
142
|
+
}
|
|
143
|
+
createCollider(body, spec) {
|
|
144
|
+
this.#assertAlive();
|
|
145
|
+
const R = this.#module;
|
|
146
|
+
const shape = spec.shape;
|
|
147
|
+
let collider;
|
|
148
|
+
if (shape.kind === "box")
|
|
149
|
+
collider = R.ColliderDesc.cuboid(...shape.halfExtents);
|
|
150
|
+
else if (shape.kind === "sphere")
|
|
151
|
+
collider = R.ColliderDesc.ball(shape.radius);
|
|
152
|
+
else if (shape.kind === "capsule")
|
|
153
|
+
collider = R.ColliderDesc.capsule(shape.halfHeight, shape.radius);
|
|
154
|
+
else if (shape.kind === "plane") {
|
|
155
|
+
collider = new R.ColliderDesc(new R.HalfSpace(vec(shape.normal, "plane normal")));
|
|
156
|
+
collider.setTranslation(shape.normal[0] * shape.constant, shape.normal[1] * shape.constant, shape.normal[2] * shape.constant);
|
|
157
|
+
}
|
|
158
|
+
else if (shape.kind === "mesh") {
|
|
159
|
+
collider = R.ColliderDesc.trimesh(flattenVertices(shape.vertices), new Uint32Array(shape.indices));
|
|
160
|
+
}
|
|
161
|
+
else if (shape.kind === "convex-hull") {
|
|
162
|
+
const hull = R.ColliderDesc.convexHull(flattenVertices(shape.vertices));
|
|
163
|
+
if (!hull)
|
|
164
|
+
throw new Error("Rapier could not construct the requested convex hull.");
|
|
165
|
+
collider = hull;
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
collider = R.ColliderDesc.heightfield(shape.rows - 1, shape.columns - 1, new Float32Array(shape.heights), { x: shape.cellSize * (shape.columns - 1), y: 1, z: shape.cellSize * (shape.rows - 1) });
|
|
169
|
+
}
|
|
170
|
+
if (spec.density !== undefined)
|
|
171
|
+
collider.setDensity(finite(spec.density, "density"));
|
|
172
|
+
if (spec.friction !== undefined)
|
|
173
|
+
collider.setFriction(finite(spec.friction, "friction"));
|
|
174
|
+
if (spec.restitution !== undefined)
|
|
175
|
+
collider.setRestitution(finite(spec.restitution, "restitution"));
|
|
176
|
+
if (spec.sensor !== undefined)
|
|
177
|
+
collider.setSensor(spec.sensor);
|
|
178
|
+
if (spec.collisionGroups !== undefined)
|
|
179
|
+
collider.setCollisionGroups(spec.collisionGroups >>> 0);
|
|
180
|
+
collider.setFrictionCombineRule(R.CoefficientCombineRule.Multiply);
|
|
181
|
+
collider.setRestitutionCombineRule(R.CoefficientCombineRule.Max);
|
|
182
|
+
const rawCollider = this.#world.createCollider(collider, body.unsafeRapierBody());
|
|
183
|
+
// Rapier applies descriptor-level additional mass at the next mass-property
|
|
184
|
+
// recomputation. Do that before the first step so initial velocity, force, and
|
|
185
|
+
// inertia never run for one frame against a zero-mass dynamic body.
|
|
186
|
+
body.unsafeRapierBody().recomputeMassPropertiesFromColliders();
|
|
187
|
+
const handle = new RapierColliderHandle(this, rawCollider);
|
|
188
|
+
this.#colliders.set(rawCollider.handle, handle);
|
|
189
|
+
return handle;
|
|
190
|
+
}
|
|
191
|
+
createBody(spec) {
|
|
192
|
+
const body = this.createRigidBody(spec);
|
|
193
|
+
this.createCollider(body, spec);
|
|
194
|
+
return body;
|
|
195
|
+
}
|
|
196
|
+
removeBody(handle) {
|
|
197
|
+
this.#assertAlive();
|
|
198
|
+
const raw = handle.unsafeRapierBody();
|
|
199
|
+
for (let index = 0; index < raw.numColliders(); index += 1)
|
|
200
|
+
this.#colliders.delete(raw.collider(index).handle);
|
|
201
|
+
this.#world.removeRigidBody(raw);
|
|
202
|
+
this.#bodies.delete(raw.handle);
|
|
203
|
+
}
|
|
204
|
+
removeCollider(handle) { this.#assertAlive(); const raw = handle.unsafeRapierCollider(); this.#world.removeCollider(raw, true); this.#colliders.delete(raw.handle); }
|
|
205
|
+
createJoint(spec, a, b) {
|
|
206
|
+
this.#assertAlive();
|
|
207
|
+
const R = this.#module;
|
|
208
|
+
const anchorA = vec(spec.localAnchorA, "joint anchor A");
|
|
209
|
+
const anchorB = vec(spec.localAnchorB, "joint anchor B");
|
|
210
|
+
const axis = vec(spec.axis, "joint axis");
|
|
211
|
+
let data;
|
|
212
|
+
if (spec.type === "fixed")
|
|
213
|
+
data = R.JointData.fixed(anchorA, { x: 0, y: 0, z: 0, w: 1 }, anchorB, { x: 0, y: 0, z: 0, w: 1 });
|
|
214
|
+
else if (spec.type === "slider")
|
|
215
|
+
data = R.JointData.prismatic(anchorA, anchorB, axis);
|
|
216
|
+
else if (spec.type === "spring") {
|
|
217
|
+
// Aura exposes normalized game-facing stiffness/damping; Rapier expects physical
|
|
218
|
+
// coefficients. The adapter owns this unit conversion so public descriptors remain
|
|
219
|
+
// backend-neutral.
|
|
220
|
+
data = R.JointData.spring(spec.restLength, spec.stiffness * 100, spec.damping * 10, anchorA, anchorB);
|
|
221
|
+
}
|
|
222
|
+
else if (spec.type === "ball-socket")
|
|
223
|
+
data = R.JointData.spherical(anchorA, anchorB);
|
|
224
|
+
else
|
|
225
|
+
data = R.JointData.revolute(anchorA, anchorB, axis);
|
|
226
|
+
const raw = this.#world.createImpulseJoint(data, a.unsafeRapierBody(), b.unsafeRapierBody(), true);
|
|
227
|
+
const unit = raw;
|
|
228
|
+
if (spec.limits && "setLimits" in unit)
|
|
229
|
+
unit.setLimits(spec.limits[0], spec.limits[1]);
|
|
230
|
+
const handle = new RapierJointHandle(this, raw, R);
|
|
231
|
+
if (spec.type === "motorised-hinge")
|
|
232
|
+
handle.configureMotor(spec.motorSpeed, spec.maxMotorTorque);
|
|
233
|
+
this.#joints.set(raw.handle, handle);
|
|
234
|
+
return handle;
|
|
235
|
+
}
|
|
236
|
+
removeJoint(handle) { this.#assertAlive(); const raw = handle.unsafeRapierJoint(); this.#world.removeImpulseJoint(raw, true); this.#joints.delete(raw.handle); }
|
|
237
|
+
createFixedJoint(a, b) {
|
|
238
|
+
this.#assertAlive();
|
|
239
|
+
return this.#world.createImpulseJoint(this.#module.JointData.fixed({ x: 0, y: 0, z: 0 }, { x: 0, y: 0, z: 0, w: 1 }, { x: 0, y: 0, z: 0 }, { x: 0, y: 0, z: 0, w: 1 }), a.unsafeRapierBody(), b.unsafeRapierBody(), true);
|
|
240
|
+
}
|
|
241
|
+
createCharacterController(offset = 0.01) { this.#assertAlive(); const value = new RapierCharacterControllerHandle(this, this.#world.createCharacterController(offset)); this.#characters.add(value); return value; }
|
|
242
|
+
removeCharacterController(value) { if (!this.#characters.delete(value))
|
|
243
|
+
return; this.#world.removeCharacterController(value.raw); }
|
|
244
|
+
createVehicleController(chassis) { this.#assertAlive(); const value = new RapierVehicleControllerHandle(this, this.#world.createVehicleController(chassis.unsafeRapierBody())); this.#vehicles.add(value); return value; }
|
|
245
|
+
removeVehicleController(value) { if (!this.#vehicles.delete(value))
|
|
246
|
+
return; this.#world.removeVehicleController(value.raw); }
|
|
247
|
+
raycast(origin, direction, maxDistance = Number.POSITIVE_INFINITY) {
|
|
248
|
+
this.#assertAlive();
|
|
249
|
+
const ray = new this.#module.Ray(vec(origin, "origin"), vec(direction, "direction"));
|
|
250
|
+
const hit = this.#world.castRay(ray, maxDistance, true);
|
|
251
|
+
if (!hit)
|
|
252
|
+
return undefined;
|
|
253
|
+
const collider = this.#world.getCollider(hit.collider.handle);
|
|
254
|
+
const rawBody = collider?.parent();
|
|
255
|
+
if (!rawBody)
|
|
256
|
+
return undefined;
|
|
257
|
+
const body = this.#bodies.get(rawBody.handle);
|
|
258
|
+
if (!body)
|
|
259
|
+
return undefined;
|
|
260
|
+
const point = ray.pointAt(hit.timeOfImpact);
|
|
261
|
+
return { body, colliderHandle: hit.collider.handle, timeOfImpact: hit.timeOfImpact, point: [point.x, point.y, point.z] };
|
|
262
|
+
}
|
|
263
|
+
step(dt = 1 / 60) { this.#assertAlive(); this.#world.timestep = finite(dt, "dt"); this.#world.step(); }
|
|
264
|
+
setGravity(gravity) { this.#assertAlive(); this.#world.gravity = vec(gravity, "gravity"); }
|
|
265
|
+
bodies() { return [...this.#bodies.values()]; }
|
|
266
|
+
/** Stable typed escape hatch. The adapter owns and frees the returned world. */
|
|
267
|
+
unsafeRapierWorld() { this.#assertAlive(); return this.#world; }
|
|
268
|
+
dispose() {
|
|
269
|
+
if (this.#disposed)
|
|
270
|
+
return;
|
|
271
|
+
for (const value of [...this.#vehicles])
|
|
272
|
+
this.removeVehicleController(value);
|
|
273
|
+
for (const value of [...this.#characters])
|
|
274
|
+
this.removeCharacterController(value);
|
|
275
|
+
this.#joints.clear();
|
|
276
|
+
this.#colliders.clear();
|
|
277
|
+
this.#bodies.clear();
|
|
278
|
+
this.#world.free();
|
|
279
|
+
this.#disposed = true;
|
|
280
|
+
}
|
|
281
|
+
#assertAlive() { if (this.#disposed)
|
|
282
|
+
throw new Error("RapierPhysicsWorld is disposed."); }
|
|
283
|
+
}
|
|
284
|
+
function flattenVertices(vertices) {
|
|
285
|
+
const flattened = new Float32Array(vertices.length * 3);
|
|
286
|
+
for (let index = 0; index < vertices.length; index += 1) {
|
|
287
|
+
const vertex = vertices[index];
|
|
288
|
+
flattened[index * 3] = finite(vertex[0], `vertex ${index}[0]`);
|
|
289
|
+
flattened[index * 3 + 1] = finite(vertex[1], `vertex ${index}[1]`);
|
|
290
|
+
flattened[index * 3 + 2] = finite(vertex[2], `vertex ${index}[2]`);
|
|
291
|
+
}
|
|
292
|
+
return flattened;
|
|
293
|
+
}
|
|
294
|
+
export async function createRapierPhysics(options = {}) {
|
|
295
|
+
const module = await (options.moduleLoader ?? (() => import("@dimforge/rapier3d-compat")))();
|
|
296
|
+
// The official compat build exposes explicit async WASM initialization and
|
|
297
|
+
// avoids forcing each consuming bundler to configure a raw `.wasm` loader.
|
|
298
|
+
const explicitInit = module.init;
|
|
299
|
+
if (explicitInit)
|
|
300
|
+
await explicitInit({});
|
|
301
|
+
return new RapierPhysicsWorld(module, options.gravity ?? [0, -9.81, 0]);
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Synchronous construction after this ESM module's one-time top-level WASM initialization.
|
|
305
|
+
* This preserves the established `new PhysicsWorld()` ergonomics without hiding a second
|
|
306
|
+
* JavaScript solver behind the synchronous API.
|
|
307
|
+
*/
|
|
308
|
+
export function createRapierPhysicsSync(options = {}) {
|
|
309
|
+
return new RapierPhysicsWorld(defaultRapierModule, options.gravity ?? [0, -9.81, 0]);
|
|
310
|
+
}
|
|
311
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/physics-rapier/src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProductLighting.d.ts","sourceRoot":"","sources":["../../../../packages/product-studio/src/ProductLighting.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEnF,wBAAgB,2BAA2B,CAAC,MAAM,GAAE,qBAAyC,GAAG,qBAAqB,
|
|
1
|
+
{"version":3,"file":"ProductLighting.d.ts","sourceRoot":"","sources":["../../../../packages/product-studio/src/ProductLighting.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEnF,wBAAgB,2BAA2B,CAAC,MAAM,GAAE,qBAAyC,GAAG,qBAAqB,CA2BpH"}
|
|
@@ -2,11 +2,11 @@ import { DirectionalLight } from "../scene/index.js";
|
|
|
2
2
|
import { createLightingDefault } from "../rendering/index.js";
|
|
3
3
|
export function createProductLightingPreset(preset = "catalog-softbox") {
|
|
4
4
|
const base = createLightingDefault(preset === "inspection-bay" ? "interiorGallery" : preset === "hero-contrast" ? "gameNight" : "studioProduct");
|
|
5
|
-
const key = makeDirectionalLight("product-key-light", [1, 0.
|
|
6
|
-
const rim = makeDirectionalLight("product-rim-light", [0.
|
|
5
|
+
const key = makeDirectionalLight("product-key-light", preset === "inspection-bay" ? [1, 0.62, 0.32] : preset === "hero-contrast" ? [0.72, 0.86, 1] : [1, 0.96, 0.9], preset === "hero-contrast" ? 4.2 : preset === "inspection-bay" ? 2.15 : 3.1, preset === "inspection-bay" ? [-0.62, -0.54, -0.56] : [0.42, -0.72, -0.55], true);
|
|
6
|
+
const rim = makeDirectionalLight("product-rim-light", preset === "inspection-bay" ? [0.28, 0.66, 1] : preset === "hero-contrast" ? [1, 0.36, 0.16] : [0.72, 0.82, 1], preset === "inspection-bay" ? 1.35 : preset === "hero-contrast" ? 1.5 : 0.9, [-0.56, -0.28, 0.78], false);
|
|
7
7
|
return {
|
|
8
8
|
preset,
|
|
9
|
-
environmentLighting: base.environmentLighting,
|
|
9
|
+
environmentLighting: productEnvironment(preset, base.environmentLighting),
|
|
10
10
|
postprocess: base.postprocess,
|
|
11
11
|
shadow: {
|
|
12
12
|
...base.shadow,
|
|
@@ -16,6 +16,37 @@ export function createProductLightingPreset(preset = "catalog-softbox") {
|
|
|
16
16
|
lights: [key, rim]
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
|
+
function productEnvironment(preset, fallback) {
|
|
20
|
+
if (preset === "inspection-bay") {
|
|
21
|
+
return {
|
|
22
|
+
color: [1, 0.62, 0.34],
|
|
23
|
+
intensity: 0.5,
|
|
24
|
+
proceduralMap: {
|
|
25
|
+
skyColor: [0.42, 0.68, 1],
|
|
26
|
+
horizonColor: [1, 0.52, 0.24],
|
|
27
|
+
groundColor: [0.045, 0.055, 0.075],
|
|
28
|
+
specularColor: [1, 0.74, 0.42],
|
|
29
|
+
intensity: 0.62,
|
|
30
|
+
specularIntensity: 0.78
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
if (preset === "hero-contrast") {
|
|
35
|
+
return {
|
|
36
|
+
color: [0.38, 0.56, 0.92],
|
|
37
|
+
intensity: 0.36,
|
|
38
|
+
proceduralMap: {
|
|
39
|
+
skyColor: [0.12, 0.24, 0.5],
|
|
40
|
+
horizonColor: [0.84, 0.28, 0.12],
|
|
41
|
+
groundColor: [0.012, 0.018, 0.035],
|
|
42
|
+
specularColor: [0.72, 0.88, 1],
|
|
43
|
+
intensity: 0.48,
|
|
44
|
+
specularIntensity: 0.86
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
return fallback;
|
|
49
|
+
}
|
|
19
50
|
function makeDirectionalLight(name, color, intensity, direction, castsShadow) {
|
|
20
51
|
const source = new DirectionalLight(name);
|
|
21
52
|
source.color = [...color];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProductLighting.js","sourceRoot":"","sources":["../../../../packages/product-studio/src/ProductLighting.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAI1D,MAAM,UAAU,2BAA2B,CAAC,SAAgC,iBAAiB;IAC3F,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,KAAK,gBAAgB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,KAAK,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;IACjJ,MAAM,GAAG,GAAG,oBAAoB,
|
|
1
|
+
{"version":3,"file":"ProductLighting.js","sourceRoot":"","sources":["../../../../packages/product-studio/src/ProductLighting.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export type ArchitectureLightingPreset = "sunrise" | "morning" | "noon" | "afternoon" | "golden-hour" | "sunset" | "dusk" | "night";
|
|
2
|
+
export type ArchitectureLightKind = "point" | "spot" | "area";
|
|
3
|
+
export type ArchitectureRgb = readonly [number, number, number];
|
|
4
|
+
export type ArchitectureVector3 = readonly [number, number, number];
|
|
5
|
+
export interface ArchitecturalLightingOptions {
|
|
6
|
+
readonly preset?: ArchitectureLightingPreset;
|
|
7
|
+
readonly interiorLightsEnabled?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface ArchitectureInteriorLight {
|
|
10
|
+
readonly id: string;
|
|
11
|
+
readonly type: ArchitectureLightKind;
|
|
12
|
+
readonly position: ArchitectureVector3;
|
|
13
|
+
readonly color: ArchitectureRgb;
|
|
14
|
+
readonly intensityLumens: number;
|
|
15
|
+
readonly rangeMeters: number;
|
|
16
|
+
readonly enabled: boolean;
|
|
17
|
+
readonly temperatureKelvin: number;
|
|
18
|
+
}
|
|
19
|
+
export interface ArchitecturalLightingState {
|
|
20
|
+
readonly preset: ArchitectureLightingPreset;
|
|
21
|
+
readonly presetLabel: string;
|
|
22
|
+
readonly timeOfDayHours: number;
|
|
23
|
+
readonly sunDirection: ArchitectureVector3;
|
|
24
|
+
readonly sunColor: ArchitectureRgb;
|
|
25
|
+
readonly skyColor: ArchitectureRgb;
|
|
26
|
+
readonly sunIntensity: number;
|
|
27
|
+
readonly ambientIntensity: number;
|
|
28
|
+
readonly interiorLightsEnabled: boolean;
|
|
29
|
+
readonly interiorLights: readonly ArchitectureInteriorLight[];
|
|
30
|
+
readonly activeInteriorLightCount: number;
|
|
31
|
+
readonly kelvinRange: readonly [number, number];
|
|
32
|
+
readonly hash: string;
|
|
33
|
+
}
|
|
34
|
+
export declare function createArchitecturalLightingState(options?: ArchitecturalLightingOptions): ArchitecturalLightingState;
|
|
35
|
+
//# sourceMappingURL=ArchitecturalLighting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArchitecturalLighting.d.ts","sourceRoot":"","sources":["../../../../packages/rendering/src/ArchitecturalLighting.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,0BAA0B,GAClC,SAAS,GACT,SAAS,GACT,MAAM,GACN,WAAW,GACX,aAAa,GACb,QAAQ,GACR,MAAM,GACN,OAAO,CAAC;AAEZ,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAC9D,MAAM,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAChE,MAAM,MAAM,mBAAmB,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAEpE,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,0BAA0B,CAAC;IAC7C,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CAC1C;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAC;IAC5C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IACxC,QAAQ,CAAC,cAAc,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAC9D,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAkGD,wBAAgB,gCAAgC,CAAC,OAAO,GAAE,4BAAiC,GAAG,0BAA0B,CA2BvH"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
const presetDescriptors = {
|
|
2
|
+
sunrise: {
|
|
3
|
+
label: "Sunrise",
|
|
4
|
+
timeOfDayHours: 6,
|
|
5
|
+
sunIntensity: 1.5,
|
|
6
|
+
sunColor: [1, 0.7, 0.4],
|
|
7
|
+
skyColor: [0.95, 0.7, 0.6],
|
|
8
|
+
ambientIntensity: 0.15,
|
|
9
|
+
interiorLightsOn: true
|
|
10
|
+
},
|
|
11
|
+
morning: {
|
|
12
|
+
label: "Morning",
|
|
13
|
+
timeOfDayHours: 9,
|
|
14
|
+
sunIntensity: 2.8,
|
|
15
|
+
sunColor: [1, 0.95, 0.88],
|
|
16
|
+
skyColor: [0.6, 0.85, 0.95],
|
|
17
|
+
ambientIntensity: 0.25,
|
|
18
|
+
interiorLightsOn: false
|
|
19
|
+
},
|
|
20
|
+
noon: {
|
|
21
|
+
label: "Noon",
|
|
22
|
+
timeOfDayHours: 12,
|
|
23
|
+
sunIntensity: 4.5,
|
|
24
|
+
sunColor: [1, 0.98, 0.95],
|
|
25
|
+
skyColor: [0.53, 0.81, 0.92],
|
|
26
|
+
ambientIntensity: 0.35,
|
|
27
|
+
interiorLightsOn: false
|
|
28
|
+
},
|
|
29
|
+
afternoon: {
|
|
30
|
+
label: "Afternoon",
|
|
31
|
+
timeOfDayHours: 15,
|
|
32
|
+
sunIntensity: 3.2,
|
|
33
|
+
sunColor: [1, 0.94, 0.85],
|
|
34
|
+
skyColor: [0.58, 0.83, 0.93],
|
|
35
|
+
ambientIntensity: 0.28,
|
|
36
|
+
interiorLightsOn: false
|
|
37
|
+
},
|
|
38
|
+
"golden-hour": {
|
|
39
|
+
label: "Golden Hour",
|
|
40
|
+
timeOfDayHours: 18,
|
|
41
|
+
sunIntensity: 2,
|
|
42
|
+
sunColor: [1, 0.75, 0.5],
|
|
43
|
+
skyColor: [0.95, 0.75, 0.6],
|
|
44
|
+
ambientIntensity: 0.2,
|
|
45
|
+
interiorLightsOn: true
|
|
46
|
+
},
|
|
47
|
+
sunset: {
|
|
48
|
+
label: "Sunset",
|
|
49
|
+
timeOfDayHours: 19.5,
|
|
50
|
+
sunIntensity: 1.2,
|
|
51
|
+
sunColor: [1, 0.5, 0.3],
|
|
52
|
+
skyColor: [0.9, 0.5, 0.4],
|
|
53
|
+
ambientIntensity: 0.15,
|
|
54
|
+
interiorLightsOn: true
|
|
55
|
+
},
|
|
56
|
+
dusk: {
|
|
57
|
+
label: "Dusk",
|
|
58
|
+
timeOfDayHours: 20.5,
|
|
59
|
+
sunIntensity: 0.3,
|
|
60
|
+
sunColor: [0.7, 0.6, 0.9],
|
|
61
|
+
skyColor: [0.25, 0.35, 0.65],
|
|
62
|
+
ambientIntensity: 0.08,
|
|
63
|
+
interiorLightsOn: true
|
|
64
|
+
},
|
|
65
|
+
night: {
|
|
66
|
+
label: "Night",
|
|
67
|
+
timeOfDayHours: 23,
|
|
68
|
+
sunIntensity: 0.15,
|
|
69
|
+
sunColor: [0.7, 0.75, 0.9],
|
|
70
|
+
skyColor: [0.02, 0.03, 0.08],
|
|
71
|
+
ambientIntensity: 0.05,
|
|
72
|
+
interiorLightsOn: true
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
const interiorLightDescriptors = [
|
|
76
|
+
{ id: "living-ceiling-1", type: "point", position: [0, 2.7, -2], intensityLumens: 800, rangeMeters: 5, temperatureKelvin: 3000 },
|
|
77
|
+
{ id: "living-ceiling-2", type: "point", position: [0, 2.7, 2], intensityLumens: 800, rangeMeters: 5, temperatureKelvin: 3000 },
|
|
78
|
+
{ id: "kitchen-task-1", type: "spot", position: [-3, 2.5, -1], intensityLumens: 1200, rangeMeters: 4, temperatureKelvin: 4000 },
|
|
79
|
+
{ id: "kitchen-task-2", type: "spot", position: [-3, 2.5, 1], intensityLumens: 1200, rangeMeters: 4, temperatureKelvin: 4000 },
|
|
80
|
+
{ id: "bedroom-ambient", type: "point", position: [4, 2.6, 0], intensityLumens: 600, rangeMeters: 6, temperatureKelvin: 2700 },
|
|
81
|
+
{ id: "study-desk", type: "spot", position: [3.5, 1.2, -2.5], intensityLumens: 400, rangeMeters: 2.5, temperatureKelvin: 4500 },
|
|
82
|
+
{ id: "hallway-1", type: "point", position: [0, 2.5, 5], intensityLumens: 500, rangeMeters: 4, temperatureKelvin: 3500 },
|
|
83
|
+
{ id: "hallway-2", type: "point", position: [0, 2.5, -5], intensityLumens: 500, rangeMeters: 4, temperatureKelvin: 3500 },
|
|
84
|
+
{ id: "bathroom-main", type: "area", position: [-4, 2.4, 3], intensityLumens: 900, rangeMeters: 3, temperatureKelvin: 5000 },
|
|
85
|
+
{ id: "accent-wall", type: "spot", position: [-5.5, 1.5, 0], intensityLumens: 300, rangeMeters: 3, temperatureKelvin: 3200 }
|
|
86
|
+
];
|
|
87
|
+
export function createArchitecturalLightingState(options = {}) {
|
|
88
|
+
const preset = options.preset ?? "noon";
|
|
89
|
+
const descriptor = presetDescriptors[preset];
|
|
90
|
+
const interiorLightsEnabled = options.interiorLightsEnabled ?? descriptor.interiorLightsOn;
|
|
91
|
+
const interiorLights = interiorLightDescriptors.map((light) => ({
|
|
92
|
+
...light,
|
|
93
|
+
color: kelvinToRgb(light.temperatureKelvin),
|
|
94
|
+
enabled: interiorLightsEnabled
|
|
95
|
+
}));
|
|
96
|
+
const enabledLights = interiorLights.filter((light) => light.enabled);
|
|
97
|
+
const kelvinValues = interiorLights.map((light) => light.temperatureKelvin);
|
|
98
|
+
const sunDirection = directionForTimeOfDay(descriptor.timeOfDayHours);
|
|
99
|
+
return {
|
|
100
|
+
preset,
|
|
101
|
+
presetLabel: descriptor.label,
|
|
102
|
+
timeOfDayHours: descriptor.timeOfDayHours,
|
|
103
|
+
sunDirection,
|
|
104
|
+
sunColor: descriptor.sunColor,
|
|
105
|
+
skyColor: descriptor.skyColor,
|
|
106
|
+
sunIntensity: descriptor.sunIntensity,
|
|
107
|
+
ambientIntensity: descriptor.ambientIntensity,
|
|
108
|
+
interiorLightsEnabled,
|
|
109
|
+
interiorLights,
|
|
110
|
+
activeInteriorLightCount: enabledLights.length,
|
|
111
|
+
kelvinRange: [Math.min(...kelvinValues), Math.max(...kelvinValues)],
|
|
112
|
+
hash: hashLighting(preset, sunDirection, descriptor, interiorLights)
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
function directionForTimeOfDay(timeOfDayHours) {
|
|
116
|
+
const hourAngle = (timeOfDayHours - 6) * 15;
|
|
117
|
+
const elevation = Math.sin(hourAngle * Math.PI / 180) * 60;
|
|
118
|
+
const azimuth = (hourAngle - 90) * Math.PI / 180;
|
|
119
|
+
const x = Math.cos(azimuth) * 50;
|
|
120
|
+
const y = Math.max(elevation, -10);
|
|
121
|
+
const z = Math.sin(azimuth) * 50;
|
|
122
|
+
const length = Math.hypot(x, y, z) || 1;
|
|
123
|
+
return [
|
|
124
|
+
Number((-x / length).toFixed(4)),
|
|
125
|
+
Number((-y / length).toFixed(4)),
|
|
126
|
+
Number((-z / length).toFixed(4))
|
|
127
|
+
];
|
|
128
|
+
}
|
|
129
|
+
function kelvinToRgb(kelvin) {
|
|
130
|
+
const temp = kelvin / 100;
|
|
131
|
+
const red = temp <= 66 ? 255 : clamp(329.698727446 * Math.pow(temp - 60, -0.1332047592), 0, 255);
|
|
132
|
+
const green = temp <= 66
|
|
133
|
+
? clamp(99.4708025861 * Math.log(temp) - 161.1195681661, 0, 255)
|
|
134
|
+
: clamp(288.1221695283 * Math.pow(temp - 60, -0.0755148492), 0, 255);
|
|
135
|
+
const blue = temp >= 66 ? 255 : temp <= 19 ? 0 : clamp(138.5177312231 * Math.log(temp - 10) - 305.0447927307, 0, 255);
|
|
136
|
+
return [roundColor(red / 255), roundColor(green / 255), roundColor(blue / 255)];
|
|
137
|
+
}
|
|
138
|
+
function hashLighting(preset, sunDirection, descriptor, lights) {
|
|
139
|
+
let hash = 0x811c9dc5;
|
|
140
|
+
for (const value of [
|
|
141
|
+
preset.length,
|
|
142
|
+
descriptor.timeOfDayHours,
|
|
143
|
+
descriptor.sunIntensity,
|
|
144
|
+
descriptor.ambientIntensity,
|
|
145
|
+
...sunDirection,
|
|
146
|
+
...lights.flatMap((light) => [light.intensityLumens, light.rangeMeters, light.temperatureKelvin, light.enabled ? 1 : 0])
|
|
147
|
+
]) {
|
|
148
|
+
const scaled = Math.round(value * 10_000);
|
|
149
|
+
hash ^= scaled & 0xff;
|
|
150
|
+
hash = Math.imul(hash, 0x01000193) >>> 0;
|
|
151
|
+
hash ^= (scaled >>> 8) & 0xff;
|
|
152
|
+
hash = Math.imul(hash, 0x01000193) >>> 0;
|
|
153
|
+
}
|
|
154
|
+
return hash.toString(16).padStart(8, "0");
|
|
155
|
+
}
|
|
156
|
+
function roundColor(value) {
|
|
157
|
+
return Number(clamp(value, 0, 1).toFixed(4));
|
|
158
|
+
}
|
|
159
|
+
function clamp(value, min, max) {
|
|
160
|
+
return Math.max(min, Math.min(max, value));
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=ArchitecturalLighting.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ArchitecturalLighting.js","sourceRoot":"","sources":["../../../../packages/rendering/src/ArchitecturalLighting.ts"],"names":[],"mappings":"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"}
|