three-stdlib 2.35.3 → 2.35.4
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/_polyfill/CapsuleGeometry.cjs +20 -17
- package/_polyfill/CapsuleGeometry.cjs.map +1 -1
- package/_polyfill/CapsuleGeometry.js +20 -17
- package/_polyfill/CapsuleGeometry.js.map +1 -1
- package/_polyfill/constants.cjs +1 -1
- package/_polyfill/constants.cjs.map +1 -1
- package/_polyfill/constants.js +1 -1
- package/_polyfill/constants.js.map +1 -1
- package/animation/AnimationClipCreator.cjs +13 -13
- package/animation/AnimationClipCreator.cjs.map +1 -1
- package/animation/AnimationClipCreator.js +13 -13
- package/animation/AnimationClipCreator.js.map +1 -1
- package/animation/CCDIKSolver.cjs +11 -11
- package/animation/CCDIKSolver.cjs.map +1 -1
- package/animation/CCDIKSolver.js +12 -12
- package/animation/CCDIKSolver.js.map +1 -1
- package/animation/MMDAnimationHelper.cjs +1 -1
- package/animation/MMDAnimationHelper.cjs.map +1 -1
- package/animation/MMDAnimationHelper.js +1 -1
- package/animation/MMDAnimationHelper.js.map +1 -1
- package/animation/MMDPhysics.cjs +4 -4
- package/animation/MMDPhysics.cjs.map +1 -1
- package/animation/MMDPhysics.js +4 -4
- package/animation/MMDPhysics.js.map +1 -1
- package/controls/ArcballControls.cjs +2 -2
- package/controls/ArcballControls.cjs.map +1 -1
- package/controls/ArcballControls.js +3 -3
- package/controls/ArcballControls.js.map +1 -1
- package/controls/FirstPersonControls.cjs +1 -1
- package/controls/FirstPersonControls.cjs.map +1 -1
- package/controls/FirstPersonControls.js +1 -1
- package/controls/FirstPersonControls.js.map +1 -1
- package/controls/OrbitControls.cjs +2 -2
- package/controls/OrbitControls.cjs.map +1 -1
- package/controls/OrbitControls.js +3 -3
- package/controls/OrbitControls.js.map +1 -1
- package/controls/PointerLockControls.cjs +2 -2
- package/controls/PointerLockControls.cjs.map +1 -1
- package/controls/PointerLockControls.js +3 -3
- package/controls/PointerLockControls.js.map +1 -1
- package/csm/CSM.cjs +4 -4
- package/csm/CSM.cjs.map +1 -1
- package/csm/CSM.js +5 -5
- package/csm/CSM.js.map +1 -1
- package/csm/CSMFrustum.cjs +1 -1
- package/csm/CSMFrustum.cjs.map +1 -1
- package/csm/CSMFrustum.js +2 -2
- package/csm/CSMFrustum.js.map +1 -1
- package/deprecated/Geometry.cjs +722 -715
- package/deprecated/Geometry.cjs.map +1 -1
- package/deprecated/Geometry.js +723 -716
- package/deprecated/Geometry.js.map +1 -1
- package/effects/AnaglyphEffect.cjs +2 -1
- package/effects/AnaglyphEffect.cjs.map +1 -1
- package/effects/AnaglyphEffect.js +3 -2
- package/effects/AnaglyphEffect.js.map +1 -1
- package/effects/OutlineEffect.cjs +2 -1
- package/effects/OutlineEffect.cjs.map +1 -1
- package/effects/OutlineEffect.js +3 -2
- package/effects/OutlineEffect.js.map +1 -1
- package/effects/ParallaxBarrierEffect.cjs +2 -1
- package/effects/ParallaxBarrierEffect.cjs.map +1 -1
- package/effects/ParallaxBarrierEffect.js +3 -2
- package/effects/ParallaxBarrierEffect.js.map +1 -1
- package/exporters/DRACOExporter.cjs +133 -122
- package/exporters/DRACOExporter.cjs.map +1 -1
- package/exporters/DRACOExporter.d.ts +23 -21
- package/exporters/DRACOExporter.js +133 -122
- package/exporters/DRACOExporter.js.map +1 -1
- package/exporters/GLTFExporter.cjs +170 -167
- package/exporters/GLTFExporter.cjs.map +1 -1
- package/exporters/GLTFExporter.js +170 -167
- package/exporters/GLTFExporter.js.map +1 -1
- package/geometries/LightningStrike.cjs +524 -515
- package/geometries/LightningStrike.cjs.map +1 -1
- package/geometries/LightningStrike.js +524 -515
- package/geometries/LightningStrike.js.map +1 -1
- package/geometries/RoundedBoxGeometry.cjs +1 -1
- package/geometries/RoundedBoxGeometry.cjs.map +1 -1
- package/geometries/RoundedBoxGeometry.js +2 -2
- package/geometries/RoundedBoxGeometry.js.map +1 -1
- package/helpers/RaycasterHelper.cjs +2 -2
- package/helpers/RaycasterHelper.cjs.map +1 -1
- package/helpers/RaycasterHelper.js +3 -3
- package/helpers/RaycasterHelper.js.map +1 -1
- package/helpers/VertexNormalsHelper.cjs +3 -3
- package/helpers/VertexNormalsHelper.cjs.map +1 -1
- package/helpers/VertexNormalsHelper.js +4 -4
- package/helpers/VertexNormalsHelper.js.map +1 -1
- package/helpers/VertexTangentsHelper.cjs +2 -2
- package/helpers/VertexTangentsHelper.cjs.map +1 -1
- package/helpers/VertexTangentsHelper.js +3 -3
- package/helpers/VertexTangentsHelper.js.map +1 -1
- package/interactive/InteractiveGroup.cjs +1 -1
- package/interactive/InteractiveGroup.cjs.map +1 -1
- package/interactive/InteractiveGroup.js +2 -2
- package/interactive/InteractiveGroup.js.map +1 -1
- package/interactive/SelectionBox.cjs +15 -15
- package/interactive/SelectionBox.cjs.map +1 -1
- package/interactive/SelectionBox.js +16 -16
- package/interactive/SelectionBox.js.map +1 -1
- package/libs/chevrotain.cjs +1 -1
- package/libs/chevrotain.cjs.map +1 -1
- package/libs/chevrotain.js +1 -1
- package/libs/chevrotain.js.map +1 -1
- package/libs/lottie.cjs +1 -1
- package/libs/lottie.cjs.map +1 -1
- package/libs/lottie.js +1 -1
- package/libs/lottie.js.map +1 -1
- package/libs/opentype.cjs +1 -1
- package/libs/opentype.cjs.map +1 -1
- package/libs/opentype.js +1 -1
- package/libs/opentype.js.map +1 -1
- package/lights/LightProbeGenerator.cjs +5 -5
- package/lights/LightProbeGenerator.cjs.map +1 -1
- package/lights/LightProbeGenerator.js +5 -5
- package/lights/LightProbeGenerator.js.map +1 -1
- package/lights/RectAreaLightUniformsLib.cjs +3 -3
- package/lights/RectAreaLightUniformsLib.cjs.map +1 -1
- package/lights/RectAreaLightUniformsLib.js +3 -3
- package/lights/RectAreaLightUniformsLib.js.map +1 -1
- package/lines/LineMaterial.cjs +2 -1
- package/lines/LineMaterial.cjs.map +1 -1
- package/lines/LineMaterial.js +3 -2
- package/lines/LineMaterial.js.map +1 -1
- package/lines/LineSegments2.cjs +13 -13
- package/lines/LineSegments2.cjs.map +1 -1
- package/lines/LineSegments2.js +14 -14
- package/lines/LineSegments2.js.map +1 -1
- package/lines/LineSegmentsGeometry.cjs +2 -2
- package/lines/LineSegmentsGeometry.cjs.map +1 -1
- package/lines/LineSegmentsGeometry.js +3 -3
- package/lines/LineSegmentsGeometry.js.map +1 -1
- package/lines/Wireframe.cjs +3 -3
- package/lines/Wireframe.cjs.map +1 -1
- package/lines/Wireframe.js +4 -4
- package/lines/Wireframe.js.map +1 -1
- package/loaders/BasisTextureLoader.cjs +441 -435
- package/loaders/BasisTextureLoader.cjs.map +1 -1
- package/loaders/BasisTextureLoader.js +441 -435
- package/loaders/BasisTextureLoader.js.map +1 -1
- package/loaders/EXRLoader.cjs +2 -1
- package/loaders/EXRLoader.cjs.map +1 -1
- package/loaders/EXRLoader.js +3 -2
- package/loaders/EXRLoader.js.map +1 -1
- package/loaders/FBXLoader.cjs +2 -2
- package/loaders/FBXLoader.cjs.map +1 -1
- package/loaders/FBXLoader.js +2 -2
- package/loaders/FBXLoader.js.map +1 -1
- package/loaders/FontLoader.cjs +2 -2
- package/loaders/FontLoader.cjs.map +1 -1
- package/loaders/FontLoader.d.ts +2 -2
- package/loaders/FontLoader.js +2 -2
- package/loaders/FontLoader.js.map +1 -1
- package/loaders/GLTFLoader.cjs +2 -2
- package/loaders/GLTFLoader.cjs.map +1 -1
- package/loaders/GLTFLoader.js +2 -2
- package/loaders/GLTFLoader.js.map +1 -1
- package/loaders/KTX2Loader.cjs +377 -374
- package/loaders/KTX2Loader.cjs.map +1 -1
- package/loaders/KTX2Loader.js +377 -374
- package/loaders/KTX2Loader.js.map +1 -1
- package/loaders/LDrawLoader.cjs +5 -4
- package/loaders/LDrawLoader.cjs.map +1 -1
- package/loaders/LDrawLoader.js +6 -5
- package/loaders/LDrawLoader.js.map +1 -1
- package/loaders/OBJLoader.cjs +5 -5
- package/loaders/OBJLoader.cjs.map +1 -1
- package/loaders/OBJLoader.js +6 -6
- package/loaders/OBJLoader.js.map +1 -1
- package/loaders/PRWMLoader.cjs +46 -43
- package/loaders/PRWMLoader.cjs.map +1 -1
- package/loaders/PRWMLoader.js +46 -43
- package/loaders/PRWMLoader.js.map +1 -1
- package/loaders/SVGLoader.cjs +1694 -1688
- package/loaders/SVGLoader.cjs.map +1 -1
- package/loaders/SVGLoader.js +1694 -1688
- package/loaders/SVGLoader.js.map +1 -1
- package/loaders/XLoader.cjs +1 -1
- package/loaders/XLoader.cjs.map +1 -1
- package/loaders/XLoader.js +1 -1
- package/loaders/XLoader.js.map +1 -1
- package/math/Capsule.cjs +3 -3
- package/math/Capsule.cjs.map +1 -1
- package/math/Capsule.js +3 -3
- package/math/Capsule.js.map +1 -1
- package/math/ColorConverter.cjs +9 -9
- package/math/ColorConverter.cjs.map +1 -1
- package/math/ColorConverter.js +9 -9
- package/math/ColorConverter.js.map +1 -1
- package/math/ConvexHull.cjs +53 -50
- package/math/ConvexHull.cjs.map +1 -1
- package/math/ConvexHull.js +53 -50
- package/math/ConvexHull.js.map +1 -1
- package/math/ImprovedNoise.cjs +1 -1
- package/math/ImprovedNoise.cjs.map +1 -1
- package/math/ImprovedNoise.js +1 -1
- package/math/ImprovedNoise.js.map +1 -1
- package/math/MeshSurfaceSampler.cjs +2 -2
- package/math/MeshSurfaceSampler.cjs.map +1 -1
- package/math/MeshSurfaceSampler.js +2 -2
- package/math/MeshSurfaceSampler.js.map +1 -1
- package/math/OBB.cjs +14 -14
- package/math/OBB.cjs.map +1 -1
- package/math/OBB.js +15 -15
- package/math/OBB.js.map +1 -1
- package/math/Octree.cjs +7 -7
- package/math/Octree.cjs.map +1 -1
- package/math/Octree.js +8 -8
- package/math/Octree.js.map +1 -1
- package/misc/ConvexObjectBreaker.cjs +271 -268
- package/misc/ConvexObjectBreaker.cjs.map +1 -1
- package/misc/ConvexObjectBreaker.js +272 -269
- package/misc/ConvexObjectBreaker.js.map +1 -1
- package/misc/Gyroscope.cjs +6 -6
- package/misc/Gyroscope.cjs.map +1 -1
- package/misc/Gyroscope.js +7 -7
- package/misc/Gyroscope.js.map +1 -1
- package/modifiers/CurveModifier.cjs +1 -1
- package/modifiers/CurveModifier.cjs.map +1 -1
- package/modifiers/CurveModifier.js +2 -2
- package/modifiers/CurveModifier.js.map +1 -1
- package/modifiers/SimplifyModifier.cjs +2 -2
- package/modifiers/SimplifyModifier.cjs.map +1 -1
- package/modifiers/SimplifyModifier.js +2 -2
- package/modifiers/SimplifyModifier.js.map +1 -1
- package/objects/BatchedMesh.cjs +2 -2
- package/objects/BatchedMesh.cjs.map +1 -1
- package/objects/BatchedMesh.js +3 -3
- package/objects/BatchedMesh.js.map +1 -1
- package/objects/GroundProjectedEnv.cjs +2 -1
- package/objects/GroundProjectedEnv.cjs.map +1 -1
- package/objects/GroundProjectedEnv.js +3 -2
- package/objects/GroundProjectedEnv.js.map +1 -1
- package/objects/Lensflare.cjs +209 -206
- package/objects/Lensflare.cjs.map +1 -1
- package/objects/Lensflare.js +209 -206
- package/objects/Lensflare.js.map +1 -1
- package/objects/Reflector.cjs +154 -146
- package/objects/Reflector.cjs.map +1 -1
- package/objects/Reflector.js +154 -146
- package/objects/Reflector.js.map +1 -1
- package/objects/ReflectorForSSRPass.cjs +183 -180
- package/objects/ReflectorForSSRPass.cjs.map +1 -1
- package/objects/ReflectorForSSRPass.js +183 -180
- package/objects/ReflectorForSSRPass.js.map +1 -1
- package/objects/Refractor.cjs +164 -161
- package/objects/Refractor.cjs.map +1 -1
- package/objects/Refractor.js +164 -161
- package/objects/Refractor.js.map +1 -1
- package/objects/ShadowMesh.cjs +1 -1
- package/objects/ShadowMesh.cjs.map +1 -1
- package/objects/ShadowMesh.js +2 -2
- package/objects/ShadowMesh.js.map +1 -1
- package/objects/Sky.cjs +35 -32
- package/objects/Sky.cjs.map +1 -1
- package/objects/Sky.d.ts +100 -6
- package/objects/Sky.js +35 -32
- package/objects/Sky.js.map +1 -1
- package/objects/Water.cjs +2 -1
- package/objects/Water.cjs.map +1 -1
- package/objects/Water.js +3 -2
- package/objects/Water.js.map +1 -1
- package/objects/Water2.cjs +143 -140
- package/objects/Water2.cjs.map +1 -1
- package/objects/Water2.js +143 -140
- package/objects/Water2.js.map +1 -1
- package/package.json +1 -1
- package/postprocessing/SAOPass.cjs +267 -264
- package/postprocessing/SAOPass.cjs.map +1 -1
- package/postprocessing/SAOPass.js +267 -264
- package/postprocessing/SAOPass.js.map +1 -1
- package/postprocessing/SSAOPass.cjs +253 -250
- package/postprocessing/SSAOPass.cjs.map +1 -1
- package/postprocessing/SSAOPass.js +253 -250
- package/postprocessing/SSAOPass.js.map +1 -1
- package/postprocessing/SSRPass.cjs +379 -376
- package/postprocessing/SSRPass.cjs.map +1 -1
- package/postprocessing/SSRPass.js +379 -376
- package/postprocessing/SSRPass.js.map +1 -1
- package/postprocessing/UnrealBloomPass.cjs +205 -202
- package/postprocessing/UnrealBloomPass.cjs.map +1 -1
- package/postprocessing/UnrealBloomPass.js +205 -202
- package/postprocessing/UnrealBloomPass.js.map +1 -1
- package/renderers/CSS2DRenderer.cjs +5 -5
- package/renderers/CSS2DRenderer.cjs.map +1 -1
- package/renderers/CSS2DRenderer.js +5 -5
- package/renderers/CSS2DRenderer.js.map +1 -1
- package/renderers/CSS3DRenderer.cjs +5 -5
- package/renderers/CSS3DRenderer.cjs.map +1 -1
- package/renderers/CSS3DRenderer.js +6 -6
- package/renderers/CSS3DRenderer.js.map +1 -1
- package/shaders/ACESFilmicToneMappingShader.cjs +71 -46
- package/shaders/ACESFilmicToneMappingShader.cjs.map +1 -1
- package/shaders/ACESFilmicToneMappingShader.js +71 -46
- package/shaders/ACESFilmicToneMappingShader.js.map +1 -1
- package/shaders/AfterimageShader.cjs +41 -22
- package/shaders/AfterimageShader.cjs.map +1 -1
- package/shaders/AfterimageShader.js +41 -22
- package/shaders/AfterimageShader.js.map +1 -1
- package/shaders/BasicShader.cjs +20 -6
- package/shaders/BasicShader.cjs.map +1 -1
- package/shaders/BasicShader.js +20 -6
- package/shaders/BasicShader.js.map +1 -1
- package/shaders/BleachBypassShader.cjs +46 -26
- package/shaders/BleachBypassShader.cjs.map +1 -1
- package/shaders/BleachBypassShader.js +46 -26
- package/shaders/BleachBypassShader.js.map +1 -1
- package/shaders/BlendShader.cjs +33 -19
- package/shaders/BlendShader.cjs.map +1 -1
- package/shaders/BlendShader.js +33 -19
- package/shaders/BlendShader.js.map +1 -1
- package/shaders/BokehShader.cjs +117 -90
- package/shaders/BokehShader.cjs.map +1 -1
- package/shaders/BokehShader.js +117 -90
- package/shaders/BokehShader.js.map +1 -1
- package/shaders/BokehShader2.cjs +333 -232
- package/shaders/BokehShader2.cjs.map +1 -1
- package/shaders/BokehShader2.js +333 -232
- package/shaders/BokehShader2.js.map +1 -1
- package/shaders/BrightnessContrastShader.cjs +38 -22
- package/shaders/BrightnessContrastShader.cjs.map +1 -1
- package/shaders/BrightnessContrastShader.js +38 -22
- package/shaders/BrightnessContrastShader.js.map +1 -1
- package/shaders/ColorCorrectionShader.cjs +35 -21
- package/shaders/ColorCorrectionShader.cjs.map +1 -1
- package/shaders/ColorCorrectionShader.js +35 -21
- package/shaders/ColorCorrectionShader.js.map +1 -1
- package/shaders/ColorifyShader.cjs +34 -19
- package/shaders/ColorifyShader.cjs.map +1 -1
- package/shaders/ColorifyShader.js +34 -19
- package/shaders/ColorifyShader.js.map +1 -1
- package/shaders/ConvolutionShader.cjs +43 -24
- package/shaders/ConvolutionShader.cjs.map +1 -1
- package/shaders/ConvolutionShader.js +43 -24
- package/shaders/ConvolutionShader.js.map +1 -1
- package/shaders/CopyShader.cjs +30 -16
- package/shaders/CopyShader.cjs.map +1 -1
- package/shaders/CopyShader.js +30 -16
- package/shaders/CopyShader.js.map +1 -1
- package/shaders/DOFMipMapShader.cjs +38 -21
- package/shaders/DOFMipMapShader.cjs.map +1 -1
- package/shaders/DOFMipMapShader.js +38 -21
- package/shaders/DOFMipMapShader.js.map +1 -1
- package/shaders/DepthLimitedBlurShader.cjs +98 -69
- package/shaders/DepthLimitedBlurShader.cjs.map +1 -1
- package/shaders/DepthLimitedBlurShader.js +98 -69
- package/shaders/DepthLimitedBlurShader.js.map +1 -1
- package/shaders/DigitalGlitch.cjs +70 -59
- package/shaders/DigitalGlitch.cjs.map +1 -1
- package/shaders/DigitalGlitch.js +70 -59
- package/shaders/DigitalGlitch.js.map +1 -1
- package/shaders/DotScreenShader.cjs +49 -28
- package/shaders/DotScreenShader.cjs.map +1 -1
- package/shaders/DotScreenShader.js +49 -28
- package/shaders/DotScreenShader.js.map +1 -1
- package/shaders/FXAAShader.cjs +1098 -1089
- package/shaders/FXAAShader.cjs.map +1 -1
- package/shaders/FXAAShader.js +1098 -1089
- package/shaders/FXAAShader.js.map +1 -1
- package/shaders/FilmShader.cjs +57 -29
- package/shaders/FilmShader.cjs.map +1 -1
- package/shaders/FilmShader.js +57 -29
- package/shaders/FilmShader.js.map +1 -1
- package/shaders/FocusShader.cjs +70 -43
- package/shaders/FocusShader.cjs.map +1 -1
- package/shaders/FocusShader.js +70 -43
- package/shaders/FocusShader.js.map +1 -1
- package/shaders/FreiChenShader.cjs +74 -53
- package/shaders/FreiChenShader.cjs.map +1 -1
- package/shaders/FreiChenShader.js +74 -53
- package/shaders/FreiChenShader.js.map +1 -1
- package/shaders/FresnelShader.cjs +55 -35
- package/shaders/FresnelShader.cjs.map +1 -1
- package/shaders/FresnelShader.js +55 -35
- package/shaders/FresnelShader.js.map +1 -1
- package/shaders/GammaCorrectionShader.cjs +33 -19
- package/shaders/GammaCorrectionShader.cjs.map +1 -1
- package/shaders/GammaCorrectionShader.js +33 -19
- package/shaders/GammaCorrectionShader.js.map +1 -1
- package/shaders/GodRaysShader.cjs +193 -116
- package/shaders/GodRaysShader.cjs.map +1 -1
- package/shaders/GodRaysShader.js +193 -116
- package/shaders/GodRaysShader.js.map +1 -1
- package/shaders/HalftoneShader.cjs +270 -192
- package/shaders/HalftoneShader.cjs.map +1 -1
- package/shaders/HalftoneShader.js +270 -192
- package/shaders/HalftoneShader.js.map +1 -1
- package/shaders/HorizontalTiltShiftShader.cjs +43 -27
- package/shaders/HorizontalTiltShiftShader.cjs.map +1 -1
- package/shaders/HorizontalTiltShiftShader.js +43 -27
- package/shaders/HorizontalTiltShiftShader.js.map +1 -1
- package/shaders/HueSaturationShader.cjs +47 -31
- package/shaders/HueSaturationShader.cjs.map +1 -1
- package/shaders/HueSaturationShader.js +47 -31
- package/shaders/HueSaturationShader.js.map +1 -1
- package/shaders/KaleidoShader.cjs +37 -24
- package/shaders/KaleidoShader.cjs.map +1 -1
- package/shaders/KaleidoShader.js +37 -24
- package/shaders/KaleidoShader.js.map +1 -1
- package/shaders/LuminosityHighPassShader.cjs +43 -24
- package/shaders/LuminosityHighPassShader.cjs.map +1 -1
- package/shaders/LuminosityHighPassShader.js +43 -24
- package/shaders/LuminosityHighPassShader.js.map +1 -1
- package/shaders/LuminosityShader.cjs +34 -17
- package/shaders/LuminosityShader.cjs.map +1 -1
- package/shaders/LuminosityShader.js +34 -17
- package/shaders/LuminosityShader.js.map +1 -1
- package/shaders/MirrorShader.cjs +39 -26
- package/shaders/MirrorShader.cjs.map +1 -1
- package/shaders/MirrorShader.js +39 -26
- package/shaders/MirrorShader.js.map +1 -1
- package/shaders/NormalMapShader.cjs +36 -21
- package/shaders/NormalMapShader.cjs.map +1 -1
- package/shaders/NormalMapShader.js +36 -21
- package/shaders/NormalMapShader.js.map +1 -1
- package/shaders/ParallaxShader.cjs +147 -97
- package/shaders/ParallaxShader.cjs.map +1 -1
- package/shaders/ParallaxShader.js +147 -97
- package/shaders/ParallaxShader.js.map +1 -1
- package/shaders/PixelShader.cjs +31 -18
- package/shaders/PixelShader.cjs.map +1 -1
- package/shaders/PixelShader.js +31 -18
- package/shaders/PixelShader.js.map +1 -1
- package/shaders/RGBShiftShader.cjs +33 -20
- package/shaders/RGBShiftShader.cjs.map +1 -1
- package/shaders/RGBShiftShader.js +33 -20
- package/shaders/RGBShiftShader.js.map +1 -1
- package/shaders/SAOShader.cjs +154 -117
- package/shaders/SAOShader.cjs.map +1 -1
- package/shaders/SAOShader.js +154 -117
- package/shaders/SAOShader.js.map +1 -1
- package/shaders/SMAAShader.cjs +358 -270
- package/shaders/SMAAShader.cjs.map +1 -1
- package/shaders/SMAAShader.js +358 -270
- package/shaders/SMAAShader.js.map +1 -1
- package/shaders/SSAOShader.cjs +236 -142
- package/shaders/SSAOShader.cjs.map +1 -1
- package/shaders/SSAOShader.js +236 -142
- package/shaders/SSAOShader.js.map +1 -1
- package/shaders/SSRShader.cjs +4 -4
- package/shaders/SSRShader.cjs.map +1 -1
- package/shaders/SSRShader.js +4 -4
- package/shaders/SSRShader.js.map +1 -1
- package/shaders/SepiaShader.cjs +36 -20
- package/shaders/SepiaShader.cjs.map +1 -1
- package/shaders/SepiaShader.js +36 -20
- package/shaders/SepiaShader.js.map +1 -1
- package/shaders/SobelOperatorShader.cjs +64 -37
- package/shaders/SobelOperatorShader.cjs.map +1 -1
- package/shaders/SobelOperatorShader.js +64 -37
- package/shaders/SobelOperatorShader.js.map +1 -1
- package/shaders/TechnicolorShader.cjs +29 -16
- package/shaders/TechnicolorShader.cjs.map +1 -1
- package/shaders/TechnicolorShader.js +29 -16
- package/shaders/TechnicolorShader.js.map +1 -1
- package/shaders/ToneMapShader.cjs +55 -35
- package/shaders/ToneMapShader.cjs.map +1 -1
- package/shaders/ToneMapShader.js +55 -35
- package/shaders/ToneMapShader.js.map +1 -1
- package/shaders/ToonShader.cjs +275 -165
- package/shaders/ToonShader.cjs.map +1 -1
- package/shaders/ToonShader.js +275 -165
- package/shaders/ToonShader.js.map +1 -1
- package/shaders/TriangleBlurShader.cjs +50 -27
- package/shaders/TriangleBlurShader.cjs.map +1 -1
- package/shaders/TriangleBlurShader.js +50 -27
- package/shaders/TriangleBlurShader.js.map +1 -1
- package/shaders/UnpackDepthRGBAShader.cjs +32 -17
- package/shaders/UnpackDepthRGBAShader.cjs.map +1 -1
- package/shaders/UnpackDepthRGBAShader.js +32 -17
- package/shaders/UnpackDepthRGBAShader.js.map +1 -1
- package/shaders/VerticalTiltShiftShader.cjs +43 -27
- package/shaders/VerticalTiltShiftShader.cjs.map +1 -1
- package/shaders/VerticalTiltShiftShader.js +43 -27
- package/shaders/VerticalTiltShiftShader.js.map +1 -1
- package/shaders/VignetteShader.cjs +43 -27
- package/shaders/VignetteShader.cjs.map +1 -1
- package/shaders/VignetteShader.js +43 -27
- package/shaders/VignetteShader.js.map +1 -1
- package/shaders/VolumeShader.cjs +264 -213
- package/shaders/VolumeShader.cjs.map +1 -1
- package/shaders/VolumeShader.js +264 -213
- package/shaders/VolumeShader.js.map +1 -1
- package/shaders/WaterRefractionShader.cjs +63 -35
- package/shaders/WaterRefractionShader.cjs.map +1 -1
- package/shaders/WaterRefractionShader.js +63 -35
- package/shaders/WaterRefractionShader.js.map +1 -1
- package/utils/GeometryCompressionUtils.cjs +2 -1
- package/utils/GeometryCompressionUtils.cjs.map +1 -1
- package/utils/GeometryCompressionUtils.js +3 -2
- package/utils/GeometryCompressionUtils.js.map +1 -1
- package/utils/RoughnessMipmapper.cjs +3 -3
- package/utils/RoughnessMipmapper.cjs.map +1 -1
- package/utils/RoughnessMipmapper.js +4 -4
- package/utils/RoughnessMipmapper.js.map +1 -1
- package/webxr/ARButton.cjs +109 -106
- package/webxr/ARButton.cjs.map +1 -1
- package/webxr/ARButton.d.ts +4 -3
- package/webxr/ARButton.js +109 -106
- package/webxr/ARButton.js.map +1 -1
- package/webxr/OculusHandPointerModel.cjs +2 -2
- package/webxr/OculusHandPointerModel.cjs.map +1 -1
- package/webxr/OculusHandPointerModel.js +2 -2
- package/webxr/OculusHandPointerModel.js.map +1 -1
- package/webxr/VRButton.cjs +98 -95
- package/webxr/VRButton.cjs.map +1 -1
- package/webxr/VRButton.d.ts +6 -5
- package/webxr/VRButton.js +98 -95
- package/webxr/VRButton.js.map +1 -1
- package/webxr/XRHandPrimitiveModel.cjs +2 -2
- package/webxr/XRHandPrimitiveModel.cjs.map +1 -1
- package/webxr/XRHandPrimitiveModel.js +3 -3
- package/webxr/XRHandPrimitiveModel.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConvexObjectBreaker.cjs","sources":["../../src/misc/ConvexObjectBreaker.js"],"sourcesContent":["import { Line3, Mesh, Plane, Vector3 } from 'three'\nimport { ConvexGeometry } from '../geometries/ConvexGeometry'\n\n/**\n * @fileoverview This class can be used to subdivide a convex Geometry object into pieces.\n *\n * Usage:\n *\n * Use the function prepareBreakableObject to prepare a Mesh object to be broken.\n *\n * Then, call the various functions to subdivide the object (subdivideByImpact, cutByPlane)\n *\n * Sub-objects that are product of subdivision don't need prepareBreakableObject to be called on them.\n *\n * Requisites for the object:\n *\n * - Mesh object must have a buffer geometry and a material\n *\n * - Vertex normals must be planar (not smoothed)\n *\n * - The geometry must be convex (this is not checked in the library). You can create convex\n * geometries with ConvexGeometry. The BoxGeometry, SphereGeometry and other convex primitives\n * can also be used.\n *\n * Note: This lib adds member variables to object's userData member (see prepareBreakableObject function)\n * Use with caution and read the code when using with other libs.\n *\n * @param {double} minSizeForBreak Min size a debris can have to break.\n * @param {double} smallDelta Max distance to consider that a point belongs to a plane.\n *\n */\n\nconst _v1 = new Vector3()\n\nclass ConvexObjectBreaker {\n constructor(minSizeForBreak = 1.4, smallDelta = 0.0001) {\n this.minSizeForBreak = minSizeForBreak\n this.smallDelta = smallDelta\n\n this.tempLine1 = new Line3()\n this.tempPlane1 = new Plane()\n this.tempPlane2 = new Plane()\n this.tempPlane_Cut = new Plane()\n this.tempCM1 = new Vector3()\n this.tempCM2 = new Vector3()\n this.tempVector3 = new Vector3()\n this.tempVector3_2 = new Vector3()\n this.tempVector3_3 = new Vector3()\n this.tempVector3_P0 = new Vector3()\n this.tempVector3_P1 = new Vector3()\n this.tempVector3_P2 = new Vector3()\n this.tempVector3_N0 = new Vector3()\n this.tempVector3_N1 = new Vector3()\n this.tempVector3_AB = new Vector3()\n this.tempVector3_CB = new Vector3()\n this.tempResultObjects = { object1: null, object2: null }\n\n this.segments = []\n const n = 30 * 30\n for (let i = 0; i < n; i++) this.segments[i] = false\n }\n\n prepareBreakableObject(object, mass, velocity, angularVelocity, breakable) {\n // object is a Object3d (normally a Mesh), must have a buffer geometry, and it must be convex.\n // Its material property is propagated to its children (sub-pieces)\n // mass must be > 0\n\n const userData = object.userData\n userData.mass = mass\n userData.velocity = velocity.clone()\n userData.angularVelocity = angularVelocity.clone()\n userData.breakable = breakable\n }\n\n /*\n * @param {int} maxRadialIterations Iterations for radial cuts.\n * @param {int} maxRandomIterations Max random iterations for not-radial cuts\n *\n * Returns the array of pieces\n */\n subdivideByImpact(object, pointOfImpact, normal, maxRadialIterations, maxRandomIterations) {\n const debris = []\n\n const tempPlane1 = this.tempPlane1\n const tempPlane2 = this.tempPlane2\n\n this.tempVector3.addVectors(pointOfImpact, normal)\n tempPlane1.setFromCoplanarPoints(pointOfImpact, object.position, this.tempVector3)\n\n const maxTotalIterations = maxRandomIterations + maxRadialIterations\n\n const scope = this\n\n function subdivideRadial(subObject, startAngle, endAngle, numIterations) {\n if (Math.random() < numIterations * 0.05 || numIterations > maxTotalIterations) {\n debris.push(subObject)\n\n return\n }\n\n let angle = Math.PI\n\n if (numIterations === 0) {\n tempPlane2.normal.copy(tempPlane1.normal)\n tempPlane2.constant = tempPlane1.constant\n } else {\n if (numIterations <= maxRadialIterations) {\n angle = (endAngle - startAngle) * (0.2 + 0.6 * Math.random()) + startAngle\n\n // Rotate tempPlane2 at impact point around normal axis and the angle\n scope.tempVector3_2.copy(object.position).sub(pointOfImpact).applyAxisAngle(normal, angle).add(pointOfImpact)\n tempPlane2.setFromCoplanarPoints(pointOfImpact, scope.tempVector3, scope.tempVector3_2)\n } else {\n angle = (0.5 * (numIterations & 1) + 0.2 * (2 - Math.random())) * Math.PI\n\n // Rotate tempPlane2 at object position around normal axis and the angle\n scope.tempVector3_2\n .copy(pointOfImpact)\n .sub(subObject.position)\n .applyAxisAngle(normal, angle)\n .add(subObject.position)\n scope.tempVector3_3.copy(normal).add(subObject.position)\n tempPlane2.setFromCoplanarPoints(subObject.position, scope.tempVector3_3, scope.tempVector3_2)\n }\n }\n\n // Perform the cut\n scope.cutByPlane(subObject, tempPlane2, scope.tempResultObjects)\n\n const obj1 = scope.tempResultObjects.object1\n const obj2 = scope.tempResultObjects.object2\n\n if (obj1) {\n subdivideRadial(obj1, startAngle, angle, numIterations + 1)\n }\n\n if (obj2) {\n subdivideRadial(obj2, angle, endAngle, numIterations + 1)\n }\n }\n\n subdivideRadial(object, 0, 2 * Math.PI, 0)\n\n return debris\n }\n\n cutByPlane(object, plane, output) {\n // Returns breakable objects in output.object1 and output.object2 members, the resulting 2 pieces of the cut.\n // object2 can be null if the plane doesn't cut the object.\n // object1 can be null only in case of internal error\n // Returned value is number of pieces, 0 for error.\n\n const geometry = object.geometry\n const coords = geometry.attributes.position.array\n const normals = geometry.attributes.normal.array\n\n const numPoints = coords.length / 3\n let numFaces = numPoints / 3\n\n let indices = geometry.getIndex()\n\n if (indices) {\n indices = indices.array\n numFaces = indices.length / 3\n }\n\n function getVertexIndex(faceIdx, vert) {\n // vert = 0, 1 or 2.\n\n const idx = faceIdx * 3 + vert\n\n return indices ? indices[idx] : idx\n }\n\n const points1 = []\n const points2 = []\n\n const delta = this.smallDelta\n\n // Reset segments mark\n const numPointPairs = numPoints * numPoints\n for (let i = 0; i < numPointPairs; i++) this.segments[i] = false\n\n const p0 = this.tempVector3_P0\n const p1 = this.tempVector3_P1\n const n0 = this.tempVector3_N0\n const n1 = this.tempVector3_N1\n\n // Iterate through the faces to mark edges shared by coplanar faces\n for (let i = 0; i < numFaces - 1; i++) {\n const a1 = getVertexIndex(i, 0)\n const b1 = getVertexIndex(i, 1)\n const c1 = getVertexIndex(i, 2)\n\n // Assuming all 3 vertices have the same normal\n n0.set(normals[a1], normals[a1] + 1, normals[a1] + 2)\n\n for (let j = i + 1; j < numFaces; j++) {\n const a2 = getVertexIndex(j, 0)\n const b2 = getVertexIndex(j, 1)\n const c2 = getVertexIndex(j, 2)\n\n // Assuming all 3 vertices have the same normal\n n1.set(normals[a2], normals[a2] + 1, normals[a2] + 2)\n\n const coplanar = 1 - n0.dot(n1) < delta\n\n if (coplanar) {\n if (a1 === a2 || a1 === b2 || a1 === c2) {\n if (b1 === a2 || b1 === b2 || b1 === c2) {\n this.segments[a1 * numPoints + b1] = true\n this.segments[b1 * numPoints + a1] = true\n } else {\n this.segments[c1 * numPoints + a1] = true\n this.segments[a1 * numPoints + c1] = true\n }\n } else if (b1 === a2 || b1 === b2 || b1 === c2) {\n this.segments[c1 * numPoints + b1] = true\n this.segments[b1 * numPoints + c1] = true\n }\n }\n }\n }\n\n // Transform the plane to object local space\n const localPlane = this.tempPlane_Cut\n object.updateMatrix()\n ConvexObjectBreaker.transformPlaneToLocalSpace(plane, object.matrix, localPlane)\n\n // Iterate through the faces adding points to both pieces\n for (let i = 0; i < numFaces; i++) {\n const va = getVertexIndex(i, 0)\n const vb = getVertexIndex(i, 1)\n const vc = getVertexIndex(i, 2)\n\n for (let segment = 0; segment < 3; segment++) {\n const i0 = segment === 0 ? va : segment === 1 ? vb : vc\n const i1 = segment === 0 ? vb : segment === 1 ? vc : va\n\n const segmentState = this.segments[i0 * numPoints + i1]\n\n if (segmentState) continue // The segment already has been processed in another face\n\n // Mark segment as processed (also inverted segment)\n this.segments[i0 * numPoints + i1] = true\n this.segments[i1 * numPoints + i0] = true\n\n p0.set(coords[3 * i0], coords[3 * i0 + 1], coords[3 * i0 + 2])\n p1.set(coords[3 * i1], coords[3 * i1 + 1], coords[3 * i1 + 2])\n\n // mark: 1 for negative side, 2 for positive side, 3 for coplanar point\n let mark0 = 0\n\n let d = localPlane.distanceToPoint(p0)\n\n if (d > delta) {\n mark0 = 2\n points2.push(p0.clone())\n } else if (d < -delta) {\n mark0 = 1\n points1.push(p0.clone())\n } else {\n mark0 = 3\n points1.push(p0.clone())\n points2.push(p0.clone())\n }\n\n // mark: 1 for negative side, 2 for positive side, 3 for coplanar point\n let mark1 = 0\n\n d = localPlane.distanceToPoint(p1)\n\n if (d > delta) {\n mark1 = 2\n points2.push(p1.clone())\n } else if (d < -delta) {\n mark1 = 1\n points1.push(p1.clone())\n } else {\n mark1 = 3\n points1.push(p1.clone())\n points2.push(p1.clone())\n }\n\n if ((mark0 === 1 && mark1 === 2) || (mark0 === 2 && mark1 === 1)) {\n // Intersection of segment with the plane\n\n this.tempLine1.start.copy(p0)\n this.tempLine1.end.copy(p1)\n\n let intersection = new Vector3()\n intersection = localPlane.intersectLine(this.tempLine1, intersection)\n\n if (intersection === null) {\n // Shouldn't happen\n console.error('Internal error: segment does not intersect plane.')\n output.segmentedObject1 = null\n output.segmentedObject2 = null\n return 0\n }\n\n points1.push(intersection)\n points2.push(intersection.clone())\n }\n }\n }\n\n // Calculate debris mass (very fast and imprecise):\n const newMass = object.userData.mass * 0.5\n\n // Calculate debris Center of Mass (again fast and imprecise)\n this.tempCM1.set(0, 0, 0)\n let radius1 = 0\n const numPoints1 = points1.length\n\n if (numPoints1 > 0) {\n for (let i = 0; i < numPoints1; i++) this.tempCM1.add(points1[i])\n\n this.tempCM1.divideScalar(numPoints1)\n for (let i = 0; i < numPoints1; i++) {\n const p = points1[i]\n p.sub(this.tempCM1)\n radius1 = Math.max(radius1, p.x, p.y, p.z)\n }\n\n this.tempCM1.add(object.position)\n }\n\n this.tempCM2.set(0, 0, 0)\n let radius2 = 0\n const numPoints2 = points2.length\n if (numPoints2 > 0) {\n for (let i = 0; i < numPoints2; i++) this.tempCM2.add(points2[i])\n\n this.tempCM2.divideScalar(numPoints2)\n for (let i = 0; i < numPoints2; i++) {\n const p = points2[i]\n p.sub(this.tempCM2)\n radius2 = Math.max(radius2, p.x, p.y, p.z)\n }\n\n this.tempCM2.add(object.position)\n }\n\n let object1 = null\n let object2 = null\n\n let numObjects = 0\n\n if (numPoints1 > 4) {\n object1 = new Mesh(new ConvexGeometry(points1), object.material)\n object1.position.copy(this.tempCM1)\n object1.quaternion.copy(object.quaternion)\n\n this.prepareBreakableObject(\n object1,\n newMass,\n object.userData.velocity,\n object.userData.angularVelocity,\n 2 * radius1 > this.minSizeForBreak,\n )\n\n numObjects++\n }\n\n if (numPoints2 > 4) {\n object2 = new Mesh(new ConvexGeometry(points2), object.material)\n object2.position.copy(this.tempCM2)\n object2.quaternion.copy(object.quaternion)\n\n this.prepareBreakableObject(\n object2,\n newMass,\n object.userData.velocity,\n object.userData.angularVelocity,\n 2 * radius2 > this.minSizeForBreak,\n )\n\n numObjects++\n }\n\n output.object1 = object1\n output.object2 = object2\n\n return numObjects\n }\n\n static transformFreeVector(v, m) {\n // input:\n // vector interpreted as a free vector\n // THREE.Matrix4 orthogonal matrix (matrix without scale)\n\n const x = v.x,\n y = v.y,\n z = v.z\n const e = m.elements\n\n v.x = e[0] * x + e[4] * y + e[8] * z\n v.y = e[1] * x + e[5] * y + e[9] * z\n v.z = e[2] * x + e[6] * y + e[10] * z\n\n return v\n }\n\n static transformFreeVectorInverse(v, m) {\n // input:\n // vector interpreted as a free vector\n // THREE.Matrix4 orthogonal matrix (matrix without scale)\n\n const x = v.x,\n y = v.y,\n z = v.z\n const e = m.elements\n\n v.x = e[0] * x + e[1] * y + e[2] * z\n v.y = e[4] * x + e[5] * y + e[6] * z\n v.z = e[8] * x + e[9] * y + e[10] * z\n\n return v\n }\n\n static transformTiedVectorInverse(v, m) {\n // input:\n // vector interpreted as a tied (ordinary) vector\n // THREE.Matrix4 orthogonal matrix (matrix without scale)\n\n const x = v.x,\n y = v.y,\n z = v.z\n const e = m.elements\n\n v.x = e[0] * x + e[1] * y + e[2] * z - e[12]\n v.y = e[4] * x + e[5] * y + e[6] * z - e[13]\n v.z = e[8] * x + e[9] * y + e[10] * z - e[14]\n\n return v\n }\n\n static transformPlaneToLocalSpace(plane, m, resultPlane) {\n resultPlane.normal.copy(plane.normal)\n resultPlane.constant = plane.constant\n\n const referencePoint = ConvexObjectBreaker.transformTiedVectorInverse(plane.coplanarPoint(_v1), m)\n\n ConvexObjectBreaker.transformFreeVectorInverse(resultPlane.normal, m)\n\n // recalculate constant (like in setFromNormalAndCoplanarPoint)\n resultPlane.constant = -referencePoint.dot(resultPlane.normal)\n }\n}\n\nexport { ConvexObjectBreaker }\n"],"names":["Vector3","Line3","Plane","Mesh","ConvexGeometry"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ConvexObjectBreaker.cjs","sources":["../../src/misc/ConvexObjectBreaker.js"],"sourcesContent":["import { Line3, Mesh, Plane, Vector3 } from 'three'\nimport { ConvexGeometry } from '../geometries/ConvexGeometry'\n\n/**\n * @fileoverview This class can be used to subdivide a convex Geometry object into pieces.\n *\n * Usage:\n *\n * Use the function prepareBreakableObject to prepare a Mesh object to be broken.\n *\n * Then, call the various functions to subdivide the object (subdivideByImpact, cutByPlane)\n *\n * Sub-objects that are product of subdivision don't need prepareBreakableObject to be called on them.\n *\n * Requisites for the object:\n *\n * - Mesh object must have a buffer geometry and a material\n *\n * - Vertex normals must be planar (not smoothed)\n *\n * - The geometry must be convex (this is not checked in the library). You can create convex\n * geometries with ConvexGeometry. The BoxGeometry, SphereGeometry and other convex primitives\n * can also be used.\n *\n * Note: This lib adds member variables to object's userData member (see prepareBreakableObject function)\n * Use with caution and read the code when using with other libs.\n *\n * @param {double} minSizeForBreak Min size a debris can have to break.\n * @param {double} smallDelta Max distance to consider that a point belongs to a plane.\n *\n */\n\nconst _v1 = /* @__PURE__ */ new Vector3()\n\nconst ConvexObjectBreaker = /* @__PURE__ */ (() => {\n class ConvexObjectBreaker {\n constructor(minSizeForBreak = 1.4, smallDelta = 0.0001) {\n this.minSizeForBreak = minSizeForBreak\n this.smallDelta = smallDelta\n\n this.tempLine1 = new Line3()\n this.tempPlane1 = new Plane()\n this.tempPlane2 = new Plane()\n this.tempPlane_Cut = new Plane()\n this.tempCM1 = new Vector3()\n this.tempCM2 = new Vector3()\n this.tempVector3 = new Vector3()\n this.tempVector3_2 = new Vector3()\n this.tempVector3_3 = new Vector3()\n this.tempVector3_P0 = new Vector3()\n this.tempVector3_P1 = new Vector3()\n this.tempVector3_P2 = new Vector3()\n this.tempVector3_N0 = new Vector3()\n this.tempVector3_N1 = new Vector3()\n this.tempVector3_AB = new Vector3()\n this.tempVector3_CB = new Vector3()\n this.tempResultObjects = { object1: null, object2: null }\n\n this.segments = []\n const n = 30 * 30\n for (let i = 0; i < n; i++) this.segments[i] = false\n }\n\n prepareBreakableObject(object, mass, velocity, angularVelocity, breakable) {\n // object is a Object3d (normally a Mesh), must have a buffer geometry, and it must be convex.\n // Its material property is propagated to its children (sub-pieces)\n // mass must be > 0\n\n const userData = object.userData\n userData.mass = mass\n userData.velocity = velocity.clone()\n userData.angularVelocity = angularVelocity.clone()\n userData.breakable = breakable\n }\n\n /*\n * @param {int} maxRadialIterations Iterations for radial cuts.\n * @param {int} maxRandomIterations Max random iterations for not-radial cuts\n *\n * Returns the array of pieces\n */\n subdivideByImpact(object, pointOfImpact, normal, maxRadialIterations, maxRandomIterations) {\n const debris = []\n\n const tempPlane1 = this.tempPlane1\n const tempPlane2 = this.tempPlane2\n\n this.tempVector3.addVectors(pointOfImpact, normal)\n tempPlane1.setFromCoplanarPoints(pointOfImpact, object.position, this.tempVector3)\n\n const maxTotalIterations = maxRandomIterations + maxRadialIterations\n\n const scope = this\n\n function subdivideRadial(subObject, startAngle, endAngle, numIterations) {\n if (Math.random() < numIterations * 0.05 || numIterations > maxTotalIterations) {\n debris.push(subObject)\n\n return\n }\n\n let angle = Math.PI\n\n if (numIterations === 0) {\n tempPlane2.normal.copy(tempPlane1.normal)\n tempPlane2.constant = tempPlane1.constant\n } else {\n if (numIterations <= maxRadialIterations) {\n angle = (endAngle - startAngle) * (0.2 + 0.6 * Math.random()) + startAngle\n\n // Rotate tempPlane2 at impact point around normal axis and the angle\n scope.tempVector3_2\n .copy(object.position)\n .sub(pointOfImpact)\n .applyAxisAngle(normal, angle)\n .add(pointOfImpact)\n tempPlane2.setFromCoplanarPoints(pointOfImpact, scope.tempVector3, scope.tempVector3_2)\n } else {\n angle = (0.5 * (numIterations & 1) + 0.2 * (2 - Math.random())) * Math.PI\n\n // Rotate tempPlane2 at object position around normal axis and the angle\n scope.tempVector3_2\n .copy(pointOfImpact)\n .sub(subObject.position)\n .applyAxisAngle(normal, angle)\n .add(subObject.position)\n scope.tempVector3_3.copy(normal).add(subObject.position)\n tempPlane2.setFromCoplanarPoints(subObject.position, scope.tempVector3_3, scope.tempVector3_2)\n }\n }\n\n // Perform the cut\n scope.cutByPlane(subObject, tempPlane2, scope.tempResultObjects)\n\n const obj1 = scope.tempResultObjects.object1\n const obj2 = scope.tempResultObjects.object2\n\n if (obj1) {\n subdivideRadial(obj1, startAngle, angle, numIterations + 1)\n }\n\n if (obj2) {\n subdivideRadial(obj2, angle, endAngle, numIterations + 1)\n }\n }\n\n subdivideRadial(object, 0, 2 * Math.PI, 0)\n\n return debris\n }\n\n cutByPlane(object, plane, output) {\n // Returns breakable objects in output.object1 and output.object2 members, the resulting 2 pieces of the cut.\n // object2 can be null if the plane doesn't cut the object.\n // object1 can be null only in case of internal error\n // Returned value is number of pieces, 0 for error.\n\n const geometry = object.geometry\n const coords = geometry.attributes.position.array\n const normals = geometry.attributes.normal.array\n\n const numPoints = coords.length / 3\n let numFaces = numPoints / 3\n\n let indices = geometry.getIndex()\n\n if (indices) {\n indices = indices.array\n numFaces = indices.length / 3\n }\n\n function getVertexIndex(faceIdx, vert) {\n // vert = 0, 1 or 2.\n\n const idx = faceIdx * 3 + vert\n\n return indices ? indices[idx] : idx\n }\n\n const points1 = []\n const points2 = []\n\n const delta = this.smallDelta\n\n // Reset segments mark\n const numPointPairs = numPoints * numPoints\n for (let i = 0; i < numPointPairs; i++) this.segments[i] = false\n\n const p0 = this.tempVector3_P0\n const p1 = this.tempVector3_P1\n const n0 = this.tempVector3_N0\n const n1 = this.tempVector3_N1\n\n // Iterate through the faces to mark edges shared by coplanar faces\n for (let i = 0; i < numFaces - 1; i++) {\n const a1 = getVertexIndex(i, 0)\n const b1 = getVertexIndex(i, 1)\n const c1 = getVertexIndex(i, 2)\n\n // Assuming all 3 vertices have the same normal\n n0.set(normals[a1], normals[a1] + 1, normals[a1] + 2)\n\n for (let j = i + 1; j < numFaces; j++) {\n const a2 = getVertexIndex(j, 0)\n const b2 = getVertexIndex(j, 1)\n const c2 = getVertexIndex(j, 2)\n\n // Assuming all 3 vertices have the same normal\n n1.set(normals[a2], normals[a2] + 1, normals[a2] + 2)\n\n const coplanar = 1 - n0.dot(n1) < delta\n\n if (coplanar) {\n if (a1 === a2 || a1 === b2 || a1 === c2) {\n if (b1 === a2 || b1 === b2 || b1 === c2) {\n this.segments[a1 * numPoints + b1] = true\n this.segments[b1 * numPoints + a1] = true\n } else {\n this.segments[c1 * numPoints + a1] = true\n this.segments[a1 * numPoints + c1] = true\n }\n } else if (b1 === a2 || b1 === b2 || b1 === c2) {\n this.segments[c1 * numPoints + b1] = true\n this.segments[b1 * numPoints + c1] = true\n }\n }\n }\n }\n\n // Transform the plane to object local space\n const localPlane = this.tempPlane_Cut\n object.updateMatrix()\n ConvexObjectBreaker.transformPlaneToLocalSpace(plane, object.matrix, localPlane)\n\n // Iterate through the faces adding points to both pieces\n for (let i = 0; i < numFaces; i++) {\n const va = getVertexIndex(i, 0)\n const vb = getVertexIndex(i, 1)\n const vc = getVertexIndex(i, 2)\n\n for (let segment = 0; segment < 3; segment++) {\n const i0 = segment === 0 ? va : segment === 1 ? vb : vc\n const i1 = segment === 0 ? vb : segment === 1 ? vc : va\n\n const segmentState = this.segments[i0 * numPoints + i1]\n\n if (segmentState) continue // The segment already has been processed in another face\n\n // Mark segment as processed (also inverted segment)\n this.segments[i0 * numPoints + i1] = true\n this.segments[i1 * numPoints + i0] = true\n\n p0.set(coords[3 * i0], coords[3 * i0 + 1], coords[3 * i0 + 2])\n p1.set(coords[3 * i1], coords[3 * i1 + 1], coords[3 * i1 + 2])\n\n // mark: 1 for negative side, 2 for positive side, 3 for coplanar point\n let mark0 = 0\n\n let d = localPlane.distanceToPoint(p0)\n\n if (d > delta) {\n mark0 = 2\n points2.push(p0.clone())\n } else if (d < -delta) {\n mark0 = 1\n points1.push(p0.clone())\n } else {\n mark0 = 3\n points1.push(p0.clone())\n points2.push(p0.clone())\n }\n\n // mark: 1 for negative side, 2 for positive side, 3 for coplanar point\n let mark1 = 0\n\n d = localPlane.distanceToPoint(p1)\n\n if (d > delta) {\n mark1 = 2\n points2.push(p1.clone())\n } else if (d < -delta) {\n mark1 = 1\n points1.push(p1.clone())\n } else {\n mark1 = 3\n points1.push(p1.clone())\n points2.push(p1.clone())\n }\n\n if ((mark0 === 1 && mark1 === 2) || (mark0 === 2 && mark1 === 1)) {\n // Intersection of segment with the plane\n\n this.tempLine1.start.copy(p0)\n this.tempLine1.end.copy(p1)\n\n let intersection = new Vector3()\n intersection = localPlane.intersectLine(this.tempLine1, intersection)\n\n if (intersection === null) {\n // Shouldn't happen\n console.error('Internal error: segment does not intersect plane.')\n output.segmentedObject1 = null\n output.segmentedObject2 = null\n return 0\n }\n\n points1.push(intersection)\n points2.push(intersection.clone())\n }\n }\n }\n\n // Calculate debris mass (very fast and imprecise):\n const newMass = object.userData.mass * 0.5\n\n // Calculate debris Center of Mass (again fast and imprecise)\n this.tempCM1.set(0, 0, 0)\n let radius1 = 0\n const numPoints1 = points1.length\n\n if (numPoints1 > 0) {\n for (let i = 0; i < numPoints1; i++) this.tempCM1.add(points1[i])\n\n this.tempCM1.divideScalar(numPoints1)\n for (let i = 0; i < numPoints1; i++) {\n const p = points1[i]\n p.sub(this.tempCM1)\n radius1 = Math.max(radius1, p.x, p.y, p.z)\n }\n\n this.tempCM1.add(object.position)\n }\n\n this.tempCM2.set(0, 0, 0)\n let radius2 = 0\n const numPoints2 = points2.length\n if (numPoints2 > 0) {\n for (let i = 0; i < numPoints2; i++) this.tempCM2.add(points2[i])\n\n this.tempCM2.divideScalar(numPoints2)\n for (let i = 0; i < numPoints2; i++) {\n const p = points2[i]\n p.sub(this.tempCM2)\n radius2 = Math.max(radius2, p.x, p.y, p.z)\n }\n\n this.tempCM2.add(object.position)\n }\n\n let object1 = null\n let object2 = null\n\n let numObjects = 0\n\n if (numPoints1 > 4) {\n object1 = new Mesh(new ConvexGeometry(points1), object.material)\n object1.position.copy(this.tempCM1)\n object1.quaternion.copy(object.quaternion)\n\n this.prepareBreakableObject(\n object1,\n newMass,\n object.userData.velocity,\n object.userData.angularVelocity,\n 2 * radius1 > this.minSizeForBreak,\n )\n\n numObjects++\n }\n\n if (numPoints2 > 4) {\n object2 = new Mesh(new ConvexGeometry(points2), object.material)\n object2.position.copy(this.tempCM2)\n object2.quaternion.copy(object.quaternion)\n\n this.prepareBreakableObject(\n object2,\n newMass,\n object.userData.velocity,\n object.userData.angularVelocity,\n 2 * radius2 > this.minSizeForBreak,\n )\n\n numObjects++\n }\n\n output.object1 = object1\n output.object2 = object2\n\n return numObjects\n }\n\n static transformFreeVector(v, m) {\n // input:\n // vector interpreted as a free vector\n // THREE.Matrix4 orthogonal matrix (matrix without scale)\n\n const x = v.x,\n y = v.y,\n z = v.z\n const e = m.elements\n\n v.x = e[0] * x + e[4] * y + e[8] * z\n v.y = e[1] * x + e[5] * y + e[9] * z\n v.z = e[2] * x + e[6] * y + e[10] * z\n\n return v\n }\n\n static transformFreeVectorInverse(v, m) {\n // input:\n // vector interpreted as a free vector\n // THREE.Matrix4 orthogonal matrix (matrix without scale)\n\n const x = v.x,\n y = v.y,\n z = v.z\n const e = m.elements\n\n v.x = e[0] * x + e[1] * y + e[2] * z\n v.y = e[4] * x + e[5] * y + e[6] * z\n v.z = e[8] * x + e[9] * y + e[10] * z\n\n return v\n }\n\n static transformTiedVectorInverse(v, m) {\n // input:\n // vector interpreted as a tied (ordinary) vector\n // THREE.Matrix4 orthogonal matrix (matrix without scale)\n\n const x = v.x,\n y = v.y,\n z = v.z\n const e = m.elements\n\n v.x = e[0] * x + e[1] * y + e[2] * z - e[12]\n v.y = e[4] * x + e[5] * y + e[6] * z - e[13]\n v.z = e[8] * x + e[9] * y + e[10] * z - e[14]\n\n return v\n }\n\n static transformPlaneToLocalSpace(plane, m, resultPlane) {\n resultPlane.normal.copy(plane.normal)\n resultPlane.constant = plane.constant\n\n const referencePoint = ConvexObjectBreaker.transformTiedVectorInverse(plane.coplanarPoint(_v1), m)\n\n ConvexObjectBreaker.transformFreeVectorInverse(resultPlane.normal, m)\n\n // recalculate constant (like in setFromNormalAndCoplanarPoint)\n resultPlane.constant = -referencePoint.dot(resultPlane.normal)\n }\n }\n\n return ConvexObjectBreaker\n})()\n\nexport { ConvexObjectBreaker }\n"],"names":["Vector3","ConvexObjectBreaker","Line3","Plane","Mesh","ConvexGeometry"],"mappings":"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"}
|