@aura3d/engine 4.3.6 → 4.5.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 +1 -1
- package/dist/animation/AnimationTrack.d.ts.map +1 -1
- package/dist/animation/AnimationTrack.js +3 -1
- package/dist/animation/AnimationTrack.js.map +1 -1
- package/dist/animation/pose/PoseMixer.d.ts.map +1 -1
- package/dist/animation/pose/PoseMixer.js +3 -0
- package/dist/animation/pose/PoseMixer.js.map +1 -1
- package/dist/assets/GLTFAnimationRuntime.d.ts.map +1 -1
- package/dist/assets/GLTFAnimationRuntime.js +11 -4
- package/dist/assets/GLTFAnimationRuntime.js.map +1 -1
- package/dist/assets/GLTFLoader.d.ts +2 -0
- package/dist/assets/GLTFLoader.d.ts.map +1 -1
- package/dist/assets/GLTFLoader.js +17 -3
- package/dist/assets/GLTFLoader.js.map +1 -1
- package/dist/aura3d-cli/cli-help.d.ts.map +1 -1
- package/dist/aura3d-cli/cli-help.js +3 -0
- package/dist/aura3d-cli/cli-help.js.map +1 -1
- package/dist/aura3d-cli/cli.d.ts.map +1 -1
- package/dist/aura3d-cli/cli.js +26 -1
- package/dist/aura3d-cli/cli.js.map +1 -1
- package/dist/aura3d-cli/deploy-browser-check.d.ts +78 -0
- package/dist/aura3d-cli/deploy-browser-check.d.ts.map +1 -0
- package/dist/aura3d-cli/deploy-browser-check.js +167 -0
- package/dist/aura3d-cli/deploy-browser-check.js.map +1 -0
- package/dist/aura3d-cli/migrate-three/emit.d.ts.map +1 -1
- package/dist/aura3d-cli/migrate-three/emit.js +109 -29
- package/dist/aura3d-cli/migrate-three/emit.js.map +1 -1
- package/dist/aura3d-cli/migrate-three/mappings.d.ts +15 -0
- package/dist/aura3d-cli/migrate-three/mappings.d.ts.map +1 -1
- package/dist/aura3d-cli/migrate-three/mappings.js +70 -60
- package/dist/aura3d-cli/migrate-three/mappings.js.map +1 -1
- package/dist/aura3d-cli/migrate-three/parse.d.ts +9 -0
- package/dist/aura3d-cli/migrate-three/parse.d.ts.map +1 -1
- package/dist/aura3d-cli/migrate-three/parse.js +1 -1
- package/dist/aura3d-cli/migrate-three/parse.js.map +1 -1
- package/dist/create-aura3d/index.js +1 -1
- package/dist/engine/agent-api/Clock.d.ts +4 -1
- package/dist/engine/agent-api/Clock.d.ts.map +1 -1
- package/dist/engine/agent-api/Clock.js +8 -2
- package/dist/engine/agent-api/Clock.js.map +1 -1
- package/dist/engine/agent-api/animationMask.d.ts +14 -0
- package/dist/engine/agent-api/animationMask.d.ts.map +1 -0
- package/dist/engine/agent-api/animationMask.js +23 -0
- package/dist/engine/agent-api/animationMask.js.map +1 -0
- package/dist/engine/agent-api/app/actorAnimationHandle.d.ts +2 -0
- package/dist/engine/agent-api/app/actorAnimationHandle.d.ts.map +1 -1
- package/dist/engine/agent-api/app/actorAnimationHandle.js +21 -1
- package/dist/engine/agent-api/app/actorAnimationHandle.js.map +1 -1
- package/dist/engine/agent-api/app/createAuraApp.d.ts.map +1 -1
- package/dist/engine/agent-api/app/createAuraApp.js +55 -5
- package/dist/engine/agent-api/app/createAuraApp.js.map +1 -1
- package/dist/engine/agent-api/app/frameLoop.d.ts.map +1 -1
- package/dist/engine/agent-api/app/frameLoop.js +28 -6
- package/dist/engine/agent-api/app/frameLoop.js.map +1 -1
- package/dist/engine/agent-api/app/mountRenderer.d.ts +6 -1
- package/dist/engine/agent-api/app/mountRenderer.d.ts.map +1 -1
- package/dist/engine/agent-api/app/mountRenderer.js +2 -2
- package/dist/engine/agent-api/app/mountRenderer.js.map +1 -1
- package/dist/engine/agent-api/app/renderPath.d.ts +57 -0
- package/dist/engine/agent-api/app/renderPath.d.ts.map +1 -0
- package/dist/engine/agent-api/app/renderPath.js +163 -0
- package/dist/engine/agent-api/app/renderPath.js.map +1 -0
- package/dist/engine/agent-api/app/rendererOptions.d.ts +7 -0
- package/dist/engine/agent-api/app/rendererOptions.d.ts.map +1 -1
- package/dist/engine/agent-api/app/rendererOptions.js +20 -0
- package/dist/engine/agent-api/app/rendererOptions.js.map +1 -1
- package/dist/engine/agent-api/app/routeState.d.ts.map +1 -1
- package/dist/engine/agent-api/app/routeState.js +8 -3
- package/dist/engine/agent-api/app/routeState.js.map +1 -1
- package/dist/engine/agent-api/app/runtimeNodes.d.ts.map +1 -1
- package/dist/engine/agent-api/app/runtimeNodes.js +35 -0
- package/dist/engine/agent-api/app/runtimeNodes.js.map +1 -1
- package/dist/engine/agent-api/camera/extension.d.ts.map +1 -1
- package/dist/engine/agent-api/camera/extension.js +2 -2
- package/dist/engine/agent-api/camera/extension.js.map +1 -1
- package/dist/engine/agent-api/camera/rigs/fromSpec.d.ts +2 -0
- package/dist/engine/agent-api/camera/rigs/fromSpec.d.ts.map +1 -1
- package/dist/engine/agent-api/camera/rigs/fromSpec.js +11 -1
- package/dist/engine/agent-api/camera/rigs/fromSpec.js.map +1 -1
- package/dist/engine/agent-api/compiler/animation.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/animation.js +2 -1
- package/dist/engine/agent-api/compiler/animation.js.map +1 -1
- package/dist/engine/agent-api/compiler/camera.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/camera.js +10 -0
- package/dist/engine/agent-api/compiler/camera.js.map +1 -1
- package/dist/engine/agent-api/compiler/compileScene.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/compileScene.js +9 -2
- package/dist/engine/agent-api/compiler/compileScene.js.map +1 -1
- package/dist/engine/agent-api/compiler/environment.d.ts +19 -2
- package/dist/engine/agent-api/compiler/environment.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/environment.js +81 -12
- package/dist/engine/agent-api/compiler/environment.js.map +1 -1
- package/dist/engine/agent-api/compiler/geometry.d.ts +18 -1
- package/dist/engine/agent-api/compiler/geometry.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/geometry.js +25 -5
- package/dist/engine/agent-api/compiler/geometry.js.map +1 -1
- package/dist/engine/agent-api/compiler/lights.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/lights.js +14 -6
- package/dist/engine/agent-api/compiler/lights.js.map +1 -1
- package/dist/engine/agent-api/compiler/observations.d.ts +9 -1
- package/dist/engine/agent-api/compiler/observations.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/observations.js +5 -4
- package/dist/engine/agent-api/compiler/observations.js.map +1 -1
- package/dist/engine/agent-api/compiler/optionCoverage.js +17 -0
- package/dist/engine/agent-api/compiler/optionCoverage.js.map +1 -1
- package/dist/engine/agent-api/compiler/postprocess.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/postprocess.js +2 -0
- package/dist/engine/agent-api/compiler/postprocess.js.map +1 -1
- package/dist/engine/agent-api/compiler/primitives.d.ts +22 -0
- package/dist/engine/agent-api/compiler/primitives.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/primitives.js +88 -3
- package/dist/engine/agent-api/compiler/primitives.js.map +1 -1
- package/dist/engine/agent-api/compiler/renderInput.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/renderInput.js +40 -4
- package/dist/engine/agent-api/compiler/renderInput.js.map +1 -1
- package/dist/engine/agent-api/compiler/renderer.d.ts +1 -1
- package/dist/engine/agent-api/compiler/renderer.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/renderer.js +22 -8
- package/dist/engine/agent-api/compiler/renderer.js.map +1 -1
- package/dist/engine/agent-api/compiler/shadows.d.ts +32 -1
- package/dist/engine/agent-api/compiler/shadows.d.ts.map +1 -1
- package/dist/engine/agent-api/compiler/shadows.js +99 -4
- package/dist/engine/agent-api/compiler/shadows.js.map +1 -1
- package/dist/engine/agent-api/diagnostics.d.ts +22 -0
- package/dist/engine/agent-api/diagnostics.d.ts.map +1 -1
- package/dist/engine/agent-api/diagnostics.js +53 -1
- package/dist/engine/agent-api/diagnostics.js.map +1 -1
- package/dist/engine/agent-api/feel/extension.d.ts.map +1 -1
- package/dist/engine/agent-api/feel/extension.js +2 -1
- package/dist/engine/agent-api/feel/extension.js.map +1 -1
- package/dist/engine/agent-api/looks/lookFill.d.ts +4 -0
- package/dist/engine/agent-api/looks/lookFill.d.ts.map +1 -0
- package/dist/engine/agent-api/looks/lookFill.js +29 -0
- package/dist/engine/agent-api/looks/lookFill.js.map +1 -0
- package/dist/engine/agent-api/looks/lookPresets.d.ts +13 -0
- package/dist/engine/agent-api/looks/lookPresets.d.ts.map +1 -1
- package/dist/engine/agent-api/looks/lookPresets.js +5 -0
- package/dist/engine/agent-api/looks/lookPresets.js.map +1 -1
- package/dist/engine/agent-api/looks/looks.d.ts.map +1 -1
- package/dist/engine/agent-api/looks/looks.js +6 -0
- package/dist/engine/agent-api/looks/looks.js.map +1 -1
- package/dist/engine/agent-api/looks/structuralQA.d.ts.map +1 -1
- package/dist/engine/agent-api/looks/structuralQA.js +4 -2
- package/dist/engine/agent-api/looks/structuralQA.js.map +1 -1
- package/dist/engine/agent-api/nodes/game/instanceTransforms.d.ts +5 -4
- package/dist/engine/agent-api/nodes/game/instanceTransforms.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/game/instanceTransforms.js +61 -5
- package/dist/engine/agent-api/nodes/game/instanceTransforms.js.map +1 -1
- package/dist/engine/agent-api/nodes/groups.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/groups.js +2 -1
- package/dist/engine/agent-api/nodes/groups.js.map +1 -1
- package/dist/engine/agent-api/nodes/interactions.d.ts +32 -10
- package/dist/engine/agent-api/nodes/interactions.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/interactions.js +40 -11
- package/dist/engine/agent-api/nodes/interactions.js.map +1 -1
- package/dist/engine/agent-api/nodes/model.d.ts +3 -0
- package/dist/engine/agent-api/nodes/model.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/model.js +4 -1
- package/dist/engine/agent-api/nodes/model.js.map +1 -1
- package/dist/engine/agent-api/nodes/optionDiagnostics.d.ts +14 -0
- package/dist/engine/agent-api/nodes/optionDiagnostics.d.ts.map +1 -0
- package/dist/engine/agent-api/nodes/optionDiagnostics.js +34 -0
- package/dist/engine/agent-api/nodes/optionDiagnostics.js.map +1 -0
- package/dist/engine/agent-api/nodes/orbitInteraction.d.ts +9 -0
- package/dist/engine/agent-api/nodes/orbitInteraction.d.ts.map +1 -0
- package/dist/engine/agent-api/nodes/orbitInteraction.js +52 -0
- package/dist/engine/agent-api/nodes/orbitInteraction.js.map +1 -0
- package/dist/engine/agent-api/nodes/physics.d.ts +1 -0
- package/dist/engine/agent-api/nodes/physics.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/physics.js +15 -3
- package/dist/engine/agent-api/nodes/physics.js.map +1 -1
- package/dist/engine/agent-api/nodes/primitives.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/primitives.js +23 -0
- package/dist/engine/agent-api/nodes/primitives.js.map +1 -1
- package/dist/engine/agent-api/nodes/scene.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/scene.js +4 -2
- package/dist/engine/agent-api/nodes/scene.js.map +1 -1
- package/dist/engine/agent-api/nodes/text3d.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/text3d.js +11 -2
- package/dist/engine/agent-api/nodes/text3d.js.map +1 -1
- package/dist/engine/agent-api/nodes/types/runtime.d.ts +33 -0
- package/dist/engine/agent-api/nodes/types/runtime.d.ts.map +1 -1
- package/dist/engine/agent-api/nodes/types.d.ts +42 -0
- package/dist/engine/agent-api/nodes/types.d.ts.map +1 -1
- package/dist/engine/agent-api/platform.d.ts +5 -0
- package/dist/engine/agent-api/platform.d.ts.map +1 -1
- package/dist/engine/agent-api/platform.js +15 -0
- package/dist/engine/agent-api/platform.js.map +1 -1
- package/dist/engine/agent-api/postBridge.d.ts.map +1 -1
- package/dist/engine/agent-api/postBridge.js +5 -1
- package/dist/engine/agent-api/postBridge.js.map +1 -1
- package/dist/engine/agent-api/sceneKitDiagnostics.d.ts.map +1 -1
- package/dist/engine/agent-api/sceneKitDiagnostics.js +5 -2
- package/dist/engine/agent-api/sceneKitDiagnostics.js.map +1 -1
- package/dist/engine/contracts/animation.d.ts +5 -3
- package/dist/engine/contracts/animation.d.ts.map +1 -1
- package/dist/engine/contracts/animation.js.map +1 -1
- package/dist/engine/contracts/flags.d.ts.map +1 -1
- package/dist/engine/contracts/flags.js +2 -1
- package/dist/engine/contracts/flags.js.map +1 -1
- package/dist/engine/contracts/stubs/game.d.ts.map +1 -1
- package/dist/engine/contracts/stubs/game.js +9 -1
- package/dist/engine/contracts/stubs/game.js.map +1 -1
- package/dist/engine/contracts/urlCache.d.ts +4 -0
- package/dist/engine/contracts/urlCache.d.ts.map +1 -0
- package/dist/engine/contracts/urlCache.js +25 -0
- package/dist/engine/contracts/urlCache.js.map +1 -0
- package/dist/engine/lanes/prd01/outputSurface.d.ts.map +1 -1
- package/dist/engine/lanes/prd01/outputSurface.js +25 -1
- package/dist/engine/lanes/prd01/outputSurface.js.map +1 -1
- package/dist/math/SphericalHarmonics3.d.ts +6 -3
- package/dist/math/SphericalHarmonics3.d.ts.map +1 -1
- package/dist/math/SphericalHarmonics3.js +8 -5
- package/dist/math/SphericalHarmonics3.js.map +1 -1
- package/dist/math/three/Box3.d.ts +106 -0
- package/dist/math/three/Box3.d.ts.map +1 -0
- package/dist/math/three/Box3.js +348 -0
- package/dist/math/three/Box3.js.map +1 -0
- package/dist/math/three/Color.d.ts +127 -0
- package/dist/math/three/Color.d.ts.map +1 -0
- package/dist/math/three/Color.js +501 -0
- package/dist/math/three/Color.js.map +1 -0
- package/dist/math/three/Euler.d.ts +50 -0
- package/dist/math/three/Euler.d.ts.map +1 -0
- package/dist/math/three/Euler.js +210 -0
- package/dist/math/three/Euler.js.map +1 -0
- package/dist/math/three/Frustum.d.ts +59 -0
- package/dist/math/three/Frustum.d.ts.map +1 -0
- package/dist/math/three/Frustum.js +135 -0
- package/dist/math/three/Frustum.js.map +1 -0
- package/dist/math/three/Matrix3.d.ts +56 -0
- package/dist/math/three/Matrix3.d.ts.map +1 -0
- package/dist/math/three/Matrix3.js +248 -0
- package/dist/math/three/Matrix3.js.map +1 -0
- package/dist/math/three/Matrix4.d.ts +79 -0
- package/dist/math/three/Matrix4.d.ts.map +1 -0
- package/dist/math/three/Matrix4.js +708 -0
- package/dist/math/three/Matrix4.js.map +1 -0
- package/dist/math/three/Plane.d.ts +65 -0
- package/dist/math/three/Plane.d.ts.map +1 -0
- package/dist/math/three/Plane.js +135 -0
- package/dist/math/three/Plane.js.map +1 -0
- package/dist/math/three/Quaternion.d.ts +91 -0
- package/dist/math/three/Quaternion.d.ts.map +1 -0
- package/dist/math/three/Quaternion.js +444 -0
- package/dist/math/three/Quaternion.js.map +1 -0
- package/dist/math/three/Ray.d.ts +56 -0
- package/dist/math/three/Ray.d.ts.map +1 -0
- package/dist/math/three/Ray.js +340 -0
- package/dist/math/three/Ray.js.map +1 -0
- package/dist/math/three/Sphere.d.ts +58 -0
- package/dist/math/three/Sphere.d.ts.map +1 -0
- package/dist/math/three/Sphere.js +166 -0
- package/dist/math/three/Sphere.js.map +1 -0
- package/dist/math/three/Triangle.d.ts +58 -0
- package/dist/math/three/Triangle.d.ts.map +1 -0
- package/dist/math/three/Triangle.js +229 -0
- package/dist/math/three/Triangle.js.map +1 -0
- package/dist/math/three/Vector2.d.ts +88 -0
- package/dist/math/three/Vector2.d.ts.map +1 -0
- package/dist/math/three/Vector2.js +283 -0
- package/dist/math/three/Vector2.js.map +1 -0
- package/dist/math/three/Vector3.d.ts +137 -0
- package/dist/math/three/Vector3.d.ts.map +1 -0
- package/dist/math/three/Vector3.js +458 -0
- package/dist/math/three/Vector3.js.map +1 -0
- package/dist/math/three/Vector4.d.ts +100 -0
- package/dist/math/three/Vector4.d.ts.map +1 -0
- package/dist/math/three/Vector4.js +443 -0
- package/dist/math/three/Vector4.js.map +1 -0
- package/dist/math/three/index.d.ts +29 -0
- package/dist/math/three/index.d.ts.map +1 -0
- package/dist/math/three/index.js +29 -0
- package/dist/math/three/index.js.map +1 -0
- package/dist/react/index.d.ts +8 -0
- package/dist/react/index.d.ts.map +1 -1
- package/dist/react/index.js +47 -20
- package/dist/react/index.js.map +1 -1
- package/dist/rendering/DepthPass.d.ts.map +1 -1
- package/dist/rendering/DepthPass.js +3 -2
- package/dist/rendering/DepthPass.js.map +1 -1
- package/dist/rendering/ForwardPass.d.ts +13 -0
- package/dist/rendering/ForwardPass.d.ts.map +1 -1
- package/dist/rendering/ForwardPass.js +64 -11
- package/dist/rendering/ForwardPass.js.map +1 -1
- package/dist/rendering/MaterialBinding.js +6 -2
- package/dist/rendering/MaterialBinding.js.map +1 -1
- package/dist/rendering/Renderer.d.ts +8 -0
- package/dist/rendering/Renderer.d.ts.map +1 -1
- package/dist/rendering/Renderer.js +37 -6
- package/dist/rendering/Renderer.js.map +1 -1
- package/dist/rendering/ShaderChunks.d.ts.map +1 -1
- package/dist/rendering/ShaderChunks.js +3 -1
- package/dist/rendering/ShaderChunks.js.map +1 -1
- package/dist/rendering/ShaderLibrary.d.ts.map +1 -1
- package/dist/rendering/ShaderLibrary.js +17 -5
- package/dist/rendering/ShaderLibrary.js.map +1 -1
- package/dist/rendering/ShaderLibraryCore.d.ts.map +1 -1
- package/dist/rendering/ShaderLibraryCore.js +2 -1
- package/dist/rendering/ShaderLibraryCore.js.map +1 -1
- package/dist/rendering/WebGL2Device.d.ts +16 -1
- package/dist/rendering/WebGL2Device.d.ts.map +1 -1
- package/dist/rendering/WebGL2Device.js +94 -37
- package/dist/rendering/WebGL2Device.js.map +1 -1
- package/dist/rendering/WebGL2StateCache.d.ts +22 -0
- package/dist/rendering/WebGL2StateCache.d.ts.map +1 -1
- package/dist/rendering/WebGL2StateCache.js +71 -42
- package/dist/rendering/WebGL2StateCache.js.map +1 -1
- package/dist/rendering/contracts/core.d.ts.map +1 -1
- package/dist/rendering/contracts/core.js +22 -2
- package/dist/rendering/contracts/core.js.map +1 -1
- package/dist/rendering/contracts/program.d.ts.map +1 -1
- package/dist/rendering/contracts/program.js +8 -1
- package/dist/rendering/contracts/program.js.map +1 -1
- package/dist/rendering/contracts/quality.d.ts +21 -0
- package/dist/rendering/contracts/quality.d.ts.map +1 -1
- package/dist/rendering/contracts/quality.js +5 -0
- package/dist/rendering/contracts/quality.js.map +1 -1
- package/dist/rendering/contracts/renderItem.d.ts +6 -0
- package/dist/rendering/contracts/renderItem.d.ts.map +1 -1
- package/dist/rendering/contracts/structuralMemo.d.ts +23 -0
- package/dist/rendering/contracts/structuralMemo.d.ts.map +1 -0
- package/dist/rendering/contracts/structuralMemo.js +81 -0
- package/dist/rendering/contracts/structuralMemo.js.map +1 -0
- package/dist/rendering/environment/EnvironmentCache.d.ts.map +1 -1
- package/dist/rendering/environment/EnvironmentCache.js +6 -1
- package/dist/rendering/environment/EnvironmentCache.js.map +1 -1
- package/dist/rendering/environment/FirstFrameGate.d.ts +23 -0
- package/dist/rendering/environment/FirstFrameGate.d.ts.map +1 -0
- package/dist/rendering/environment/FirstFrameGate.js +58 -0
- package/dist/rendering/environment/FirstFrameGate.js.map +1 -0
- package/dist/rendering/environment/Rgb9e5Cube.d.ts.map +1 -1
- package/dist/rendering/environment/Rgb9e5Cube.js +8 -4
- package/dist/rendering/environment/Rgb9e5Cube.js.map +1 -1
- package/dist/rendering/environment/probeBuild.d.ts +29 -0
- package/dist/rendering/environment/probeBuild.d.ts.map +1 -1
- package/dist/rendering/environment/probeBuild.js +124 -45
- package/dist/rendering/environment/probeBuild.js.map +1 -1
- package/dist/rendering/forward/Lighting.d.ts +11 -3
- package/dist/rendering/forward/Lighting.d.ts.map +1 -1
- package/dist/rendering/forward/Lighting.js +25 -15
- package/dist/rendering/forward/Lighting.js.map +1 -1
- package/dist/rendering/forward/contactShadowMaskStore.d.ts +41 -0
- package/dist/rendering/forward/contactShadowMaskStore.d.ts.map +1 -0
- package/dist/rendering/forward/contactShadowMaskStore.js +85 -0
- package/dist/rendering/forward/contactShadowMaskStore.js.map +1 -0
- package/dist/rendering/geometry/Shape.d.ts.map +1 -1
- package/dist/rendering/geometry/Shape.js +7 -2
- package/dist/rendering/geometry/Shape.js.map +1 -1
- package/dist/rendering/geometry/Support.d.ts +4 -0
- package/dist/rendering/geometry/Support.d.ts.map +1 -1
- package/dist/rendering/geometry/Support.js +3 -2
- package/dist/rendering/geometry/Support.js.map +1 -1
- package/dist/rendering/index.d.ts +6 -0
- package/dist/rendering/index.d.ts.map +1 -1
- package/dist/rendering/index.js +5 -0
- package/dist/rendering/index.js.map +1 -1
- package/dist/rendering/passes/ContactShadowPass.d.ts +40 -3
- package/dist/rendering/passes/ContactShadowPass.d.ts.map +1 -1
- package/dist/rendering/passes/ContactShadowPass.js +73 -13
- package/dist/rendering/passes/ContactShadowPass.js.map +1 -1
- package/dist/rendering/passes/Prd02ContactShadowsContributor.d.ts +19 -0
- package/dist/rendering/passes/Prd02ContactShadowsContributor.d.ts.map +1 -1
- package/dist/rendering/passes/Prd02ContactShadowsContributor.js +179 -28
- package/dist/rendering/passes/Prd02ContactShadowsContributor.js.map +1 -1
- package/dist/rendering/program/ProgramFeatures.d.ts +6 -0
- package/dist/rendering/program/ProgramFeatures.d.ts.map +1 -1
- package/dist/rendering/program/ProgramFeatures.js +11 -5
- package/dist/rendering/program/ProgramFeatures.js.map +1 -1
- package/dist/rendering/program/ProgramGenerator.d.ts +6 -0
- package/dist/rendering/program/ProgramGenerator.d.ts.map +1 -1
- package/dist/rendering/program/ProgramGenerator.js +36 -1
- package/dist/rendering/program/ProgramGenerator.js.map +1 -1
- package/dist/rendering/program/ProgramKey.d.ts.map +1 -1
- package/dist/rendering/program/ProgramKey.js +4 -1
- package/dist/rendering/program/ProgramKey.js.map +1 -1
- package/dist/rendering/program/chunks/shadow_forward.glsl.d.ts +1 -1
- package/dist/rendering/program/chunks/shadow_forward.glsl.d.ts.map +1 -1
- package/dist/rendering/program/chunks/shadow_forward.glsl.js +4 -1
- package/dist/rendering/program/chunks/shadow_forward.glsl.js.map +1 -1
- package/dist/rendering/quality/DirectPath.d.ts +43 -0
- package/dist/rendering/quality/DirectPath.d.ts.map +1 -0
- package/dist/rendering/quality/DirectPath.js +42 -0
- package/dist/rendering/quality/DirectPath.js.map +1 -0
- package/dist/rendering/renderer/Background.d.ts +0 -5
- package/dist/rendering/renderer/Background.d.ts.map +1 -1
- package/dist/rendering/renderer/Background.js +25 -2
- package/dist/rendering/renderer/Background.js.map +1 -1
- package/dist/rendering/renderer/InstanceFrustumCull.d.ts +39 -0
- package/dist/rendering/renderer/InstanceFrustumCull.d.ts.map +1 -0
- package/dist/rendering/renderer/InstanceFrustumCull.js +127 -0
- package/dist/rendering/renderer/InstanceFrustumCull.js.map +1 -0
- package/dist/rendering/renderer/ShadowOrchestration.d.ts +2 -0
- package/dist/rendering/renderer/ShadowOrchestration.d.ts.map +1 -1
- package/dist/rendering/renderer/ShadowOrchestration.js +1 -0
- package/dist/rendering/renderer/ShadowOrchestration.js.map +1 -1
- package/dist/rendering/renderer/coreOutputPostRoute.d.ts +0 -5
- package/dist/rendering/renderer/coreOutputPostRoute.d.ts.map +1 -1
- package/dist/rendering/renderer/coreOutputPostRoute.js +12 -2
- package/dist/rendering/renderer/coreOutputPostRoute.js.map +1 -1
- package/dist/rendering/resources/InstanceBuffer.d.ts +2 -0
- package/dist/rendering/resources/InstanceBuffer.d.ts.map +1 -1
- package/dist/rendering/resources/InstanceBuffer.js +23 -0
- package/dist/rendering/resources/InstanceBuffer.js.map +1 -1
- package/dist/rendering/shaders/chunks/contact_shadow.glsl.d.ts +11 -6
- package/dist/rendering/shaders/chunks/contact_shadow.glsl.d.ts.map +1 -1
- package/dist/rendering/shaders/chunks/contact_shadow.glsl.js +41 -19
- package/dist/rendering/shaders/chunks/contact_shadow.glsl.js.map +1 -1
- package/dist/rendering/shaders/chunks/contact_shadow_mask.glsl.d.ts +12 -0
- package/dist/rendering/shaders/chunks/contact_shadow_mask.glsl.d.ts.map +1 -0
- package/dist/rendering/shaders/chunks/contact_shadow_mask.glsl.js +21 -0
- package/dist/rendering/shaders/chunks/contact_shadow_mask.glsl.js.map +1 -0
- package/dist/rendering/shadows/CascadeUse.d.ts +28 -0
- package/dist/rendering/shadows/CascadeUse.d.ts.map +1 -0
- package/dist/rendering/shadows/CascadeUse.js +45 -0
- package/dist/rendering/shadows/CascadeUse.js.map +1 -0
- package/dist/rendering/shadows/Prd02DepthShaderLibrary.d.ts +7 -1
- package/dist/rendering/shadows/Prd02DepthShaderLibrary.d.ts.map +1 -1
- package/dist/rendering/shadows/Prd02DepthShaderLibrary.js +12 -3
- package/dist/rendering/shadows/Prd02DepthShaderLibrary.js.map +1 -1
- package/dist/rendering/shadows/Prd02ShadowBridge.d.ts +12 -1
- package/dist/rendering/shadows/Prd02ShadowBridge.d.ts.map +1 -1
- package/dist/rendering/shadows/Prd02ShadowBridge.js +17 -5
- package/dist/rendering/shadows/Prd02ShadowBridge.js.map +1 -1
- package/dist/rendering/shadows/ShadowFilterTier.d.ts +51 -0
- package/dist/rendering/shadows/ShadowFilterTier.d.ts.map +1 -0
- package/dist/rendering/shadows/ShadowFilterTier.js +89 -0
- package/dist/rendering/shadows/ShadowFilterTier.js.map +1 -0
- package/dist/rendering/shadows/ShadowSystem.d.ts +15 -0
- package/dist/rendering/shadows/ShadowSystem.d.ts.map +1 -1
- package/dist/rendering/shadows/ShadowSystem.js +12 -2
- package/dist/rendering/shadows/ShadowSystem.js.map +1 -1
- package/dist/rendering/shadows/shadowLegacy.d.ts +12 -0
- package/dist/rendering/shadows/shadowLegacy.d.ts.map +1 -1
- package/dist/rendering/shadows/shadowLegacy.js +24 -0
- package/dist/rendering/shadows/shadowLegacy.js.map +1 -1
- package/dist/rendering/webgl2/BloomFusion.d.ts +31 -0
- package/dist/rendering/webgl2/BloomFusion.d.ts.map +1 -0
- package/dist/rendering/webgl2/BloomFusion.js +25 -0
- package/dist/rendering/webgl2/BloomFusion.js.map +1 -0
- package/dist/rendering/webgl2/ContextLifecycle.d.ts +14 -0
- package/dist/rendering/webgl2/ContextLifecycle.d.ts.map +1 -1
- package/dist/rendering/webgl2/ContextLifecycle.js +30 -3
- package/dist/rendering/webgl2/ContextLifecycle.js.map +1 -1
- package/dist/rendering/webgl2/LegacyPost.d.ts +30 -0
- package/dist/rendering/webgl2/LegacyPost.d.ts.map +1 -1
- package/dist/rendering/webgl2/LegacyPost.js +259 -27
- package/dist/rendering/webgl2/LegacyPost.js.map +1 -1
- package/dist/rendering/webgl2/MultiDraw.d.ts.map +1 -1
- package/dist/rendering/webgl2/MultiDraw.js +9 -1
- package/dist/rendering/webgl2/MultiDraw.js.map +1 -1
- package/dist/rendering/webgl2/Samplers.d.ts +10 -1
- package/dist/rendering/webgl2/Samplers.d.ts.map +1 -1
- package/dist/rendering/webgl2/Samplers.js +24 -1
- package/dist/rendering/webgl2/Samplers.js.map +1 -1
- package/dist/rendering/webgl2/TextureFormats.d.ts +12 -0
- package/dist/rendering/webgl2/TextureFormats.d.ts.map +1 -1
- package/dist/rendering/webgl2/TextureFormats.js +16 -0
- package/dist/rendering/webgl2/TextureFormats.js.map +1 -1
- package/package.json +25 -25
- package/templates/cinematic-scene/package.json +2 -2
- package/templates/mini-game/package.json +2 -2
- package/templates/product-viewer/package.json +2 -2
- package/templates/production-asset-inspector/package.json +1 -1
- package/templates/production-material-studio/package.json +1 -1
- package/templates/production-product-configurator/package.json +1 -1
- package/templates/production-product-viewer/package.json +1 -1
- package/dist/environments/EnvironmentPreview.d.ts +0 -13
- package/dist/environments/EnvironmentPreview.d.ts.map +0 -1
- package/dist/environments/EnvironmentPreview.js +0 -16
- package/dist/environments/EnvironmentPreview.js.map +0 -1
- package/dist/environments/EnvironmentRegistry.d.ts +0 -35
- package/dist/environments/EnvironmentRegistry.d.ts.map +0 -1
- package/dist/environments/EnvironmentRegistry.js +0 -39
- package/dist/environments/EnvironmentRegistry.js.map +0 -1
- package/dist/environments/HDRIEnvironment.d.ts +0 -38
- package/dist/environments/HDRIEnvironment.d.ts.map +0 -1
- package/dist/environments/HDRIEnvironment.js +0 -34
- package/dist/environments/HDRIEnvironment.js.map +0 -1
- package/dist/environments/PMREMPreset.d.ts +0 -14
- package/dist/environments/PMREMPreset.d.ts.map +0 -1
- package/dist/environments/PMREMPreset.js +0 -16
- package/dist/environments/PMREMPreset.js.map +0 -1
- package/dist/environments/index.d.ts +0 -6
- package/dist/environments/index.d.ts.map +0 -1
- package/dist/environments/index.js +0 -3
- package/dist/environments/index.js.map +0 -1
- package/dist/environments/node.d.ts +0 -7
- package/dist/environments/node.d.ts.map +0 -1
- package/dist/environments/node.js +0 -5
- package/dist/environments/node.js.map +0 -1
- package/dist/environments/production-runtime/ProductionEnvironmentCorpus.d.ts +0 -78
- package/dist/environments/production-runtime/ProductionEnvironmentCorpus.d.ts.map +0 -1
- package/dist/environments/production-runtime/ProductionEnvironmentCorpus.js +0 -67
- package/dist/environments/production-runtime/ProductionEnvironmentCorpus.js.map +0 -1
- package/dist/environments/production-runtime/index.d.ts +0 -3
- package/dist/environments/production-runtime/index.d.ts.map +0 -1
- package/dist/environments/production-runtime/index.js +0 -2
- package/dist/environments/production-runtime/index.js.map +0 -1
- package/dist/environments/threejs-example-parity/index.d.ts +0 -17
- package/dist/environments/threejs-example-parity/index.d.ts.map +0 -1
- package/dist/environments/threejs-example-parity/index.js +0 -49
- package/dist/environments/threejs-example-parity/index.js.map +0 -1
- package/templates/cinematic-scene/node_modules/.vite/deps/_metadata.json +0 -8
- package/templates/cinematic-scene/node_modules/.vite/deps/package.json +0 -3
- package/templates/cinematic-scene/test-results/.last-run.json +0 -6
- package/templates/cinematic-scene/test-results/route-health-Aura3D-cinematic-scene-reaches-ready-state/error-context.md +0 -64
- package/templates/mini-game/package-lock.json +0 -1312
- package/templates/product-viewer/node_modules/.vite/deps/_metadata.json +0 -8
- package/templates/product-viewer/node_modules/.vite/deps/package.json +0 -3
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
import { Ray as ImmutableRay } from "../Ray.js";
|
|
2
|
+
import { Vector3 } from "./Vector3.js";
|
|
3
|
+
const _vector = new Vector3();
|
|
4
|
+
const _segCenter = new Vector3();
|
|
5
|
+
const _segDir = new Vector3();
|
|
6
|
+
const _diff = new Vector3();
|
|
7
|
+
const _edge1 = new Vector3();
|
|
8
|
+
const _edge2 = new Vector3();
|
|
9
|
+
const _normal = new Vector3();
|
|
10
|
+
/**
|
|
11
|
+
* Mutable three.js-compatible ray. Every modifier mutates `this` and returns
|
|
12
|
+
* `this`, exactly like three r185 `Ray`, including `null` for intersection
|
|
13
|
+
* misses (the immutable `@aura3d/math` Ray returns `undefined`).
|
|
14
|
+
*/
|
|
15
|
+
export class Ray {
|
|
16
|
+
origin;
|
|
17
|
+
direction;
|
|
18
|
+
constructor(origin = new Vector3(), direction = new Vector3(0, 0, -1)) {
|
|
19
|
+
this.origin = origin;
|
|
20
|
+
this.direction = direction;
|
|
21
|
+
}
|
|
22
|
+
/** Copy an immutable `@aura3d/math` Ray (or any `{origin, direction}`) into this ray. */
|
|
23
|
+
fromImmutable(ray) {
|
|
24
|
+
this.origin.copy(ray.origin);
|
|
25
|
+
this.direction.copy(ray.direction);
|
|
26
|
+
return this;
|
|
27
|
+
}
|
|
28
|
+
/** Snapshot as an immutable `@aura3d/math` Ray (normalizes the direction, throws on a zero direction). */
|
|
29
|
+
toImmutable() {
|
|
30
|
+
return new ImmutableRay(this.origin.toImmutable(), this.direction.toImmutable());
|
|
31
|
+
}
|
|
32
|
+
set(origin, direction) {
|
|
33
|
+
this.origin.copy(origin);
|
|
34
|
+
this.direction.copy(direction);
|
|
35
|
+
return this;
|
|
36
|
+
}
|
|
37
|
+
copy(ray) {
|
|
38
|
+
this.origin.copy(ray.origin);
|
|
39
|
+
this.direction.copy(ray.direction);
|
|
40
|
+
return this;
|
|
41
|
+
}
|
|
42
|
+
at(t, target) {
|
|
43
|
+
return target.copy(this.origin).addScaledVector(this.direction, t);
|
|
44
|
+
}
|
|
45
|
+
lookAt(v) {
|
|
46
|
+
this.direction.copy(v).sub(this.origin).normalize();
|
|
47
|
+
return this;
|
|
48
|
+
}
|
|
49
|
+
recast(t) {
|
|
50
|
+
this.origin.copy(this.at(t, _vector));
|
|
51
|
+
return this;
|
|
52
|
+
}
|
|
53
|
+
closestPointToPoint(point, target) {
|
|
54
|
+
target.subVectors(point, this.origin);
|
|
55
|
+
const directionDistance = target.dot(this.direction);
|
|
56
|
+
if (directionDistance < 0) {
|
|
57
|
+
return target.copy(this.origin);
|
|
58
|
+
}
|
|
59
|
+
return target.copy(this.origin).addScaledVector(this.direction, directionDistance);
|
|
60
|
+
}
|
|
61
|
+
distanceToPoint(point) {
|
|
62
|
+
return Math.sqrt(this.distanceSqToPoint(point));
|
|
63
|
+
}
|
|
64
|
+
distanceSqToPoint(point) {
|
|
65
|
+
const directionDistance = _vector.subVectors(point, this.origin).dot(this.direction);
|
|
66
|
+
// point behind the ray
|
|
67
|
+
if (directionDistance < 0) {
|
|
68
|
+
return this.origin.distanceToSquared(point);
|
|
69
|
+
}
|
|
70
|
+
_vector.copy(this.origin).addScaledVector(this.direction, directionDistance);
|
|
71
|
+
return _vector.distanceToSquared(point);
|
|
72
|
+
}
|
|
73
|
+
distanceSqToSegment(v0, v1, optionalPointOnRay, optionalPointOnSegment) {
|
|
74
|
+
// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteDistRaySegment.h
|
|
75
|
+
// It returns the min distance between the ray and the segment
|
|
76
|
+
// defined by v0 and v1
|
|
77
|
+
// It can also set two optional targets :
|
|
78
|
+
// - The closest point on the ray
|
|
79
|
+
// - The closest point on the segment
|
|
80
|
+
_segCenter.copy(v0).add(v1).multiplyScalar(0.5);
|
|
81
|
+
_segDir.copy(v1).sub(v0).normalize();
|
|
82
|
+
_diff.copy(this.origin).sub(_segCenter);
|
|
83
|
+
const segExtent = v0.distanceTo(v1) * 0.5;
|
|
84
|
+
const a01 = -this.direction.dot(_segDir);
|
|
85
|
+
const b0 = _diff.dot(this.direction);
|
|
86
|
+
const b1 = -_diff.dot(_segDir);
|
|
87
|
+
const c = _diff.lengthSq();
|
|
88
|
+
const det = Math.abs(1 - a01 * a01);
|
|
89
|
+
let s0;
|
|
90
|
+
let s1;
|
|
91
|
+
let sqrDist;
|
|
92
|
+
let extDet;
|
|
93
|
+
if (det > 0) {
|
|
94
|
+
// The ray and segment are not parallel.
|
|
95
|
+
s0 = a01 * b1 - b0;
|
|
96
|
+
s1 = a01 * b0 - b1;
|
|
97
|
+
extDet = segExtent * det;
|
|
98
|
+
if (s0 >= 0) {
|
|
99
|
+
if (s1 >= -extDet) {
|
|
100
|
+
if (s1 <= extDet) {
|
|
101
|
+
// region 0
|
|
102
|
+
// Minimum at interior points of ray and segment.
|
|
103
|
+
const invDet = 1 / det;
|
|
104
|
+
s0 *= invDet;
|
|
105
|
+
s1 *= invDet;
|
|
106
|
+
sqrDist = s0 * (s0 + a01 * s1 + 2 * b0) + s1 * (a01 * s0 + s1 + 2 * b1) + c;
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
// region 1
|
|
110
|
+
s1 = segExtent;
|
|
111
|
+
s0 = Math.max(0, -(a01 * s1 + b0));
|
|
112
|
+
sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
// region 5
|
|
117
|
+
s1 = -segExtent;
|
|
118
|
+
s0 = Math.max(0, -(a01 * s1 + b0));
|
|
119
|
+
sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
else if (s1 <= -extDet) {
|
|
123
|
+
// region 4
|
|
124
|
+
s0 = Math.max(0, -(-a01 * segExtent + b0));
|
|
125
|
+
s1 = s0 > 0 ? -segExtent : Math.min(Math.max(-segExtent, -b1), segExtent);
|
|
126
|
+
sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;
|
|
127
|
+
}
|
|
128
|
+
else if (s1 <= extDet) {
|
|
129
|
+
// region 3
|
|
130
|
+
s0 = 0;
|
|
131
|
+
s1 = Math.min(Math.max(-segExtent, -b1), segExtent);
|
|
132
|
+
sqrDist = s1 * (s1 + 2 * b1) + c;
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
// region 2
|
|
136
|
+
s0 = Math.max(0, -(a01 * segExtent + b0));
|
|
137
|
+
s1 = s0 > 0 ? segExtent : Math.min(Math.max(-segExtent, -b1), segExtent);
|
|
138
|
+
sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
// Ray and segment are parallel.
|
|
143
|
+
s1 = a01 > 0 ? -segExtent : segExtent;
|
|
144
|
+
s0 = Math.max(0, -(a01 * s1 + b0));
|
|
145
|
+
sqrDist = -s0 * s0 + s1 * (s1 + 2 * b1) + c;
|
|
146
|
+
}
|
|
147
|
+
if (optionalPointOnRay) {
|
|
148
|
+
optionalPointOnRay.copy(this.origin).addScaledVector(this.direction, s0);
|
|
149
|
+
}
|
|
150
|
+
if (optionalPointOnSegment) {
|
|
151
|
+
optionalPointOnSegment.copy(_segCenter).addScaledVector(_segDir, s1);
|
|
152
|
+
}
|
|
153
|
+
return sqrDist;
|
|
154
|
+
}
|
|
155
|
+
intersectSphere(sphere, target) {
|
|
156
|
+
_vector.subVectors(sphere.center, this.origin);
|
|
157
|
+
const tca = _vector.dot(this.direction);
|
|
158
|
+
const d2 = _vector.dot(_vector) - tca * tca;
|
|
159
|
+
const radius2 = sphere.radius * sphere.radius;
|
|
160
|
+
if (d2 > radius2)
|
|
161
|
+
return null;
|
|
162
|
+
const thc = Math.sqrt(radius2 - d2);
|
|
163
|
+
// t0 = first intersect point - entrance on front of sphere
|
|
164
|
+
const t0 = tca - thc;
|
|
165
|
+
// t1 = second intersect point - exit point on back of sphere
|
|
166
|
+
const t1 = tca + thc;
|
|
167
|
+
// test to see if t1 is behind the ray - if so, return null
|
|
168
|
+
if (t1 < 0)
|
|
169
|
+
return null;
|
|
170
|
+
// test to see if t0 is behind the ray:
|
|
171
|
+
// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,
|
|
172
|
+
// in order to always return an intersect point that is in front of the ray.
|
|
173
|
+
if (t0 < 0)
|
|
174
|
+
return this.at(t1, target);
|
|
175
|
+
// else t0 is in front of the ray, so return the first collision point scaled by t0
|
|
176
|
+
return this.at(t0, target);
|
|
177
|
+
}
|
|
178
|
+
intersectsSphere(sphere) {
|
|
179
|
+
if (sphere.radius < 0)
|
|
180
|
+
return false; // handle empty spheres, see #31187
|
|
181
|
+
return this.distanceSqToPoint(sphere.center) <= sphere.radius * sphere.radius;
|
|
182
|
+
}
|
|
183
|
+
distanceToPlane(plane) {
|
|
184
|
+
const denominator = _normalDot(plane.normal, this.direction);
|
|
185
|
+
if (denominator === 0) {
|
|
186
|
+
// line is coplanar, return origin
|
|
187
|
+
if (plane.distanceToPoint(this.origin) === 0) {
|
|
188
|
+
return 0;
|
|
189
|
+
}
|
|
190
|
+
// Null is preferable to undefined since undefined means.... it is undefined
|
|
191
|
+
return null;
|
|
192
|
+
}
|
|
193
|
+
const t = -(_originDot(this.origin, plane.normal) + plane.constant) / denominator;
|
|
194
|
+
// Return if the ray never intersects the plane
|
|
195
|
+
return t >= 0 ? t : null;
|
|
196
|
+
}
|
|
197
|
+
intersectPlane(plane, target) {
|
|
198
|
+
const t = this.distanceToPlane(plane);
|
|
199
|
+
if (t === null) {
|
|
200
|
+
return null;
|
|
201
|
+
}
|
|
202
|
+
return this.at(t, target);
|
|
203
|
+
}
|
|
204
|
+
intersectsPlane(plane) {
|
|
205
|
+
// check if the ray lies on the plane first
|
|
206
|
+
const distToPoint = plane.distanceToPoint(this.origin);
|
|
207
|
+
if (distToPoint === 0) {
|
|
208
|
+
return true;
|
|
209
|
+
}
|
|
210
|
+
const denominator = _normalDot(plane.normal, this.direction);
|
|
211
|
+
if (denominator * distToPoint < 0) {
|
|
212
|
+
return true;
|
|
213
|
+
}
|
|
214
|
+
// ray origin is behind the plane (and is pointing behind it)
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
intersectBox(box, target) {
|
|
218
|
+
let tmin;
|
|
219
|
+
let tmax;
|
|
220
|
+
let tymin;
|
|
221
|
+
let tymax;
|
|
222
|
+
let tzmin;
|
|
223
|
+
let tzmax;
|
|
224
|
+
const invdirx = 1 / this.direction.x;
|
|
225
|
+
const invdiry = 1 / this.direction.y;
|
|
226
|
+
const invdirz = 1 / this.direction.z;
|
|
227
|
+
const origin = this.origin;
|
|
228
|
+
if (invdirx >= 0) {
|
|
229
|
+
tmin = (box.min.x - origin.x) * invdirx;
|
|
230
|
+
tmax = (box.max.x - origin.x) * invdirx;
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
tmin = (box.max.x - origin.x) * invdirx;
|
|
234
|
+
tmax = (box.min.x - origin.x) * invdirx;
|
|
235
|
+
}
|
|
236
|
+
if (invdiry >= 0) {
|
|
237
|
+
tymin = (box.min.y - origin.y) * invdiry;
|
|
238
|
+
tymax = (box.max.y - origin.y) * invdiry;
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
tymin = (box.max.y - origin.y) * invdiry;
|
|
242
|
+
tymax = (box.min.y - origin.y) * invdiry;
|
|
243
|
+
}
|
|
244
|
+
if (tmin > tymax || tymin > tmax)
|
|
245
|
+
return null;
|
|
246
|
+
if (tymin > tmin || isNaN(tmin))
|
|
247
|
+
tmin = tymin;
|
|
248
|
+
if (tymax < tmax || isNaN(tmax))
|
|
249
|
+
tmax = tymax;
|
|
250
|
+
if (invdirz >= 0) {
|
|
251
|
+
tzmin = (box.min.z - origin.z) * invdirz;
|
|
252
|
+
tzmax = (box.max.z - origin.z) * invdirz;
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
tzmin = (box.max.z - origin.z) * invdirz;
|
|
256
|
+
tzmax = (box.min.z - origin.z) * invdirz;
|
|
257
|
+
}
|
|
258
|
+
if (tmin > tzmax || tzmin > tmax)
|
|
259
|
+
return null;
|
|
260
|
+
if (tzmin > tmin || tmin !== tmin)
|
|
261
|
+
tmin = tzmin;
|
|
262
|
+
if (tzmax < tmax || tmax !== tmax)
|
|
263
|
+
tmax = tzmax;
|
|
264
|
+
//return point closest to the ray (positive side)
|
|
265
|
+
if (tmax < 0)
|
|
266
|
+
return null;
|
|
267
|
+
return this.at(tmin >= 0 ? tmin : tmax, target);
|
|
268
|
+
}
|
|
269
|
+
intersectsBox(box) {
|
|
270
|
+
return this.intersectBox(box, _vector) !== null;
|
|
271
|
+
}
|
|
272
|
+
intersectTriangle(a, b, c, backfaceCulling, target) {
|
|
273
|
+
// Compute the offset origin, edges, and normal.
|
|
274
|
+
// from https://github.com/pmjoniak/GeometricTools/blob/master/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h
|
|
275
|
+
_edge1.subVectors(b, a);
|
|
276
|
+
_edge2.subVectors(c, a);
|
|
277
|
+
_normal.crossVectors(_edge1, _edge2);
|
|
278
|
+
// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,
|
|
279
|
+
// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by
|
|
280
|
+
// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))
|
|
281
|
+
// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))
|
|
282
|
+
// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)
|
|
283
|
+
let DdN = this.direction.dot(_normal);
|
|
284
|
+
let sign;
|
|
285
|
+
if (DdN > 0) {
|
|
286
|
+
if (backfaceCulling)
|
|
287
|
+
return null;
|
|
288
|
+
sign = 1;
|
|
289
|
+
}
|
|
290
|
+
else if (DdN < 0) {
|
|
291
|
+
sign = -1;
|
|
292
|
+
DdN = -DdN;
|
|
293
|
+
}
|
|
294
|
+
else {
|
|
295
|
+
return null;
|
|
296
|
+
}
|
|
297
|
+
_diff.subVectors(this.origin, a);
|
|
298
|
+
const DdQxE2 = sign * this.direction.dot(_edge2.crossVectors(_diff, _edge2));
|
|
299
|
+
// b1 < 0, no intersection
|
|
300
|
+
if (DdQxE2 < 0) {
|
|
301
|
+
return null;
|
|
302
|
+
}
|
|
303
|
+
const DdE1xQ = sign * this.direction.dot(_edge1.cross(_diff));
|
|
304
|
+
// b2 < 0, no intersection
|
|
305
|
+
if (DdE1xQ < 0) {
|
|
306
|
+
return null;
|
|
307
|
+
}
|
|
308
|
+
// b1+b2 > 1, no intersection
|
|
309
|
+
if (DdQxE2 + DdE1xQ > DdN) {
|
|
310
|
+
return null;
|
|
311
|
+
}
|
|
312
|
+
// Line intersects triangle, check if ray does.
|
|
313
|
+
const QdN = -sign * _diff.dot(_normal);
|
|
314
|
+
// t < 0, no intersection
|
|
315
|
+
if (QdN < 0) {
|
|
316
|
+
return null;
|
|
317
|
+
}
|
|
318
|
+
// Ray intersects triangle.
|
|
319
|
+
return this.at(QdN / DdN, target);
|
|
320
|
+
}
|
|
321
|
+
applyMatrix4(matrix4) {
|
|
322
|
+
this.origin.applyMatrix4(matrix4);
|
|
323
|
+
this.direction.transformDirection(matrix4);
|
|
324
|
+
return this;
|
|
325
|
+
}
|
|
326
|
+
equals(ray) {
|
|
327
|
+
return this.origin.equals(ray.origin) && this.direction.equals(ray.direction);
|
|
328
|
+
}
|
|
329
|
+
clone() {
|
|
330
|
+
return new this.constructor().copy(this);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
// `plane.normal` may be a compat Vector3 or an immutable one; the dot products below multiply the same pairs in the same order as three's.
|
|
334
|
+
function _normalDot(normal, direction) {
|
|
335
|
+
return normal.x * direction.x + normal.y * direction.y + normal.z * direction.z;
|
|
336
|
+
}
|
|
337
|
+
function _originDot(origin, normal) {
|
|
338
|
+
return origin.x * normal.x + origin.y * normal.y + origin.z * normal.z;
|
|
339
|
+
}
|
|
340
|
+
//# sourceMappingURL=Ray.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Ray.js","sourceRoot":"","sources":["../../../../../packages/math/src/three/Ray.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Sphere as ImmutableSphere } from "../Sphere.js";
|
|
2
|
+
import { Box3 } from "./Box3.js";
|
|
3
|
+
import { Vector3 } from "./Vector3.js";
|
|
4
|
+
import type { Vector3Like } from "./Vector3.js";
|
|
5
|
+
/** Anything with a `center` and `radius`, including the immutable `@aura3d/math` Sphere. */
|
|
6
|
+
export interface SphereLike {
|
|
7
|
+
readonly center: Vector3Like;
|
|
8
|
+
readonly radius: number;
|
|
9
|
+
}
|
|
10
|
+
interface PlaneLike {
|
|
11
|
+
distanceToPoint(point: Vector3): number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Mutable three.js-compatible bounding sphere (`radius = -1` is the empty
|
|
15
|
+
* sentinel). Every modifier mutates `this` and returns `this`, exactly like
|
|
16
|
+
* three r185 `Sphere`.
|
|
17
|
+
*/
|
|
18
|
+
export declare class Sphere {
|
|
19
|
+
readonly isSphere: true;
|
|
20
|
+
center: Vector3;
|
|
21
|
+
radius: number;
|
|
22
|
+
constructor(center?: Vector3, radius?: number);
|
|
23
|
+
/** Copy an immutable `@aura3d/math` Sphere (or any `{center, radius}`) into this sphere. */
|
|
24
|
+
fromImmutable(sphere: SphereLike): this;
|
|
25
|
+
/** Snapshot as an immutable `@aura3d/math` Sphere (throws on a non-finite radius, like that class). */
|
|
26
|
+
toImmutable(): ImmutableSphere;
|
|
27
|
+
set(center: Vector3Like, radius: number): this;
|
|
28
|
+
setFromPoints(points: readonly Vector3[], optionalCenter?: Vector3Like): this;
|
|
29
|
+
copy(sphere: SphereLike): this;
|
|
30
|
+
isEmpty(): boolean;
|
|
31
|
+
makeEmpty(): this;
|
|
32
|
+
containsPoint(point: Vector3): boolean;
|
|
33
|
+
distanceToPoint(point: Vector3): number;
|
|
34
|
+
intersectsSphere(sphere: SphereLike): boolean;
|
|
35
|
+
intersectsBox(box: Box3): boolean;
|
|
36
|
+
intersectsPlane(plane: PlaneLike): boolean;
|
|
37
|
+
clampPoint(point: Vector3, target: Vector3): Vector3;
|
|
38
|
+
getBoundingBox(target: Box3): Box3;
|
|
39
|
+
applyMatrix4(matrix: {
|
|
40
|
+
readonly elements: ArrayLike<number>;
|
|
41
|
+
getMaxScaleOnAxis(): number;
|
|
42
|
+
}): this;
|
|
43
|
+
translate(offset: Vector3Like): this;
|
|
44
|
+
expandByPoint(point: Vector3Like): this;
|
|
45
|
+
union(sphere: Sphere): this;
|
|
46
|
+
equals(sphere: SphereLike): boolean;
|
|
47
|
+
clone(): this;
|
|
48
|
+
toJSON(): {
|
|
49
|
+
radius: number;
|
|
50
|
+
center: number[];
|
|
51
|
+
};
|
|
52
|
+
fromJSON(json: {
|
|
53
|
+
radius: number;
|
|
54
|
+
center: ArrayLike<number>;
|
|
55
|
+
}): this;
|
|
56
|
+
}
|
|
57
|
+
export {};
|
|
58
|
+
//# sourceMappingURL=Sphere.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sphere.d.ts","sourceRoot":"","sources":["../../../../../packages/math/src/three/Sphere.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,4FAA4F;AAC5F,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,UAAU,SAAS;IACjB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAAC;CACzC;AAMD;;;;GAIG;AACH,qBAAa,MAAM;IACjB,SAAiB,QAAQ,EAAE,IAAI,CAAC;IAEhC,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;gBAEH,MAAM,GAAE,OAAuB,EAAE,MAAM,SAAK;IAKxD,4FAA4F;IAC5F,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAMvC,uGAAuG;IACvG,WAAW,IAAI,eAAe;IAI9B,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAM9C,aAAa,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,EAAE,cAAc,CAAC,EAAE,WAAW,GAAG,IAAI;IAoB7E,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAM9B,OAAO,IAAI,OAAO;IAIlB,SAAS,IAAI,IAAI;IAMjB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAItC,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM;IAIvC,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO;IAK7C,aAAa,CAAC,GAAG,EAAE,IAAI,GAAG,OAAO;IAIjC,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAI1C,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO;IAapD,cAAc,CAAC,MAAM,EAAE,IAAI,GAAG,IAAI;IAalC,YAAY,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QAAC,iBAAiB,IAAI,MAAM,CAAA;KAAE,GAAG,IAAI;IAOjG,SAAS,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI;IAMpC,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IA4BvC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAwB3B,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO;IAInC,KAAK,IAAI,IAAI;IAIb,MAAM,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE;IAO9C,QAAQ,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;KAAE,GAAG,IAAI;CAKpE"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { Sphere as ImmutableSphere } from "../Sphere.js";
|
|
2
|
+
import { Box3 } from "./Box3.js";
|
|
3
|
+
import { Vector3 } from "./Vector3.js";
|
|
4
|
+
const _box = new Box3();
|
|
5
|
+
const _v1 = new Vector3();
|
|
6
|
+
const _v2 = new Vector3();
|
|
7
|
+
/**
|
|
8
|
+
* Mutable three.js-compatible bounding sphere (`radius = -1` is the empty
|
|
9
|
+
* sentinel). Every modifier mutates `this` and returns `this`, exactly like
|
|
10
|
+
* three r185 `Sphere`.
|
|
11
|
+
*/
|
|
12
|
+
export class Sphere {
|
|
13
|
+
center;
|
|
14
|
+
radius;
|
|
15
|
+
constructor(center = new Vector3(), radius = -1) {
|
|
16
|
+
this.center = center;
|
|
17
|
+
this.radius = radius;
|
|
18
|
+
}
|
|
19
|
+
/** Copy an immutable `@aura3d/math` Sphere (or any `{center, radius}`) into this sphere. */
|
|
20
|
+
fromImmutable(sphere) {
|
|
21
|
+
this.center.copy(sphere.center);
|
|
22
|
+
this.radius = sphere.radius;
|
|
23
|
+
return this;
|
|
24
|
+
}
|
|
25
|
+
/** Snapshot as an immutable `@aura3d/math` Sphere (throws on a non-finite radius, like that class). */
|
|
26
|
+
toImmutable() {
|
|
27
|
+
return new ImmutableSphere(this.center.toImmutable(), this.radius);
|
|
28
|
+
}
|
|
29
|
+
set(center, radius) {
|
|
30
|
+
this.center.copy(center);
|
|
31
|
+
this.radius = radius;
|
|
32
|
+
return this;
|
|
33
|
+
}
|
|
34
|
+
setFromPoints(points, optionalCenter) {
|
|
35
|
+
const center = this.center;
|
|
36
|
+
if (optionalCenter !== undefined) {
|
|
37
|
+
center.copy(optionalCenter);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
_box.setFromPoints(points).getCenter(center);
|
|
41
|
+
}
|
|
42
|
+
let maxRadiusSq = 0;
|
|
43
|
+
for (let i = 0, il = points.length; i < il; i += 1) {
|
|
44
|
+
maxRadiusSq = Math.max(maxRadiusSq, center.distanceToSquared(points[i]));
|
|
45
|
+
}
|
|
46
|
+
this.radius = Math.sqrt(maxRadiusSq);
|
|
47
|
+
return this;
|
|
48
|
+
}
|
|
49
|
+
copy(sphere) {
|
|
50
|
+
this.center.copy(sphere.center);
|
|
51
|
+
this.radius = sphere.radius;
|
|
52
|
+
return this;
|
|
53
|
+
}
|
|
54
|
+
isEmpty() {
|
|
55
|
+
return this.radius < 0;
|
|
56
|
+
}
|
|
57
|
+
makeEmpty() {
|
|
58
|
+
this.center.set(0, 0, 0);
|
|
59
|
+
this.radius = -1;
|
|
60
|
+
return this;
|
|
61
|
+
}
|
|
62
|
+
containsPoint(point) {
|
|
63
|
+
return point.distanceToSquared(this.center) <= this.radius * this.radius;
|
|
64
|
+
}
|
|
65
|
+
distanceToPoint(point) {
|
|
66
|
+
return point.distanceTo(this.center) - this.radius;
|
|
67
|
+
}
|
|
68
|
+
intersectsSphere(sphere) {
|
|
69
|
+
const radiusSum = this.radius + sphere.radius;
|
|
70
|
+
return _distanceSq(sphere.center, this.center) <= radiusSum * radiusSum;
|
|
71
|
+
}
|
|
72
|
+
intersectsBox(box) {
|
|
73
|
+
return box.intersectsSphere(this);
|
|
74
|
+
}
|
|
75
|
+
intersectsPlane(plane) {
|
|
76
|
+
return Math.abs(plane.distanceToPoint(this.center)) <= this.radius;
|
|
77
|
+
}
|
|
78
|
+
clampPoint(point, target) {
|
|
79
|
+
const deltaLengthSq = this.center.distanceToSquared(point);
|
|
80
|
+
target.copy(point);
|
|
81
|
+
if (deltaLengthSq > this.radius * this.radius) {
|
|
82
|
+
target.sub(this.center).normalize();
|
|
83
|
+
target.multiplyScalar(this.radius).add(this.center);
|
|
84
|
+
}
|
|
85
|
+
return target;
|
|
86
|
+
}
|
|
87
|
+
getBoundingBox(target) {
|
|
88
|
+
if (this.isEmpty()) {
|
|
89
|
+
// Empty sphere produces empty bounding box
|
|
90
|
+
target.makeEmpty();
|
|
91
|
+
return target;
|
|
92
|
+
}
|
|
93
|
+
target.set(this.center, this.center);
|
|
94
|
+
target.expandByScalar(this.radius);
|
|
95
|
+
return target;
|
|
96
|
+
}
|
|
97
|
+
applyMatrix4(matrix) {
|
|
98
|
+
this.center.applyMatrix4(matrix);
|
|
99
|
+
this.radius = this.radius * matrix.getMaxScaleOnAxis();
|
|
100
|
+
return this;
|
|
101
|
+
}
|
|
102
|
+
translate(offset) {
|
|
103
|
+
this.center.add(offset);
|
|
104
|
+
return this;
|
|
105
|
+
}
|
|
106
|
+
expandByPoint(point) {
|
|
107
|
+
if (this.isEmpty()) {
|
|
108
|
+
this.center.copy(point);
|
|
109
|
+
this.radius = 0;
|
|
110
|
+
return this;
|
|
111
|
+
}
|
|
112
|
+
_v1.subVectors(point, this.center);
|
|
113
|
+
const lengthSq = _v1.lengthSq();
|
|
114
|
+
if (lengthSq > this.radius * this.radius) {
|
|
115
|
+
// calculate the minimal sphere
|
|
116
|
+
const length = Math.sqrt(lengthSq);
|
|
117
|
+
const delta = (length - this.radius) * 0.5;
|
|
118
|
+
this.center.addScaledVector(_v1, delta / length);
|
|
119
|
+
this.radius += delta;
|
|
120
|
+
}
|
|
121
|
+
return this;
|
|
122
|
+
}
|
|
123
|
+
union(sphere) {
|
|
124
|
+
if (sphere.isEmpty()) {
|
|
125
|
+
return this;
|
|
126
|
+
}
|
|
127
|
+
if (this.isEmpty()) {
|
|
128
|
+
this.copy(sphere);
|
|
129
|
+
return this;
|
|
130
|
+
}
|
|
131
|
+
if (this.center.equals(sphere.center) === true) {
|
|
132
|
+
this.radius = Math.max(this.radius, sphere.radius);
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
_v2.subVectors(sphere.center, this.center).setLength(sphere.radius);
|
|
136
|
+
this.expandByPoint(_v1.copy(sphere.center).add(_v2));
|
|
137
|
+
this.expandByPoint(_v1.copy(sphere.center).sub(_v2));
|
|
138
|
+
}
|
|
139
|
+
return this;
|
|
140
|
+
}
|
|
141
|
+
equals(sphere) {
|
|
142
|
+
return this.center.equals(sphere.center) && sphere.radius === this.radius;
|
|
143
|
+
}
|
|
144
|
+
clone() {
|
|
145
|
+
return new this.constructor().copy(this);
|
|
146
|
+
}
|
|
147
|
+
toJSON() {
|
|
148
|
+
return {
|
|
149
|
+
radius: this.radius,
|
|
150
|
+
center: this.center.toArray()
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
fromJSON(json) {
|
|
154
|
+
this.radius = json.radius;
|
|
155
|
+
this.center.fromArray(json.center);
|
|
156
|
+
return this;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
Sphere.prototype.isSphere = true;
|
|
160
|
+
function _distanceSq(a, b) {
|
|
161
|
+
const dx = a.x - b.x;
|
|
162
|
+
const dy = a.y - b.y;
|
|
163
|
+
const dz = a.z - b.z;
|
|
164
|
+
return dx * dx + dy * dy + dz * dz;
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=Sphere.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sphere.js","sourceRoot":"","sources":["../../../../../packages/math/src/three/Sphere.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Vector3 } from "./Vector3.js";
|
|
2
|
+
import { Vector4 } from "./Vector4.js";
|
|
3
|
+
import type { Vector3Like } from "./Vector3.js";
|
|
4
|
+
import type { BufferAttributeLike3 } from "./Vector3.js";
|
|
5
|
+
import type { BufferAttributeLikeW } from "./Vector4.js";
|
|
6
|
+
import type { Plane } from "./Plane.js";
|
|
7
|
+
/** Anything with `a`, `b`, `c` corners, including the immutable `@aura3d/math` Triangle. */
|
|
8
|
+
export interface TriangleCornersLike {
|
|
9
|
+
readonly a: Vector3Like;
|
|
10
|
+
readonly b: Vector3Like;
|
|
11
|
+
readonly c: Vector3Like;
|
|
12
|
+
}
|
|
13
|
+
/** Writable vector target that `getInterpolation` accumulates into (Vector2, Vector3 or Vector4). */
|
|
14
|
+
interface InterpolationTarget {
|
|
15
|
+
x: number;
|
|
16
|
+
y: number;
|
|
17
|
+
setScalar(scalar: number): unknown;
|
|
18
|
+
addScaledVector(v: never, s: number): unknown;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Mutable three.js-compatible triangle. Every modifier mutates `this` and
|
|
22
|
+
* returns `this`, exactly like three r185 `Triangle`, including the static
|
|
23
|
+
* helpers and `null` for a degenerate `getBarycoord`.
|
|
24
|
+
*/
|
|
25
|
+
export declare class Triangle {
|
|
26
|
+
a: Vector3;
|
|
27
|
+
b: Vector3;
|
|
28
|
+
c: Vector3;
|
|
29
|
+
constructor(a?: Vector3, b?: Vector3, c?: Vector3);
|
|
30
|
+
/** Copy an immutable `@aura3d/math` Triangle (or any `{a, b, c}`) into this triangle. */
|
|
31
|
+
fromImmutable(triangle: TriangleCornersLike): this;
|
|
32
|
+
static getNormal(a: Vector3Like, b: Vector3Like, c: Vector3Like, target: Vector3): Vector3;
|
|
33
|
+
static getBarycoord(point: Vector3Like, a: Vector3Like, b: Vector3Like, c: Vector3Like, target: Vector3): Vector3 | null;
|
|
34
|
+
static containsPoint(point: Vector3Like, a: Vector3Like, b: Vector3Like, c: Vector3Like): boolean;
|
|
35
|
+
static getInterpolation<T extends InterpolationTarget>(point: Vector3Like, p1: Vector3Like, p2: Vector3Like, p3: Vector3Like, v1: unknown, v2: unknown, v3: unknown, target: T): T | null;
|
|
36
|
+
static getInterpolatedAttribute(attr: BufferAttributeLikeW & BufferAttributeLike3, i1: number, i2: number, i3: number, barycoord: Vector3Like, target: Vector3 | Vector4): Vector3 | Vector4;
|
|
37
|
+
static isFrontFacing(a: Vector3Like, b: Vector3Like, c: Vector3Like, direction: Vector3Like): boolean;
|
|
38
|
+
set(a: Vector3Like, b: Vector3Like, c: Vector3Like): this;
|
|
39
|
+
setFromPointsAndIndices(points: readonly Vector3Like[], i0: number, i1: number, i2: number): this;
|
|
40
|
+
setFromAttributeAndIndices(attribute: BufferAttributeLike3, i0: number, i1: number, i2: number): this;
|
|
41
|
+
clone(): this;
|
|
42
|
+
copy(triangle: TriangleCornersLike): this;
|
|
43
|
+
getArea(): number;
|
|
44
|
+
getMidpoint(target: Vector3): Vector3;
|
|
45
|
+
getNormal(target: Vector3): Vector3;
|
|
46
|
+
getPlane(target: Plane): Plane;
|
|
47
|
+
getBarycoord(point: Vector3Like, target: Vector3): Vector3 | null;
|
|
48
|
+
getInterpolation<T extends InterpolationTarget>(point: Vector3Like, v1: unknown, v2: unknown, v3: unknown, target: T): T | null;
|
|
49
|
+
containsPoint(point: Vector3Like): boolean;
|
|
50
|
+
isFrontFacing(direction: Vector3Like): boolean;
|
|
51
|
+
intersectsBox(box: {
|
|
52
|
+
intersectsTriangle(triangle: Triangle): boolean;
|
|
53
|
+
}): boolean;
|
|
54
|
+
closestPointToPoint(p: Vector3Like, target: Vector3): Vector3;
|
|
55
|
+
equals(triangle: TriangleCornersLike): boolean;
|
|
56
|
+
}
|
|
57
|
+
export {};
|
|
58
|
+
//# sourceMappingURL=Triangle.d.ts.map
|