@3driseai/3drise-viewer 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/AnimatedObject.d.ts +22 -0
- package/dist/components/AnimatedObject.d.ts.map +1 -0
- package/dist/components/AnimatedObject.js +65 -0
- package/dist/components/Bubbles.d.ts +9 -0
- package/dist/components/Bubbles.d.ts.map +1 -0
- package/dist/components/Bubbles.js +105 -0
- package/dist/components/CameraController.d.ts +10 -0
- package/dist/components/CameraController.d.ts.map +1 -0
- package/dist/components/CameraController.js +158 -0
- package/dist/components/Clouds.d.ts +9 -0
- package/dist/components/Clouds.d.ts.map +1 -0
- package/dist/components/Clouds.js +278 -0
- package/dist/components/Corona.d.ts +18 -0
- package/dist/components/Corona.d.ts.map +1 -0
- package/dist/components/Corona.js +12 -0
- package/dist/components/CreatedObject.d.ts +14 -0
- package/dist/components/CreatedObject.d.ts.map +1 -0
- package/dist/components/CreatedObject.js +103 -0
- package/dist/components/CustomPrimitive.d.ts +12 -0
- package/dist/components/CustomPrimitive.d.ts.map +1 -0
- package/dist/components/CustomPrimitive.js +87 -0
- package/dist/components/Earth.d.ts +8 -0
- package/dist/components/Earth.d.ts.map +1 -0
- package/dist/components/Earth.js +38 -0
- package/dist/components/EffectsGenerator.d.ts +10 -0
- package/dist/components/EffectsGenerator.d.ts.map +1 -0
- package/dist/components/EffectsGenerator.js +71 -0
- package/dist/components/EffectsGroup.d.ts +8 -0
- package/dist/components/EffectsGroup.d.ts.map +1 -0
- package/dist/components/EffectsGroup.js +11 -0
- package/dist/components/EnvironmentManager.d.ts +9 -0
- package/dist/components/EnvironmentManager.d.ts.map +1 -0
- package/dist/components/EnvironmentManager.js +74 -0
- package/dist/components/EnvironmentObject.d.ts +8 -0
- package/dist/components/EnvironmentObject.d.ts.map +1 -0
- package/dist/components/EnvironmentObject.js +14 -0
- package/dist/components/Flares.d.ts +24 -0
- package/dist/components/Flares.d.ts.map +1 -0
- package/dist/components/Flares.js +134 -0
- package/dist/components/Frame.d.ts +23 -0
- package/dist/components/Frame.d.ts.map +1 -0
- package/dist/components/Frame.js +55 -0
- package/dist/components/FrameGeometry.d.ts +10 -0
- package/dist/components/FrameGeometry.d.ts.map +1 -0
- package/dist/components/FrameGeometry.js +17 -0
- package/dist/components/FrameImage.d.ts +2 -0
- package/dist/components/FrameImage.d.ts.map +1 -0
- package/dist/components/FrameImage.js +15 -0
- package/dist/components/Galaxy.d.ts +10 -0
- package/dist/components/Galaxy.d.ts.map +1 -0
- package/dist/components/Galaxy.js +29 -0
- package/dist/components/GalleryLayout.d.ts +12 -0
- package/dist/components/GalleryLayout.d.ts.map +1 -0
- package/dist/components/GalleryLayout.js +20 -0
- package/dist/components/GeometryShape.d.ts +54 -0
- package/dist/components/GeometryShape.d.ts.map +1 -0
- package/dist/components/GeometryShape.js +318 -0
- package/dist/components/Glyphs.d.ts +9 -0
- package/dist/components/Glyphs.d.ts.map +1 -0
- package/dist/components/Glyphs.js +58 -0
- package/dist/components/GridHelper.d.ts +23 -0
- package/dist/components/GridHelper.d.ts.map +1 -0
- package/dist/components/GridHelper.js +36 -0
- package/dist/components/GridsGenerator.d.ts +10 -0
- package/dist/components/GridsGenerator.d.ts.map +1 -0
- package/dist/components/GridsGenerator.js +14 -0
- package/dist/components/HdrPlaylistRenderer.d.ts +10 -0
- package/dist/components/HdrPlaylistRenderer.d.ts.map +1 -0
- package/dist/components/HdrPlaylistRenderer.js +364 -0
- package/dist/components/ImageGeometry.d.ts +13 -0
- package/dist/components/ImageGeometry.d.ts.map +1 -0
- package/dist/components/ImageGeometry.js +62 -0
- package/dist/components/Lensflare.d.ts +12 -0
- package/dist/components/Lensflare.d.ts.map +1 -0
- package/dist/components/Lensflare.js +66 -0
- package/dist/components/Letter.d.ts +19 -0
- package/dist/components/Letter.d.ts.map +1 -0
- package/dist/components/Letter.js +83 -0
- package/dist/components/Letters.d.ts +16 -0
- package/dist/components/Letters.d.ts.map +1 -0
- package/dist/components/Letters.js +18 -0
- package/dist/components/LightObject.d.ts +8 -0
- package/dist/components/LightObject.d.ts.map +1 -0
- package/dist/components/LightObject.js +65 -0
- package/dist/components/LightsManager.d.ts +8 -0
- package/dist/components/LightsManager.d.ts.map +1 -0
- package/dist/components/LightsManager.js +104 -0
- package/dist/components/Lines.d.ts +9 -0
- package/dist/components/Lines.d.ts.map +1 -0
- package/dist/components/Lines.js +19 -0
- package/dist/components/LoadingIndicator.d.ts +10 -0
- package/dist/components/LoadingIndicator.d.ts.map +1 -0
- package/dist/components/LoadingIndicator.js +6 -0
- package/dist/components/MaterialLibrary.d.ts +9 -0
- package/dist/components/MaterialLibrary.d.ts.map +1 -0
- package/dist/components/MaterialLibrary.js +57 -0
- package/dist/components/Moon.d.ts +13 -0
- package/dist/components/Moon.d.ts.map +1 -0
- package/dist/components/Moon.js +66 -0
- package/dist/components/MyGrid.d.ts +15 -0
- package/dist/components/MyGrid.d.ts.map +1 -0
- package/dist/components/MyGrid.js +72 -0
- package/dist/components/ObjectNode.d.ts +13 -0
- package/dist/components/ObjectNode.d.ts.map +1 -0
- package/dist/components/ObjectNode.js +139 -0
- package/dist/components/ObjectNodeApi.d.ts +13 -0
- package/dist/components/ObjectNodeApi.d.ts.map +1 -0
- package/dist/components/ObjectNodeApi.js +18 -0
- package/dist/components/ObjectsRenderer.d.ts +15 -0
- package/dist/components/ObjectsRenderer.d.ts.map +1 -0
- package/dist/components/ObjectsRenderer.js +40 -0
- package/dist/components/ObjectsRendererApi.d.ts +31 -0
- package/dist/components/ObjectsRendererApi.d.ts.map +1 -0
- package/dist/components/ObjectsRendererApi.js +76 -0
- package/dist/components/Ocean.d.ts +8 -0
- package/dist/components/Ocean.d.ts.map +1 -0
- package/dist/components/Ocean.js +169 -0
- package/dist/components/Outline.d.ts +21 -0
- package/dist/components/Outline.d.ts.map +1 -0
- package/dist/components/Outline.js +14 -0
- package/dist/components/ParticlesR3f.d.ts +11 -0
- package/dist/components/ParticlesR3f.d.ts.map +1 -0
- package/dist/components/ParticlesR3f.js +110 -0
- package/dist/components/Path.d.ts +13 -0
- package/dist/components/Path.d.ts.map +1 -0
- package/dist/components/Path.js +41 -0
- package/dist/components/PathGeometry.d.ts +11 -0
- package/dist/components/PathGeometry.d.ts.map +1 -0
- package/dist/components/PathGeometry.js +109 -0
- package/dist/components/PathRenderer.d.ts +12 -0
- package/dist/components/PathRenderer.d.ts.map +1 -0
- package/dist/components/PathRenderer.js +36 -0
- package/dist/components/Planet.d.ts +16 -0
- package/dist/components/Planet.d.ts.map +1 -0
- package/dist/components/Planet.js +60 -0
- package/dist/components/PointCloud.d.ts +10 -0
- package/dist/components/PointCloud.d.ts.map +1 -0
- package/dist/components/PointCloud.js +113 -0
- package/dist/components/ProductionScene.d.ts +5 -0
- package/dist/components/ProductionScene.d.ts.map +1 -0
- package/dist/components/ProductionScene.js +7 -0
- package/dist/components/ProjectLoader.d.ts +16 -0
- package/dist/components/ProjectLoader.d.ts.map +1 -0
- package/dist/components/ProjectLoader.js +85 -0
- package/dist/components/Rain.d.ts +8 -0
- package/dist/components/Rain.d.ts.map +1 -0
- package/dist/components/Rain.js +259 -0
- package/dist/components/RiseLogo.d.ts +19 -0
- package/dist/components/RiseLogo.d.ts.map +1 -0
- package/dist/components/RiseLogo.js +75 -0
- package/dist/components/SceneBuilder.d.ts +5 -0
- package/dist/components/SceneBuilder.d.ts.map +1 -0
- package/dist/components/SceneBuilder.js +133 -0
- package/dist/components/SceneFog.d.ts +8 -0
- package/dist/components/SceneFog.d.ts.map +1 -0
- package/dist/components/SceneFog.js +19 -0
- package/dist/components/Shape.d.ts +5 -0
- package/dist/components/Shape.d.ts.map +1 -0
- package/dist/components/Shape.js +11 -0
- package/dist/components/ShootingStar.d.ts +16 -0
- package/dist/components/ShootingStar.d.ts.map +1 -0
- package/dist/components/ShootingStar.js +92 -0
- package/dist/components/ShootingStars.d.ts +8 -0
- package/dist/components/ShootingStars.d.ts.map +1 -0
- package/dist/components/ShootingStars.js +41 -0
- package/dist/components/SkyController.d.ts +10 -0
- package/dist/components/SkyController.d.ts.map +1 -0
- package/dist/components/SkyController.js +208 -0
- package/dist/components/SkyMesh.d.ts +10 -0
- package/dist/components/SkyMesh.d.ts.map +1 -0
- package/dist/components/SkyMesh.js +36 -0
- package/dist/components/SkySystem.d.ts +32 -0
- package/dist/components/SkySystem.d.ts.map +1 -0
- package/dist/components/SkySystem.js +46 -0
- package/dist/components/Skybox.d.ts +12 -0
- package/dist/components/Skybox.d.ts.map +1 -0
- package/dist/components/Skybox.js +92 -0
- package/dist/components/SolarSystem.d.ts +8 -0
- package/dist/components/SolarSystem.d.ts.map +1 -0
- package/dist/components/SolarSystem.js +77 -0
- package/dist/components/SparklesBurst.d.ts +9 -0
- package/dist/components/SparklesBurst.d.ts.map +1 -0
- package/dist/components/SparklesBurst.js +62 -0
- package/dist/components/Stars.d.ts +15 -0
- package/dist/components/Stars.d.ts.map +1 -0
- package/dist/components/Stars.js +250 -0
- package/dist/components/Sun.d.ts +15 -0
- package/dist/components/Sun.d.ts.map +1 -0
- package/dist/components/Sun.js +7 -0
- package/dist/components/SunCore.d.ts +18 -0
- package/dist/components/SunCore.d.ts.map +1 -0
- package/dist/components/SunCore.js +14 -0
- package/dist/components/SunLight.d.ts +15 -0
- package/dist/components/SunLight.d.ts.map +1 -0
- package/dist/components/SunLight.js +57 -0
- package/dist/components/Text2D.d.ts +9 -0
- package/dist/components/Text2D.d.ts.map +1 -0
- package/dist/components/Text2D.js +56 -0
- package/dist/components/Text3D.d.ts +10 -0
- package/dist/components/Text3D.d.ts.map +1 -0
- package/dist/components/Text3D.js +8 -0
- package/dist/components/VolumePoints.d.ts +19 -0
- package/dist/components/VolumePoints.d.ts.map +1 -0
- package/dist/components/VolumePoints.js +8 -0
- package/dist/components/cursor/AuraCursor.d.ts +6 -0
- package/dist/components/cursor/AuraCursor.d.ts.map +1 -0
- package/dist/components/cursor/AuraCursor.js +30 -0
- package/dist/components/cursor/AuroraCursor.d.ts +6 -0
- package/dist/components/cursor/AuroraCursor.d.ts.map +1 -0
- package/dist/components/cursor/AuroraCursor.js +207 -0
- package/dist/components/cursor/BubblesCursor.d.ts +6 -0
- package/dist/components/cursor/BubblesCursor.d.ts.map +1 -0
- package/dist/components/cursor/BubblesCursor.js +184 -0
- package/dist/components/cursor/CometCursor.d.ts +6 -0
- package/dist/components/cursor/CometCursor.d.ts.map +1 -0
- package/dist/components/cursor/CometCursor.js +191 -0
- package/dist/components/cursor/CrosshairCursor.d.ts +6 -0
- package/dist/components/cursor/CrosshairCursor.d.ts.map +1 -0
- package/dist/components/cursor/CrosshairCursor.js +142 -0
- package/dist/components/cursor/CursorActions.d.ts +8 -0
- package/dist/components/cursor/CursorActions.d.ts.map +1 -0
- package/dist/components/cursor/CursorActions.js +124 -0
- package/dist/components/cursor/CursorController.d.ts +10 -0
- package/dist/components/cursor/CursorController.d.ts.map +1 -0
- package/dist/components/cursor/CursorController.js +5 -0
- package/dist/components/cursor/CursorEffects.d.ts +16 -0
- package/dist/components/cursor/CursorEffects.d.ts.map +1 -0
- package/dist/components/cursor/CursorEffects.js +110 -0
- package/dist/components/cursor/FerrofluidCursor.d.ts +6 -0
- package/dist/components/cursor/FerrofluidCursor.d.ts.map +1 -0
- package/dist/components/cursor/FerrofluidCursor.js +102 -0
- package/dist/components/cursor/GlyphRingCursor.d.ts +6 -0
- package/dist/components/cursor/GlyphRingCursor.d.ts.map +1 -0
- package/dist/components/cursor/GlyphRingCursor.js +123 -0
- package/dist/components/cursor/LightningCursor.d.ts +6 -0
- package/dist/components/cursor/LightningCursor.d.ts.map +1 -0
- package/dist/components/cursor/LightningCursor.js +28 -0
- package/dist/components/cursor/LiquidMetalCursor.d.ts +6 -0
- package/dist/components/cursor/LiquidMetalCursor.d.ts.map +1 -0
- package/dist/components/cursor/LiquidMetalCursor.js +61 -0
- package/dist/components/cursor/OrbCursor.d.ts +6 -0
- package/dist/components/cursor/OrbCursor.d.ts.map +1 -0
- package/dist/components/cursor/OrbCursor.js +32 -0
- package/dist/components/cursor/PlasmaWhipCursor.d.ts +6 -0
- package/dist/components/cursor/PlasmaWhipCursor.d.ts.map +1 -0
- package/dist/components/cursor/PlasmaWhipCursor.js +134 -0
- package/dist/components/cursor/SparklesCursor.d.ts +6 -0
- package/dist/components/cursor/SparklesCursor.d.ts.map +1 -0
- package/dist/components/cursor/SparklesCursor.js +151 -0
- package/dist/components/cursor/TeslaCursor.d.ts +6 -0
- package/dist/components/cursor/TeslaCursor.d.ts.map +1 -0
- package/dist/components/cursor/TeslaCursor.js +223 -0
- package/dist/components/cursor/clickActions/BoltFlashAction.d.ts +11 -0
- package/dist/components/cursor/clickActions/BoltFlashAction.d.ts.map +1 -0
- package/dist/components/cursor/clickActions/BoltFlashAction.js +62 -0
- package/dist/components/cursor/clickActions/GlyphInscriptionAction.d.ts +11 -0
- package/dist/components/cursor/clickActions/GlyphInscriptionAction.d.ts.map +1 -0
- package/dist/components/cursor/clickActions/GlyphInscriptionAction.js +114 -0
- package/dist/components/cursor/clickActions/ImplosionAction.d.ts +11 -0
- package/dist/components/cursor/clickActions/ImplosionAction.d.ts.map +1 -0
- package/dist/components/cursor/clickActions/ImplosionAction.js +93 -0
- package/dist/components/cursor/clickActions/PhaseShiftAction.d.ts +11 -0
- package/dist/components/cursor/clickActions/PhaseShiftAction.d.ts.map +1 -0
- package/dist/components/cursor/clickActions/PhaseShiftAction.js +71 -0
- package/dist/components/cursor/clickActions/PlasmaBombAction.d.ts +11 -0
- package/dist/components/cursor/clickActions/PlasmaBombAction.d.ts.map +1 -0
- package/dist/components/cursor/clickActions/PlasmaBombAction.js +98 -0
- package/dist/components/cursor/clickActions/RealityTearAction.d.ts +11 -0
- package/dist/components/cursor/clickActions/RealityTearAction.d.ts.map +1 -0
- package/dist/components/cursor/clickActions/RealityTearAction.js +92 -0
- package/dist/components/cursor/clickActions/ShockwaveAction.d.ts +11 -0
- package/dist/components/cursor/clickActions/ShockwaveAction.d.ts.map +1 -0
- package/dist/components/cursor/clickActions/ShockwaveAction.js +55 -0
- package/dist/components/cursor/clickActions/SparklesBurstAction.d.ts +11 -0
- package/dist/components/cursor/clickActions/SparklesBurstAction.d.ts.map +1 -0
- package/dist/components/cursor/clickActions/SparklesBurstAction.js +99 -0
- package/dist/components/cursor/clickActions/VoronoiFractureAction.d.ts +11 -0
- package/dist/components/cursor/clickActions/VoronoiFractureAction.d.ts.map +1 -0
- package/dist/components/cursor/clickActions/VoronoiFractureAction.js +149 -0
- package/dist/components/effects/AuraEffect.d.ts +10 -0
- package/dist/components/effects/AuraEffect.d.ts.map +1 -0
- package/dist/components/effects/AuraEffect.js +127 -0
- package/dist/components/effects/AuroraEffect.d.ts +10 -0
- package/dist/components/effects/AuroraEffect.d.ts.map +1 -0
- package/dist/components/effects/AuroraEffect.js +112 -0
- package/dist/components/effects/BlackHoleEffect.d.ts +10 -0
- package/dist/components/effects/BlackHoleEffect.d.ts.map +1 -0
- package/dist/components/effects/BlackHoleEffect.js +193 -0
- package/dist/components/effects/ConstellationEffect.d.ts +10 -0
- package/dist/components/effects/ConstellationEffect.d.ts.map +1 -0
- package/dist/components/effects/ConstellationEffect.js +189 -0
- package/dist/components/effects/DataStreamEffect.d.ts +10 -0
- package/dist/components/effects/DataStreamEffect.d.ts.map +1 -0
- package/dist/components/effects/DataStreamEffect.js +138 -0
- package/dist/components/effects/DnaHelixEffect.d.ts +10 -0
- package/dist/components/effects/DnaHelixEffect.d.ts.map +1 -0
- package/dist/components/effects/DnaHelixEffect.js +311 -0
- package/dist/components/effects/Fire.d.ts +20 -0
- package/dist/components/effects/Fire.d.ts.map +1 -0
- package/dist/components/effects/Fire.js +208 -0
- package/dist/components/effects/FireEffect.d.ts +10 -0
- package/dist/components/effects/FireEffect.d.ts.map +1 -0
- package/dist/components/effects/FireEffect.js +194 -0
- package/dist/components/effects/ForcefieldEffect.d.ts +10 -0
- package/dist/components/effects/ForcefieldEffect.d.ts.map +1 -0
- package/dist/components/effects/ForcefieldEffect.js +132 -0
- package/dist/components/effects/HologramEffect.d.ts +10 -0
- package/dist/components/effects/HologramEffect.d.ts.map +1 -0
- package/dist/components/effects/HologramEffect.js +143 -0
- package/dist/components/effects/IceCrystalsEffect.d.ts +10 -0
- package/dist/components/effects/IceCrystalsEffect.d.ts.map +1 -0
- package/dist/components/effects/IceCrystalsEffect.js +190 -0
- package/dist/components/effects/LightningEffect.d.ts +10 -0
- package/dist/components/effects/LightningEffect.d.ts.map +1 -0
- package/dist/components/effects/LightningEffect.js +240 -0
- package/dist/components/effects/MoleculesEffect.d.ts +10 -0
- package/dist/components/effects/MoleculesEffect.d.ts.map +1 -0
- package/dist/components/effects/MoleculesEffect.js +173 -0
- package/dist/components/effects/NeuralNetworkEffect.d.ts +10 -0
- package/dist/components/effects/NeuralNetworkEffect.d.ts.map +1 -0
- package/dist/components/effects/NeuralNetworkEffect.js +188 -0
- package/dist/components/effects/OrbEffect.d.ts +10 -0
- package/dist/components/effects/OrbEffect.d.ts.map +1 -0
- package/dist/components/effects/OrbEffect.js +291 -0
- package/dist/components/effects/PortalEffect.d.ts +10 -0
- package/dist/components/effects/PortalEffect.d.ts.map +1 -0
- package/dist/components/effects/PortalEffect.js +191 -0
- package/dist/components/effects/ShockwaveEffect.d.ts +10 -0
- package/dist/components/effects/ShockwaveEffect.d.ts.map +1 -0
- package/dist/components/effects/ShockwaveEffect.js +160 -0
- package/dist/components/effects/SmokePlumeEffect.d.ts +10 -0
- package/dist/components/effects/SmokePlumeEffect.d.ts.map +1 -0
- package/dist/components/effects/SmokePlumeEffect.js +141 -0
- package/dist/components/effects/SmokeRibbon.d.ts +13 -0
- package/dist/components/effects/SmokeRibbon.d.ts.map +1 -0
- package/dist/components/effects/SmokeRibbon.js +69 -0
- package/dist/components/effects/SmokeRingEffect.d.ts +10 -0
- package/dist/components/effects/SmokeRingEffect.d.ts.map +1 -0
- package/dist/components/effects/SmokeRingEffect.js +158 -0
- package/dist/components/effects/VolumetricFogEffect.d.ts +10 -0
- package/dist/components/effects/VolumetricFogEffect.d.ts.map +1 -0
- package/dist/components/effects/VolumetricFogEffect.js +111 -0
- package/dist/components/extractOutline.d.ts +18 -0
- package/dist/components/extractOutline.d.ts.map +1 -0
- package/dist/components/extractOutline.js +47 -0
- package/dist/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +5 -0
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/use3driseShader.d.ts +17 -0
- package/dist/hooks/use3driseShader.d.ts.map +1 -0
- package/dist/hooks/use3driseShader.js +100 -0
- package/dist/hooks/useAnimationEvents.d.ts +10 -0
- package/dist/hooks/useAnimationEvents.d.ts.map +1 -0
- package/dist/hooks/useAnimationEvents.js +49 -0
- package/dist/hooks/useCameraAnimation.d.ts +35 -0
- package/dist/hooks/useCameraAnimation.d.ts.map +1 -0
- package/dist/hooks/useCameraAnimation.js +277 -0
- package/dist/hooks/useContinuousEffects.d.ts +15 -0
- package/dist/hooks/useContinuousEffects.d.ts.map +1 -0
- package/dist/hooks/useContinuousEffects.js +177 -0
- package/dist/hooks/useCubeCamera.d.ts +18 -0
- package/dist/hooks/useCubeCamera.d.ts.map +1 -0
- package/dist/hooks/useCubeCamera.js +73 -0
- package/dist/hooks/useEnvironmentEffects.d.ts +12 -0
- package/dist/hooks/useEnvironmentEffects.d.ts.map +1 -0
- package/dist/hooks/useEnvironmentEffects.js +22 -0
- package/dist/hooks/useFrameAnimations.d.ts +24 -0
- package/dist/hooks/useFrameAnimations.d.ts.map +1 -0
- package/dist/hooks/useFrameAnimations.js +217 -0
- package/dist/hooks/useFrameEffects.d.ts +6 -0
- package/dist/hooks/useFrameEffects.d.ts.map +1 -0
- package/dist/hooks/useFrameEffects.js +19 -0
- package/dist/hooks/useGsapAnimation.d.ts +122 -0
- package/dist/hooks/useGsapAnimation.d.ts.map +1 -0
- package/dist/hooks/useGsapAnimation.js +316 -0
- package/dist/hooks/useInteraction.d.ts +12 -0
- package/dist/hooks/useInteraction.d.ts.map +1 -0
- package/dist/hooks/useInteraction.js +273 -0
- package/dist/hooks/useInteractionEffects.d.ts +11 -0
- package/dist/hooks/useInteractionEffects.d.ts.map +1 -0
- package/dist/hooks/useInteractionEffects.js +74 -0
- package/dist/hooks/useKey.d.ts +26 -0
- package/dist/hooks/useKey.d.ts.map +1 -0
- package/dist/hooks/useKey.js +73 -0
- package/dist/hooks/useLightAnimation.d.ts +10 -0
- package/dist/hooks/useLightAnimation.d.ts.map +1 -0
- package/dist/hooks/useLightAnimation.js +34 -0
- package/dist/hooks/useLightHandlers.d.ts +14 -0
- package/dist/hooks/useLightHandlers.d.ts.map +1 -0
- package/dist/hooks/useLightHandlers.js +116 -0
- package/dist/hooks/useLightMouseMove.d.ts +11 -0
- package/dist/hooks/useLightMouseMove.d.ts.map +1 -0
- package/dist/hooks/useLightMouseMove.js +27 -0
- package/dist/hooks/useLightShadow.d.ts +6 -0
- package/dist/hooks/useLightShadow.d.ts.map +1 -0
- package/dist/hooks/useLightShadow.js +63 -0
- package/dist/hooks/useMaterialApplication.d.ts +4 -0
- package/dist/hooks/useMaterialApplication.d.ts.map +1 -0
- package/dist/hooks/useMaterialApplication.js +157 -0
- package/dist/hooks/useMaterialOptions.d.ts +14 -0
- package/dist/hooks/useMaterialOptions.d.ts.map +1 -0
- package/dist/hooks/useMaterialOptions.js +118 -0
- package/dist/hooks/useMaterialUniforms.d.ts +18 -0
- package/dist/hooks/useMaterialUniforms.d.ts.map +1 -0
- package/dist/hooks/useMaterialUniforms.js +96 -0
- package/dist/hooks/useMeshController.d.ts +3 -0
- package/dist/hooks/useMeshController.d.ts.map +1 -0
- package/dist/hooks/useMeshController.js +168 -0
- package/dist/hooks/useMouseHandlers.d.ts +8 -0
- package/dist/hooks/useMouseHandlers.d.ts.map +1 -0
- package/dist/hooks/useMouseHandlers.js +47 -0
- package/dist/hooks/useNumericAnimation.d.ts +5 -0
- package/dist/hooks/useNumericAnimation.d.ts.map +1 -0
- package/dist/hooks/useNumericAnimation.js +42 -0
- package/dist/hooks/useObjectAnimation.d.ts +13 -0
- package/dist/hooks/useObjectAnimation.d.ts.map +1 -0
- package/dist/hooks/useObjectAnimation.js +35 -0
- package/dist/hooks/useObjectEdges.d.ts +3 -0
- package/dist/hooks/useObjectEdges.d.ts.map +1 -0
- package/dist/hooks/useObjectEdges.js +199 -0
- package/dist/hooks/useObjectEffects.d.ts +23 -0
- package/dist/hooks/useObjectEffects.d.ts.map +1 -0
- package/dist/hooks/useObjectEffects.js +162 -0
- package/dist/hooks/useOrbitControls.d.ts +7 -0
- package/dist/hooks/useOrbitControls.d.ts.map +1 -0
- package/dist/hooks/useOrbitControls.js +9 -0
- package/dist/hooks/useOutline.d.ts +9 -0
- package/dist/hooks/useOutline.d.ts.map +1 -0
- package/dist/hooks/useOutline.js +14 -0
- package/dist/hooks/useParticlePositions.d.ts +19 -0
- package/dist/hooks/useParticlePositions.d.ts.map +1 -0
- package/dist/hooks/useParticlePositions.js +56 -0
- package/dist/hooks/useParticlesColors.d.ts +14 -0
- package/dist/hooks/useParticlesColors.d.ts.map +1 -0
- package/dist/hooks/useParticlesColors.js +27 -0
- package/dist/hooks/useParticlesTextures.d.ts +10 -0
- package/dist/hooks/useParticlesTextures.d.ts.map +1 -0
- package/dist/hooks/useParticlesTextures.js +23 -0
- package/dist/hooks/usePathAnimation.d.ts +26 -0
- package/dist/hooks/usePathAnimation.d.ts.map +1 -0
- package/dist/hooks/usePathAnimation.js +130 -0
- package/dist/hooks/useSequenceAnimation.d.ts +14 -0
- package/dist/hooks/useSequenceAnimation.d.ts.map +1 -0
- package/dist/hooks/useSequenceAnimation.js +260 -0
- package/dist/hooks/useShadowApplication.d.ts +3 -0
- package/dist/hooks/useShadowApplication.d.ts.map +1 -0
- package/dist/hooks/useShadowApplication.js +31 -0
- package/dist/hooks/useShapeGeometry.d.ts +8 -0
- package/dist/hooks/useShapeGeometry.d.ts.map +1 -0
- package/dist/hooks/useShapeGeometry.js +12 -0
- package/dist/hooks/useSkyAnimation.d.ts +13 -0
- package/dist/hooks/useSkyAnimation.d.ts.map +1 -0
- package/dist/hooks/useSkyAnimation.js +36 -0
- package/dist/hooks/useSkySystem.d.ts +25 -0
- package/dist/hooks/useSkySystem.d.ts.map +1 -0
- package/dist/hooks/useSkySystem.js +59 -0
- package/dist/hooks/useSkyUniforms.d.ts +18 -0
- package/dist/hooks/useSkyUniforms.d.ts.map +1 -0
- package/dist/hooks/useSkyUniforms.js +71 -0
- package/dist/hooks/useTransformControls.d.ts +6 -0
- package/dist/hooks/useTransformControls.d.ts.map +1 -0
- package/dist/hooks/useTransformControls.js +111 -0
- package/dist/hooks/useVolumePoints.d.ts +9 -0
- package/dist/hooks/useVolumePoints.d.ts.map +1 -0
- package/dist/hooks/useVolumePoints.js +22 -0
- package/dist/hooks/useWaterEnvironment.d.ts +5 -0
- package/dist/hooks/useWaterEnvironment.d.ts.map +1 -0
- package/dist/hooks/useWaterEnvironment.js +27 -0
- package/dist/hooks/useWaterReflections.d.ts +18 -0
- package/dist/hooks/useWaterReflections.d.ts.map +1 -0
- package/dist/hooks/useWaterReflections.js +84 -0
- package/dist/index.d.ts +146 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +119 -0
- package/dist/services/AnimationsManager.d.ts +33 -0
- package/dist/services/AnimationsManager.d.ts.map +1 -0
- package/dist/services/AnimationsManager.js +58 -0
- package/dist/services/FontManager.d.ts +32 -0
- package/dist/services/FontManager.d.ts.map +1 -0
- package/dist/services/FontManager.js +76 -0
- package/dist/services/TexturesManager.d.ts +17 -0
- package/dist/services/TexturesManager.d.ts.map +1 -0
- package/dist/services/TexturesManager.js +48 -0
- package/dist/shaders/RainMaterial.d.ts +34 -0
- package/dist/shaders/RainMaterial.d.ts.map +1 -0
- package/dist/shaders/RainMaterial.js +56 -0
- package/dist/shaders/ShaderEffectsMaterial.d.ts +228 -0
- package/dist/shaders/ShaderEffectsMaterial.d.ts.map +1 -0
- package/dist/shaders/ShaderEffectsMaterial.js +233 -0
- package/dist/shaders/ShootingStarMaterial.d.ts +14 -0
- package/dist/shaders/ShootingStarMaterial.d.ts.map +1 -0
- package/dist/shaders/ShootingStarMaterial.js +33 -0
- package/dist/shaders/SkyboxMaterial.d.ts +38 -0
- package/dist/shaders/SkyboxMaterial.d.ts.map +1 -0
- package/dist/shaders/SkyboxMaterial.js +57 -0
- package/dist/shaders/effects/EffectsVertexFunctions.glsl.d.ts +2 -0
- package/dist/shaders/effects/EffectsVertexFunctions.glsl.d.ts.map +1 -0
- package/dist/shaders/effects/EffectsVertexFunctions.glsl.js +115 -0
- package/dist/utils/CameraSingleton.d.ts +43 -0
- package/dist/utils/CameraSingleton.d.ts.map +1 -0
- package/dist/utils/CameraSingleton.js +199 -0
- package/dist/utils/anchorUtils.d.ts +10 -0
- package/dist/utils/anchorUtils.d.ts.map +1 -0
- package/dist/utils/anchorUtils.js +13 -0
- package/dist/utils/cursorPicking.d.ts +8 -0
- package/dist/utils/cursorPicking.d.ts.map +1 -0
- package/dist/utils/cursorPicking.js +35 -0
- package/dist/utils/extractOutline.d.ts +18 -0
- package/dist/utils/extractOutline.d.ts.map +1 -0
- package/dist/utils/extractOutline.js +47 -0
- package/dist/utils/frameAnimations.d.ts +49 -0
- package/dist/utils/frameAnimations.d.ts.map +1 -0
- package/dist/utils/frameAnimations.js +213 -0
- package/dist/utils/handleGenerativeEffectsAnimations.d.ts +5 -0
- package/dist/utils/handleGenerativeEffectsAnimations.d.ts.map +1 -0
- package/dist/utils/handleGenerativeEffectsAnimations.js +268 -0
- package/dist/utils/hasHoverAnimation.d.ts +3 -0
- package/dist/utils/hasHoverAnimation.d.ts.map +1 -0
- package/dist/utils/hasHoverAnimation.js +15 -0
- package/dist/utils/materialUtils.d.ts +23 -0
- package/dist/utils/materialUtils.d.ts.map +1 -0
- package/dist/utils/materialUtils.js +81 -0
- package/dist/utils/particleAnimations.d.ts +3 -0
- package/dist/utils/particleAnimations.d.ts.map +1 -0
- package/dist/utils/particleAnimations.js +17 -0
- package/dist/utils/sampleVolume.d.ts +21 -0
- package/dist/utils/sampleVolume.d.ts.map +1 -0
- package/dist/utils/sampleVolume.js +44 -0
- package/dist/utils/sceneQuery.d.ts +9 -0
- package/dist/utils/sceneQuery.d.ts.map +1 -0
- package/dist/utils/sceneQuery.js +22 -0
- package/dist/utils/shaderUtils.d.ts +6 -0
- package/dist/utils/shaderUtils.d.ts.map +1 -0
- package/dist/utils/shaderUtils.js +151 -0
- package/dist/utils/shapes.d.ts +74 -0
- package/dist/utils/shapes.d.ts.map +1 -0
- package/dist/utils/shapes.js +443 -0
- package/dist/utils/textEffects.d.ts +31 -0
- package/dist/utils/textEffects.d.ts.map +1 -0
- package/dist/utils/textEffects.js +61 -0
- package/dist/utils/utils3d.d.ts +7 -0
- package/dist/utils/utils3d.d.ts.map +1 -0
- package/dist/utils/utils3d.js +34 -0
- package/package.json +44 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { Color } from 'three';
|
|
2
|
+
export function update3driseShaderUniforms(uniforms, effects, u_time, pointer) {
|
|
3
|
+
if (!uniforms)
|
|
4
|
+
return;
|
|
5
|
+
if (uniforms.u_time)
|
|
6
|
+
uniforms.u_time.value = u_time;
|
|
7
|
+
if (uniforms.u_pointer)
|
|
8
|
+
uniforms.u_pointer.value = pointer;
|
|
9
|
+
if (effects.pointer) {
|
|
10
|
+
const { global, vertex, fragment } = effects.pointer;
|
|
11
|
+
if (global) {
|
|
12
|
+
if (uniforms.uPointerEffectRadius)
|
|
13
|
+
uniforms.uPointerEffectRadius.value = global.radius;
|
|
14
|
+
}
|
|
15
|
+
if (vertex) {
|
|
16
|
+
if (uniforms.uRippleEnabled && vertex.ripple)
|
|
17
|
+
uniforms.uRippleEnabled.value = vertex.ripple.enabled;
|
|
18
|
+
if (uniforms.uRippleIntensity && vertex.ripple)
|
|
19
|
+
uniforms.uRippleIntensity.value = vertex.ripple.intensity;
|
|
20
|
+
if (uniforms.uRippleSpeed && vertex.ripple)
|
|
21
|
+
uniforms.uRippleSpeed.value = vertex.ripple.speed;
|
|
22
|
+
if (uniforms.uGeneralRippleFrequency && vertex.ripple)
|
|
23
|
+
uniforms.uGeneralRippleFrequency.value = vertex.ripple.frequency;
|
|
24
|
+
if (uniforms.uDisplacementEnabled && vertex.displacement)
|
|
25
|
+
uniforms.uDisplacementEnabled.value = vertex.displacement.enabled;
|
|
26
|
+
if (uniforms.uDisplacementIntensity && vertex.displacement)
|
|
27
|
+
uniforms.uDisplacementIntensity.value = vertex.displacement.intensity;
|
|
28
|
+
if (uniforms.uScaleEnabled && vertex.scale)
|
|
29
|
+
uniforms.uScaleEnabled.value = vertex.scale.enabled;
|
|
30
|
+
if (uniforms.uScaleIntensity && vertex.scale)
|
|
31
|
+
uniforms.uScaleIntensity.value = vertex.scale.intensity;
|
|
32
|
+
if (uniforms.uMinScale && vertex.scale)
|
|
33
|
+
uniforms.uMinScale.value = vertex.scale.minScale;
|
|
34
|
+
if (uniforms.uMaxScale && vertex.scale)
|
|
35
|
+
uniforms.uMaxScale.value = vertex.scale.maxScale;
|
|
36
|
+
if (uniforms.uVortexEnabled && vertex.vortex)
|
|
37
|
+
uniforms.uVortexEnabled.value = vertex.vortex.enabled;
|
|
38
|
+
if (uniforms.uVortexIntensity && vertex.vortex)
|
|
39
|
+
uniforms.uVortexIntensity.value = vertex.vortex.intensity;
|
|
40
|
+
if (uniforms.uVortexSpeed && vertex.vortex)
|
|
41
|
+
uniforms.uVortexSpeed.value = vertex.vortex.speed;
|
|
42
|
+
if (uniforms.uWaveEnabled && vertex.wave)
|
|
43
|
+
uniforms.uWaveEnabled.value = vertex.wave.enabled;
|
|
44
|
+
if (uniforms.uWaveIntensity && vertex.wave)
|
|
45
|
+
uniforms.uWaveIntensity.value = vertex.wave.intensity;
|
|
46
|
+
if (uniforms.uWaveFrequency && vertex.wave)
|
|
47
|
+
uniforms.uWaveFrequency.value = vertex.wave.frequency;
|
|
48
|
+
}
|
|
49
|
+
if (fragment) {
|
|
50
|
+
if (uniforms.uGlowEnabled && fragment.glow)
|
|
51
|
+
uniforms.uGlowEnabled.value = fragment.glow.enabled;
|
|
52
|
+
if (uniforms.uGlowIntensity && fragment.glow)
|
|
53
|
+
uniforms.uGlowIntensity.value = fragment.glow.intensity;
|
|
54
|
+
if (uniforms.uGlowColor && fragment.glow)
|
|
55
|
+
uniforms.uGlowColor.value = new Color(fragment.glow.color);
|
|
56
|
+
if (uniforms.uColorShiftEnabled && fragment.colorShift)
|
|
57
|
+
uniforms.uColorShiftEnabled.value = fragment.colorShift.enabled;
|
|
58
|
+
if (uniforms.uColorShiftIntensity && fragment.colorShift)
|
|
59
|
+
uniforms.uColorShiftIntensity.value = fragment.colorShift.intensity;
|
|
60
|
+
if (uniforms.uColorShiftTarget && fragment.colorShift)
|
|
61
|
+
uniforms.uColorShiftTarget.value = new Color(fragment.colorShift.targetColor);
|
|
62
|
+
if (uniforms.uBrightnessEnabled && fragment.brightness)
|
|
63
|
+
uniforms.uBrightnessEnabled.value = fragment.brightness.enabled;
|
|
64
|
+
if (uniforms.uBrightnessIntensity && fragment.brightness)
|
|
65
|
+
uniforms.uBrightnessIntensity.value = fragment.brightness.intensity;
|
|
66
|
+
if (uniforms.uPulseEnabled && fragment.pulse)
|
|
67
|
+
uniforms.uPulseEnabled.value = fragment.pulse.enabled;
|
|
68
|
+
if (uniforms.uPulseIntensity && fragment.pulse)
|
|
69
|
+
uniforms.uPulseIntensity.value = fragment.pulse.intensity;
|
|
70
|
+
if (uniforms.uPulseSpeed && fragment.pulse)
|
|
71
|
+
uniforms.uPulseSpeed.value = fragment.pulse.speed;
|
|
72
|
+
if (uniforms.uPointerGrayscaleEnabled && fragment.grayscale)
|
|
73
|
+
uniforms.uPointerGrayscaleEnabled.value = fragment.grayscale.enabled;
|
|
74
|
+
if (uniforms.uPointerGrayscaleIntensity && fragment.grayscale)
|
|
75
|
+
uniforms.uPointerGrayscaleIntensity.value = fragment.grayscale.intensity;
|
|
76
|
+
if (uniforms.uPointerGrayscaleContrast && fragment.grayscale)
|
|
77
|
+
uniforms.uPointerGrayscaleContrast.value = fragment.grayscale.contrast;
|
|
78
|
+
if (uniforms.uPointerGrayscaleBrightness && fragment.grayscale)
|
|
79
|
+
uniforms.uPointerGrayscaleBrightness.value = fragment.grayscale.brightness;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (effects.general) {
|
|
83
|
+
const { wave, vortex, ripple, grayscale } = effects.general;
|
|
84
|
+
if (uniforms.uGeneralWaveEnabled && wave)
|
|
85
|
+
uniforms.uGeneralWaveEnabled.value = wave.enabled;
|
|
86
|
+
if (uniforms.uGeneralWaveIntensity && wave)
|
|
87
|
+
uniforms.uGeneralWaveIntensity.value = wave.intensity;
|
|
88
|
+
if (uniforms.uGeneralWaveFrequency && wave)
|
|
89
|
+
uniforms.uGeneralWaveFrequency.value = wave.frequency;
|
|
90
|
+
if (uniforms.uGeneralWaveSpeed && wave)
|
|
91
|
+
uniforms.uGeneralWaveSpeed.value = wave.speed;
|
|
92
|
+
if (uniforms.uGeneralWaveDirection && wave) {
|
|
93
|
+
uniforms.uGeneralWaveDirection.value =
|
|
94
|
+
wave.direction === 'horizontal' ? 0.0 :
|
|
95
|
+
wave.direction === 'vertical' ? 1.0 : 2.0;
|
|
96
|
+
}
|
|
97
|
+
if (uniforms.uGeneralVortexEnabled && vortex)
|
|
98
|
+
uniforms.uGeneralVortexEnabled.value = vortex.enabled;
|
|
99
|
+
if (uniforms.uGeneralVortexIntensity && vortex)
|
|
100
|
+
uniforms.uGeneralVortexIntensity.value = vortex.intensity;
|
|
101
|
+
if (uniforms.uGeneralVortexSpeed && vortex)
|
|
102
|
+
uniforms.uGeneralVortexSpeed.value = vortex.speed;
|
|
103
|
+
if (uniforms.uGeneralVortexCenterX && vortex)
|
|
104
|
+
uniforms.uGeneralVortexCenterX.value = vortex.centerX;
|
|
105
|
+
if (uniforms.uGeneralVortexCenterY && vortex)
|
|
106
|
+
uniforms.uGeneralVortexCenterY.value = vortex.centerY;
|
|
107
|
+
if (uniforms.uGeneralRippleEnabled && ripple)
|
|
108
|
+
uniforms.uGeneralRippleEnabled.value = ripple.enabled;
|
|
109
|
+
if (uniforms.uGeneralRippleIntensity && ripple)
|
|
110
|
+
uniforms.uGeneralRippleIntensity.value = ripple.intensity;
|
|
111
|
+
if (uniforms.uGeneralRippleFrequency && ripple)
|
|
112
|
+
uniforms.uGeneralRippleFrequency.value = ripple.frequency;
|
|
113
|
+
if (uniforms.uGeneralRippleSpeed && ripple)
|
|
114
|
+
uniforms.uGeneralRippleSpeed.value = ripple.speed;
|
|
115
|
+
if (uniforms.uGeneralRippleCenterX && ripple)
|
|
116
|
+
uniforms.uGeneralRippleCenterX.value = ripple.centerX;
|
|
117
|
+
if (uniforms.uGeneralRippleCenterY && ripple)
|
|
118
|
+
uniforms.uGeneralRippleCenterY.value = ripple.centerY;
|
|
119
|
+
if (uniforms.uGeneralGrayscaleEnabled && grayscale)
|
|
120
|
+
uniforms.uGeneralGrayscaleEnabled.value = grayscale.enabled;
|
|
121
|
+
if (uniforms.uGeneralGrayscaleMode && grayscale) {
|
|
122
|
+
uniforms.uGeneralGrayscaleMode.value =
|
|
123
|
+
grayscale.mode === 'static' ? 0.0 :
|
|
124
|
+
grayscale.mode === 'wave' ? 1.0 :
|
|
125
|
+
grayscale.mode === 'pulse' ? 2.0 : 3.0;
|
|
126
|
+
}
|
|
127
|
+
if (uniforms.uGeneralGrayscaleIntensity && grayscale)
|
|
128
|
+
uniforms.uGeneralGrayscaleIntensity.value = grayscale.intensity;
|
|
129
|
+
if (uniforms.uGeneralGrayscaleContrast && grayscale)
|
|
130
|
+
uniforms.uGeneralGrayscaleContrast.value = grayscale.contrast;
|
|
131
|
+
if (uniforms.uGeneralGrayscaleBrightness && grayscale)
|
|
132
|
+
uniforms.uGeneralGrayscaleBrightness.value = grayscale.brightness;
|
|
133
|
+
if (uniforms.uGeneralGrayscaleWaveFreq && grayscale)
|
|
134
|
+
uniforms.uGeneralGrayscaleWaveFreq.value = grayscale.waveFrequency;
|
|
135
|
+
if (uniforms.uGeneralGrayscaleWaveSpeed && grayscale)
|
|
136
|
+
uniforms.uGeneralGrayscaleWaveSpeed.value = grayscale.waveSpeed;
|
|
137
|
+
if (uniforms.uGeneralGrayscaleWaveDir && grayscale) {
|
|
138
|
+
uniforms.uGeneralGrayscaleWaveDir.value =
|
|
139
|
+
grayscale.waveDirection === 'horizontal' ? 0.0 :
|
|
140
|
+
grayscale.waveDirection === 'vertical' ? 1.0 : 2.0;
|
|
141
|
+
}
|
|
142
|
+
if (uniforms.uGeneralGrayscalePulseSpeed && grayscale)
|
|
143
|
+
uniforms.uGeneralGrayscalePulseSpeed.value = grayscale.pulseSpeed;
|
|
144
|
+
if (uniforms.uGeneralGrayscaleRippleSpeed && grayscale)
|
|
145
|
+
uniforms.uGeneralGrayscaleRippleSpeed.value = grayscale.rippleSpeed;
|
|
146
|
+
if (uniforms.uGeneralGrayscaleRippleCenterX && grayscale)
|
|
147
|
+
uniforms.uGeneralGrayscaleRippleCenterX.value = grayscale.rippleCenterX;
|
|
148
|
+
if (uniforms.uGeneralGrayscaleRippleCenterY && grayscale)
|
|
149
|
+
uniforms.uGeneralGrayscaleRippleCenterY.value = grayscale.rippleCenterY;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { BufferGeometry } from 'three';
|
|
2
|
+
export type ShapeName = 'heart' | 'box' | 'star' | 'polygon' | 'gear' | 'flower' | 'spade' | 'club' | 'diamond' | 'droplet' | 'lightning' | 'sparkle' | 'shield' | 'pawPrint' | 'superformula' | 'sphere' | 'cylinder' | 'cone' | 'torus' | 'plane' | 'ring' | 'arcPlane' | 'bentPlane' | 'bentPlaneInverse' | 'capsule' | 'icosahedron' | 'octahedron' | 'tetrahedron' | 'dodecahedron' | 'text' | 'point' | 'custom' | 'infinity';
|
|
3
|
+
export interface ShapeOptions {
|
|
4
|
+
type: ShapeName;
|
|
5
|
+
curveSegments?: number;
|
|
6
|
+
subdivisions?: number;
|
|
7
|
+
segments?: number;
|
|
8
|
+
rings?: number;
|
|
9
|
+
/** counts */
|
|
10
|
+
points?: number;
|
|
11
|
+
sides?: number;
|
|
12
|
+
petals?: number;
|
|
13
|
+
teeth?: number;
|
|
14
|
+
bumps?: number;
|
|
15
|
+
widthSegments?: number;
|
|
16
|
+
heightSegments?: number;
|
|
17
|
+
radialSegments?: number;
|
|
18
|
+
tubularSegments?: number;
|
|
19
|
+
thetaSegments?: number;
|
|
20
|
+
phiSegments?: number;
|
|
21
|
+
capSegments?: number;
|
|
22
|
+
detail?: number;
|
|
23
|
+
/** radii */
|
|
24
|
+
outer?: number;
|
|
25
|
+
inner?: number;
|
|
26
|
+
hole?: number;
|
|
27
|
+
radiusTop?: number;
|
|
28
|
+
radiusBottom?: number;
|
|
29
|
+
innerRadius?: number;
|
|
30
|
+
outerRadius?: number;
|
|
31
|
+
/** rect-like footprint */
|
|
32
|
+
width?: number;
|
|
33
|
+
height?: number;
|
|
34
|
+
radius?: number;
|
|
35
|
+
length?: number;
|
|
36
|
+
arc?: number;
|
|
37
|
+
startAngle?: number;
|
|
38
|
+
endAngle?: number;
|
|
39
|
+
tube?: number;
|
|
40
|
+
size?: number;
|
|
41
|
+
text?: string;
|
|
42
|
+
vertices?: number[];
|
|
43
|
+
indices?: number[];
|
|
44
|
+
normals?: number[];
|
|
45
|
+
uvs?: number[];
|
|
46
|
+
/** misc shape controls */
|
|
47
|
+
offset?: number;
|
|
48
|
+
taper?: number;
|
|
49
|
+
tail?: number;
|
|
50
|
+
vein?: boolean;
|
|
51
|
+
sharp?: number;
|
|
52
|
+
/** bevel (shared) */
|
|
53
|
+
bevelThickness?: number;
|
|
54
|
+
bevelSize?: number;
|
|
55
|
+
bevelSegments?: number;
|
|
56
|
+
/** superformula */
|
|
57
|
+
symmetry?: number;
|
|
58
|
+
roundness?: number;
|
|
59
|
+
twist1?: number;
|
|
60
|
+
twist2?: number;
|
|
61
|
+
stretchX?: number;
|
|
62
|
+
stretchY?: number;
|
|
63
|
+
samples?: number;
|
|
64
|
+
/** infinity */
|
|
65
|
+
waist?: number;
|
|
66
|
+
thickness?: number;
|
|
67
|
+
}
|
|
68
|
+
export type ShapeGenerator = (opts: ShapeOptions) => BufferGeometry;
|
|
69
|
+
/**
|
|
70
|
+
* Extensible shape registry. Each generator returns the RAW geometry only.
|
|
71
|
+
* Centering, scaling / fit, and orientation are handled separately by the host.
|
|
72
|
+
*/
|
|
73
|
+
export declare const shapeGenerators: Record<ShapeName, ShapeGenerator>;
|
|
74
|
+
//# sourceMappingURL=shapes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shapes.d.ts","sourceRoot":"","sources":["../../src/utils/shapes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,cAAc,EAAyQ,MAAM,OAAO,CAAC;AAE3T,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,cAAc,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,kBAAkB,GAAG,SAAS,GAAG,aAAa,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEpa,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0BAA0B;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,YAAY,KAAK,cAAc,CAAC;AAgBpE;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,SAAS,EAAE,cAAc,CAsa7D,CAAC"}
|
|
@@ -0,0 +1,443 @@
|
|
|
1
|
+
import { BoxGeometry, BufferGeometry, CapsuleGeometry, ConeGeometry, CylinderGeometry, DodecahedronGeometry, ExtrudeGeometry, Float32BufferAttribute, IcosahedronGeometry, OctahedronGeometry, Path, PlaneGeometry, RingGeometry, Shape, ShapeGeometry, SphereGeometry, TetrahedronGeometry, TorusGeometry, } from 'three';
|
|
2
|
+
import { mergeGeometries } from 'three/examples/jsm/utils/BufferGeometryUtils.js';
|
|
3
|
+
const safeNumber = (value, fallback, min) => {
|
|
4
|
+
const num = typeof value === 'number' && !Number.isNaN(value) ? value : fallback;
|
|
5
|
+
return min !== undefined ? Math.max(num, min) : num;
|
|
6
|
+
};
|
|
7
|
+
/** Shared extrude wrapper — keeps the bevel boilerplate out of every generator. */
|
|
8
|
+
function extrude(shape, curveSegments = 64, bevelThickness = 0.03, bevelSize = 0.03, bevelSegments = 3) {
|
|
9
|
+
return new ExtrudeGeometry(shape, {
|
|
10
|
+
curveSegments,
|
|
11
|
+
bevelEnabled: true,
|
|
12
|
+
bevelThickness,
|
|
13
|
+
bevelSize,
|
|
14
|
+
bevelSegments,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Extensible shape registry. Each generator returns the RAW geometry only.
|
|
19
|
+
* Centering, scaling / fit, and orientation are handled separately by the host.
|
|
20
|
+
*/
|
|
21
|
+
export const shapeGenerators = {
|
|
22
|
+
/* ---------------- basics ---------------- */
|
|
23
|
+
heart: ({ curveSegments, bevelThickness, bevelSize, bevelSegments }) => {
|
|
24
|
+
const s = new Shape();
|
|
25
|
+
s.moveTo(0.25, 0.25);
|
|
26
|
+
s.bezierCurveTo(0.25, 0.25, 0.20, 0, 0, 0);
|
|
27
|
+
s.bezierCurveTo(-0.30, 0, -0.30, 0.35, -0.30, 0.35);
|
|
28
|
+
s.bezierCurveTo(-0.30, 0.55, -0.10, 0.77, 0.25, 0.95);
|
|
29
|
+
s.bezierCurveTo(0.60, 0.77, 0.80, 0.55, 0.80, 0.35);
|
|
30
|
+
s.bezierCurveTo(0.80, 0.35, 0.80, 0, 0.50, 0);
|
|
31
|
+
s.bezierCurveTo(0.35, 0, 0.25, 0.25, 0.25, 0.25);
|
|
32
|
+
return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
|
|
33
|
+
},
|
|
34
|
+
box: ({ subdivisions = 1 }) => new BoxGeometry(1, 1, 1, subdivisions, subdivisions, subdivisions),
|
|
35
|
+
sphere: ({ radius, segments, rings }) => {
|
|
36
|
+
const normalizedSegments = safeNumber(segments, 32, 3);
|
|
37
|
+
return new SphereGeometry(safeNumber(radius, 0.5, 0.0001), normalizedSegments, safeNumber(rings, normalizedSegments, 2));
|
|
38
|
+
},
|
|
39
|
+
infinity: ({
|
|
40
|
+
// overall scale (half the lemniscate's reach)
|
|
41
|
+
waist = 0.14, // half-height where the two lobes meet — smaller = sharper crossing
|
|
42
|
+
thickness = 0.12, // ribbon width; drives the leaf-hole size
|
|
43
|
+
samples = 220, // silhouette resolution
|
|
44
|
+
curveSegments = 64, bevelThickness = 0.02, bevelSize = 0.02, bevelSegments = 2, }) => {
|
|
45
|
+
// Lemniscate silhouette r² = a²·cos(2θ) + b² — pointed lobes, deep solid-center waist.
|
|
46
|
+
const a = 0.5;
|
|
47
|
+
const b = Math.sqrt(a * a + waist * waist);
|
|
48
|
+
const rOf = (th) => Math.sqrt(Math.max(a * a * Math.cos(2 * th) + b * b, 1e-6));
|
|
49
|
+
const s = new Shape();
|
|
50
|
+
for (let i = 0; i <= samples; i++) {
|
|
51
|
+
const th = (i / samples) * Math.PI * 2;
|
|
52
|
+
const r = rOf(th);
|
|
53
|
+
if (i === 0)
|
|
54
|
+
s.moveTo(r * Math.cos(th), r * Math.sin(th));
|
|
55
|
+
else
|
|
56
|
+
s.lineTo(r * Math.cos(th), r * Math.sin(th));
|
|
57
|
+
}
|
|
58
|
+
s.closePath();
|
|
59
|
+
// Two leaf "eyes" — one per lobe — sized to leave a ~constant ribbon of `thickness`.
|
|
60
|
+
const xTip = rOf(0);
|
|
61
|
+
let maxY = 0;
|
|
62
|
+
for (let i = 0; i <= 120; i++) {
|
|
63
|
+
const th = -Math.PI / 4 + (i / 120) * (Math.PI / 2);
|
|
64
|
+
maxY = Math.max(maxY, Math.abs(rOf(th) * Math.sin(th)));
|
|
65
|
+
}
|
|
66
|
+
const xIn = thickness * 1.2;
|
|
67
|
+
const xOut = xTip - thickness;
|
|
68
|
+
const xc = (xIn + xOut) / 2;
|
|
69
|
+
const Lx = Math.max((xOut - xIn) / 2, 0.02);
|
|
70
|
+
const Ly = Math.max(maxY - thickness, 0.02);
|
|
71
|
+
const eye = (cx) => {
|
|
72
|
+
const h = new Path();
|
|
73
|
+
h.moveTo(cx - Lx, 0);
|
|
74
|
+
h.quadraticCurveTo(cx, Ly, cx + Lx, 0);
|
|
75
|
+
h.quadraticCurveTo(cx, -Ly, cx - Lx, 0);
|
|
76
|
+
h.closePath();
|
|
77
|
+
return h;
|
|
78
|
+
};
|
|
79
|
+
s.holes.push(eye(xc), eye(-xc));
|
|
80
|
+
return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
|
|
81
|
+
},
|
|
82
|
+
cylinder: ({ radiusTop, radiusBottom, height, radialSegments }) => new CylinderGeometry(safeNumber(radiusTop, 0.5, 0.0001), safeNumber(radiusBottom, 0.5, 0.0001), safeNumber(height, 1, 0.0001), safeNumber(radialSegments, 32, 3)),
|
|
83
|
+
cone: ({ radius, height, radialSegments }) => new ConeGeometry(safeNumber(radius, 0.5, 0.0001), safeNumber(height, 1, 0.0001), safeNumber(radialSegments, 32, 3)),
|
|
84
|
+
torus: ({ radius, tube, radialSegments, tubularSegments }) => new TorusGeometry(safeNumber(radius, 0.5, 0.0001), safeNumber(tube, 0.2, 0.0001), safeNumber(radialSegments, 16, 3), safeNumber(tubularSegments, 100, 3)),
|
|
85
|
+
plane: ({ width, height, widthSegments, heightSegments }) => new PlaneGeometry(safeNumber(width, 1, 0.0001), safeNumber(height, 1, 0.0001), safeNumber(widthSegments, 1, 1), safeNumber(heightSegments, 1, 1)),
|
|
86
|
+
ring: ({ innerRadius, outerRadius, thetaSegments, phiSegments }) => new RingGeometry(safeNumber(innerRadius, 0.3, 0.0001), safeNumber(outerRadius, 0.8, 0.0001), safeNumber(thetaSegments, 32, 3), safeNumber(phiSegments, 8, 1)),
|
|
87
|
+
arcPlane: ({ radius, startAngle, endAngle, width, segments }) => {
|
|
88
|
+
const safeRadius = safeNumber(radius, 1, 0.0001);
|
|
89
|
+
const safeWidth = safeNumber(width, 0.2, 0.0001);
|
|
90
|
+
const safeStart = safeNumber(startAngle, 0);
|
|
91
|
+
const safeEnd = safeNumber(endAngle, Math.PI);
|
|
92
|
+
const shape = new Shape();
|
|
93
|
+
shape.absarc(0, 0, safeRadius, safeStart, safeEnd, false);
|
|
94
|
+
shape.lineTo(Math.cos(safeEnd) * (safeRadius - safeWidth), Math.sin(safeEnd) * (safeRadius - safeWidth));
|
|
95
|
+
shape.absarc(0, 0, safeRadius - safeWidth, safeEnd, safeStart, true);
|
|
96
|
+
shape.closePath();
|
|
97
|
+
return new ShapeGeometry(shape, safeNumber(segments, 32, 3));
|
|
98
|
+
},
|
|
99
|
+
bentPlane: ({ height = 1, radius = 2, arc = Math.PI / 2, widthSegments = 32, heightSegments = 1 }) => {
|
|
100
|
+
const geometry = new BufferGeometry();
|
|
101
|
+
const vertices = [];
|
|
102
|
+
const indices = [];
|
|
103
|
+
const uvs = [];
|
|
104
|
+
const safeHeight = safeNumber(height, 1, 0.0001);
|
|
105
|
+
const safeRadius = safeNumber(radius, 2, 0.0001);
|
|
106
|
+
const safeArc = safeNumber(arc, Math.PI / 2, 0.0001);
|
|
107
|
+
const safeWidthSegments = safeNumber(widthSegments, 32, 1);
|
|
108
|
+
const safeHeightSegments = safeNumber(heightSegments, 1, 1);
|
|
109
|
+
const startAngle = -safeArc / 2;
|
|
110
|
+
const endAngle = safeArc / 2;
|
|
111
|
+
for (let j = 0; j <= safeHeightSegments; j++) {
|
|
112
|
+
const v = j / safeHeightSegments;
|
|
113
|
+
const y = (v - 0.5) * safeHeight;
|
|
114
|
+
for (let i = 0; i <= safeWidthSegments; i++) {
|
|
115
|
+
const u = i / safeWidthSegments;
|
|
116
|
+
const angle = startAngle + (endAngle - startAngle) * u;
|
|
117
|
+
vertices.push(Math.sin(angle) * safeRadius, y, Math.cos(angle) * safeRadius - safeRadius);
|
|
118
|
+
uvs.push(u, v);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
for (let j = 0; j < safeHeightSegments; j++) {
|
|
122
|
+
for (let i = 0; i < safeWidthSegments; i++) {
|
|
123
|
+
const a = i + (safeWidthSegments + 1) * j;
|
|
124
|
+
const b = i + (safeWidthSegments + 1) * (j + 1);
|
|
125
|
+
const c = (i + 1) + (safeWidthSegments + 1) * (j + 1);
|
|
126
|
+
const d = (i + 1) + (safeWidthSegments + 1) * j;
|
|
127
|
+
indices.push(a, b, d, b, c, d);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
geometry.setAttribute('position', new Float32BufferAttribute(vertices, 3));
|
|
131
|
+
geometry.setAttribute('uv', new Float32BufferAttribute(uvs, 2));
|
|
132
|
+
geometry.setIndex(indices);
|
|
133
|
+
geometry.computeVertexNormals();
|
|
134
|
+
return geometry;
|
|
135
|
+
},
|
|
136
|
+
bentPlaneInverse: ({ height = 1, radius = 2, arc = Math.PI / 2, widthSegments = 32, heightSegments = 1 }) => {
|
|
137
|
+
const geometry = new BufferGeometry();
|
|
138
|
+
const vertices = [];
|
|
139
|
+
const indices = [];
|
|
140
|
+
const uvs = [];
|
|
141
|
+
const safeHeight = safeNumber(height, 1, 0.0001);
|
|
142
|
+
const safeRadius = safeNumber(radius, 2, 0.0001);
|
|
143
|
+
const safeArc = safeNumber(arc, Math.PI / 2, 0.0001);
|
|
144
|
+
const safeWidthSegments = safeNumber(widthSegments, 32, 1);
|
|
145
|
+
const safeHeightSegments = safeNumber(heightSegments, 1, 1);
|
|
146
|
+
const startAngle = -safeArc / 2;
|
|
147
|
+
const endAngle = safeArc / 2;
|
|
148
|
+
for (let j = 0; j <= safeHeightSegments; j++) {
|
|
149
|
+
const v = j / safeHeightSegments;
|
|
150
|
+
const y = (v - 0.5) * safeHeight;
|
|
151
|
+
for (let i = 0; i <= safeWidthSegments; i++) {
|
|
152
|
+
const u = i / safeWidthSegments;
|
|
153
|
+
const angle = startAngle + (endAngle - startAngle) * u;
|
|
154
|
+
vertices.push(Math.sin(angle) * safeRadius, y, -Math.cos(angle) * safeRadius + safeRadius);
|
|
155
|
+
uvs.push(u, v);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
for (let j = 0; j < safeHeightSegments; j++) {
|
|
159
|
+
for (let i = 0; i < safeWidthSegments; i++) {
|
|
160
|
+
const a = i + (safeWidthSegments + 1) * j;
|
|
161
|
+
const b = i + (safeWidthSegments + 1) * (j + 1);
|
|
162
|
+
const c = (i + 1) + (safeWidthSegments + 1) * (j + 1);
|
|
163
|
+
const d = (i + 1) + (safeWidthSegments + 1) * j;
|
|
164
|
+
indices.push(a, b, d, b, c, d);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
geometry.setAttribute('position', new Float32BufferAttribute(vertices, 3));
|
|
168
|
+
geometry.setAttribute('uv', new Float32BufferAttribute(uvs, 2));
|
|
169
|
+
geometry.setIndex(indices);
|
|
170
|
+
geometry.computeVertexNormals();
|
|
171
|
+
return geometry;
|
|
172
|
+
},
|
|
173
|
+
capsule: ({ radius, length, capSegments, radialSegments }) => new CapsuleGeometry(safeNumber(radius, 0.3, 0.0001), safeNumber(length, 1.0, 0.0001), safeNumber(capSegments, 4, 1), safeNumber(radialSegments, 8, 3)),
|
|
174
|
+
icosahedron: ({ radius, detail }) => new IcosahedronGeometry(safeNumber(radius, 0.5, 0.0001), safeNumber(detail, 0, 0)),
|
|
175
|
+
octahedron: ({ radius, detail }) => new OctahedronGeometry(safeNumber(radius, 0.5, 0.0001), safeNumber(detail, 0, 0)),
|
|
176
|
+
tetrahedron: ({ radius, detail }) => new TetrahedronGeometry(safeNumber(radius, 0.5, 0.0001), safeNumber(detail, 0, 0)),
|
|
177
|
+
dodecahedron: ({ radius, detail }) => new DodecahedronGeometry(safeNumber(radius, 0.5, 0.0001), safeNumber(detail, 0, 0)),
|
|
178
|
+
text: ({ text = 'Hello', size, height }) => new BoxGeometry(text.length * safeNumber(size, 1, 0.0001) * 0.6, safeNumber(size, 1, 0.0001), safeNumber(height, 0.2, 0.0001)),
|
|
179
|
+
point: ({ size }) => new SphereGeometry(safeNumber(size, 0.1, 0.0001), 16, 16),
|
|
180
|
+
custom: ({ vertices = [], indices = [], normals, uvs }) => {
|
|
181
|
+
console.log('custom shape generator called with vertices:', vertices.length, 'indices:', indices.length, 'normals:', normals?.length, 'uvs:', uvs?.length);
|
|
182
|
+
const geometry = new BufferGeometry();
|
|
183
|
+
if (vertices.length > 0) {
|
|
184
|
+
geometry.setAttribute('position', new Float32BufferAttribute(vertices, 3));
|
|
185
|
+
}
|
|
186
|
+
if (indices.length > 0) {
|
|
187
|
+
geometry.setIndex(indices);
|
|
188
|
+
}
|
|
189
|
+
if (normals && normals.length === vertices.length) {
|
|
190
|
+
geometry.setAttribute('normal', new Float32BufferAttribute(normals, 3));
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
geometry.computeVertexNormals();
|
|
194
|
+
}
|
|
195
|
+
if (uvs && uvs.length === (vertices.length / 3) * 2) {
|
|
196
|
+
geometry.setAttribute('uv', new Float32BufferAttribute(uvs, 2));
|
|
197
|
+
}
|
|
198
|
+
else if (vertices.length > 0) {
|
|
199
|
+
const vertexCount = vertices.length / 3;
|
|
200
|
+
const autoUvs = new Float32Array(vertexCount * 2);
|
|
201
|
+
let minX = Infinity;
|
|
202
|
+
let maxX = -Infinity;
|
|
203
|
+
let minZ = Infinity;
|
|
204
|
+
let maxZ = -Infinity;
|
|
205
|
+
for (let i = 0; i < vertexCount; i++) {
|
|
206
|
+
const x = vertices[i * 3];
|
|
207
|
+
const z = vertices[i * 3 + 2];
|
|
208
|
+
minX = Math.min(minX, x);
|
|
209
|
+
maxX = Math.max(maxX, x);
|
|
210
|
+
minZ = Math.min(minZ, z);
|
|
211
|
+
maxZ = Math.max(maxZ, z);
|
|
212
|
+
}
|
|
213
|
+
const rangeX = maxX - minX || 1;
|
|
214
|
+
const rangeZ = maxZ - minZ || 1;
|
|
215
|
+
for (let i = 0; i < vertexCount; i++) {
|
|
216
|
+
autoUvs[i * 2] = (vertices[i * 3] - minX) / rangeX;
|
|
217
|
+
autoUvs[i * 2 + 1] = (vertices[i * 3 + 2] - minZ) / rangeZ;
|
|
218
|
+
}
|
|
219
|
+
geometry.setAttribute('uv', new Float32BufferAttribute(autoUvs, 2));
|
|
220
|
+
}
|
|
221
|
+
return geometry;
|
|
222
|
+
},
|
|
223
|
+
star: ({ points = 5, outer = 0.5, inner = 0.2, curveSegments, bevelThickness, bevelSize, bevelSegments }) => {
|
|
224
|
+
const s = new Shape();
|
|
225
|
+
for (let i = 0; i < points * 2; i++) {
|
|
226
|
+
const r = i % 2 === 0 ? outer : inner;
|
|
227
|
+
const a = (i / (points * 2)) * Math.PI * 2 + Math.PI / 2;
|
|
228
|
+
if (i === 0)
|
|
229
|
+
s.moveTo(Math.cos(a) * r, Math.sin(a) * r);
|
|
230
|
+
else
|
|
231
|
+
s.lineTo(Math.cos(a) * r, Math.sin(a) * r);
|
|
232
|
+
}
|
|
233
|
+
s.closePath();
|
|
234
|
+
return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
|
|
235
|
+
},
|
|
236
|
+
polygon: ({ sides = 6, curveSegments, bevelThickness, bevelSize, bevelSegments }) => {
|
|
237
|
+
const s = new Shape();
|
|
238
|
+
for (let i = 0; i < sides; i++) {
|
|
239
|
+
const a = (i / sides) * Math.PI * 2 + Math.PI / 2;
|
|
240
|
+
if (i === 0)
|
|
241
|
+
s.moveTo(Math.cos(a) * 0.5, Math.sin(a) * 0.5);
|
|
242
|
+
else
|
|
243
|
+
s.lineTo(Math.cos(a) * 0.5, Math.sin(a) * 0.5);
|
|
244
|
+
}
|
|
245
|
+
s.closePath();
|
|
246
|
+
return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
|
|
247
|
+
},
|
|
248
|
+
gear: ({ teeth = 12, outer = 0.5, inner = 0.38, hole = 0.16, curveSegments, bevelThickness = 0.02, bevelSize = 0.02, bevelSegments = 2 }) => {
|
|
249
|
+
const s = new Shape();
|
|
250
|
+
const step = (Math.PI * 2) / teeth;
|
|
251
|
+
for (let i = 0; i < teeth; i++) {
|
|
252
|
+
const a = i * step + Math.PI / 2;
|
|
253
|
+
const ang = [a + step * 0.2, a + step * 0.35, a + step * 0.65, a + step * 0.8];
|
|
254
|
+
const rad = [inner, outer, outer, inner];
|
|
255
|
+
for (let j = 0; j < 4; j++) {
|
|
256
|
+
const x = Math.cos(ang[j]) * rad[j];
|
|
257
|
+
const y = Math.sin(ang[j]) * rad[j];
|
|
258
|
+
if (i === 0 && j === 0)
|
|
259
|
+
s.moveTo(x, y);
|
|
260
|
+
else
|
|
261
|
+
s.lineTo(x, y);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
s.closePath();
|
|
265
|
+
const h = new Path();
|
|
266
|
+
h.absarc(0, 0, hole, 0, Math.PI * 2, true);
|
|
267
|
+
s.holes.push(h);
|
|
268
|
+
return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
|
|
269
|
+
},
|
|
270
|
+
flower: ({ petals = 6, outer = 0.5, inner = 0.26, sharp = 0.7, curveSegments, bevelThickness = 0.02, bevelSize = 0.02, bevelSegments = 2 }) => {
|
|
271
|
+
const s = new Shape();
|
|
272
|
+
const N = Math.max(96, petals * 24);
|
|
273
|
+
for (let i = 0; i <= N; i++) {
|
|
274
|
+
const t = (i / N) * Math.PI * 2;
|
|
275
|
+
const k = 0.5 + 0.5 * Math.cos(petals * t);
|
|
276
|
+
const r = inner + (outer - inner) * Math.pow(k, sharp);
|
|
277
|
+
const a = t + Math.PI / 2;
|
|
278
|
+
if (i === 0)
|
|
279
|
+
s.moveTo(Math.cos(a) * r, Math.sin(a) * r);
|
|
280
|
+
else
|
|
281
|
+
s.lineTo(Math.cos(a) * r, Math.sin(a) * r);
|
|
282
|
+
}
|
|
283
|
+
s.closePath();
|
|
284
|
+
return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
|
|
285
|
+
},
|
|
286
|
+
/* ---------------- symbolic ---------------- */
|
|
287
|
+
spade: ({ curveSegments, bevelThickness, bevelSize, bevelSegments }) => {
|
|
288
|
+
const s = new Shape();
|
|
289
|
+
s.moveTo(0, 0.5); // apex
|
|
290
|
+
s.bezierCurveTo(-0.05, 0.30, -0.45, 0.18, -0.45, -0.05);
|
|
291
|
+
s.bezierCurveTo(-0.45, -0.28, -0.18, -0.30, -0.05, -0.12);
|
|
292
|
+
s.bezierCurveTo(-0.10, -0.28, -0.16, -0.34, -0.18, -0.42); // stem flare
|
|
293
|
+
s.lineTo(0.18, -0.42);
|
|
294
|
+
s.bezierCurveTo(0.16, -0.34, 0.10, -0.28, 0.05, -0.12);
|
|
295
|
+
s.bezierCurveTo(0.18, -0.30, 0.45, -0.28, 0.45, -0.05);
|
|
296
|
+
s.bezierCurveTo(0.45, 0.18, 0.05, 0.30, 0, 0.5);
|
|
297
|
+
s.closePath();
|
|
298
|
+
return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
|
|
299
|
+
},
|
|
300
|
+
club: ({ curveSegments, bevelThickness = 0.02, bevelSize = 0.02, bevelSegments = 2 }) => {
|
|
301
|
+
const R = 0.32;
|
|
302
|
+
const A = 0.18;
|
|
303
|
+
const gap = (18 * Math.PI) / 180; // bottom gap for the stem
|
|
304
|
+
const start = Math.PI * 1.5 + gap; // just past bottom, CCW
|
|
305
|
+
const sweep = Math.PI * 2 - 2 * gap;
|
|
306
|
+
const N = 200;
|
|
307
|
+
const s = new Shape();
|
|
308
|
+
for (let i = 0; i <= N; i++) {
|
|
309
|
+
const t = start + (i / N) * sweep;
|
|
310
|
+
const r = R + A * Math.cos(3 * (t - Math.PI / 2));
|
|
311
|
+
if (i === 0)
|
|
312
|
+
s.moveTo(Math.cos(t) * r, Math.sin(t) * r);
|
|
313
|
+
else
|
|
314
|
+
s.lineTo(Math.cos(t) * r, Math.sin(t) * r);
|
|
315
|
+
}
|
|
316
|
+
// stem across the bottom gap
|
|
317
|
+
s.lineTo(-0.07, -0.5);
|
|
318
|
+
s.lineTo(0.07, -0.5);
|
|
319
|
+
s.closePath();
|
|
320
|
+
return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
|
|
321
|
+
},
|
|
322
|
+
diamond: ({ curveSegments, bevelThickness, bevelSize, bevelSegments }) => {
|
|
323
|
+
const w = 1 / 2;
|
|
324
|
+
const h = 1;
|
|
325
|
+
const s = new Shape();
|
|
326
|
+
s.moveTo(0, h);
|
|
327
|
+
s.lineTo(w, 0);
|
|
328
|
+
s.lineTo(0, -h);
|
|
329
|
+
s.lineTo(-w, 0);
|
|
330
|
+
s.closePath();
|
|
331
|
+
return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
|
|
332
|
+
},
|
|
333
|
+
droplet: ({ width = 0.5, taper = 1, curveSegments, bevelThickness = 0.02, bevelSize = 0.02, bevelSegments = 2 }) => {
|
|
334
|
+
const w = width / 2;
|
|
335
|
+
const top = 0.55 * taper;
|
|
336
|
+
const bot = -0.45;
|
|
337
|
+
const s = new Shape();
|
|
338
|
+
s.moveTo(0, top);
|
|
339
|
+
s.bezierCurveTo(w * 0.2, top * 0.55, w, (top + bot) * 0.5, w, bot * 0.45);
|
|
340
|
+
s.bezierCurveTo(w, bot, w * 0.5, bot * 1.25, 0, bot * 1.25);
|
|
341
|
+
s.bezierCurveTo(-w * 0.5, bot * 1.25, -w, bot, -w, bot * 0.45);
|
|
342
|
+
s.bezierCurveTo(-w, (top + bot) * 0.5, -w * 0.2, top * 0.55, 0, top);
|
|
343
|
+
s.closePath();
|
|
344
|
+
return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
|
|
345
|
+
},
|
|
346
|
+
lightning: ({ width = 0.6, height = 1, curveSegments, bevelThickness = 0.015, bevelSize = 0.015, bevelSegments = 1 }) => {
|
|
347
|
+
const pts = [
|
|
348
|
+
[0.10, 0.50], [-0.25, 0.05], [-0.05, 0.05], [-0.20, -0.50], [0.25, 0.0], [0.05, 0.0],
|
|
349
|
+
];
|
|
350
|
+
const s = new Shape();
|
|
351
|
+
pts.forEach(([x, y], i) => {
|
|
352
|
+
const px = x * width;
|
|
353
|
+
const py = y * height;
|
|
354
|
+
if (i === 0)
|
|
355
|
+
s.moveTo(px, py);
|
|
356
|
+
else
|
|
357
|
+
s.lineTo(px, py);
|
|
358
|
+
});
|
|
359
|
+
s.closePath();
|
|
360
|
+
return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
|
|
361
|
+
},
|
|
362
|
+
sparkle: ({ points = 4, outer = 0.5, inner = 0.14, curveSegments, bevelThickness = 0.015, bevelSize = 0.015, bevelSegments = 1 }) => {
|
|
363
|
+
const step = (Math.PI * 2) / points;
|
|
364
|
+
const tip = (k) => {
|
|
365
|
+
const a = k * step + Math.PI / 2;
|
|
366
|
+
return [Math.cos(a) * outer, Math.sin(a) * outer];
|
|
367
|
+
};
|
|
368
|
+
const ctrl = (k) => {
|
|
369
|
+
const a = (k + 0.5) * step + Math.PI / 2;
|
|
370
|
+
return [Math.cos(a) * inner, Math.sin(a) * inner];
|
|
371
|
+
};
|
|
372
|
+
const s = new Shape();
|
|
373
|
+
const [x0, y0] = tip(0);
|
|
374
|
+
s.moveTo(x0, y0);
|
|
375
|
+
for (let i = 0; i < points; i++) {
|
|
376
|
+
const [cx, cy] = ctrl(i);
|
|
377
|
+
const [tx, ty] = tip((i + 1) % points);
|
|
378
|
+
s.quadraticCurveTo(cx, cy, tx, ty);
|
|
379
|
+
}
|
|
380
|
+
s.closePath();
|
|
381
|
+
return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
|
|
382
|
+
},
|
|
383
|
+
shield: ({ width = 0.8, curveSegments, bevelThickness, bevelSize, bevelSegments }) => {
|
|
384
|
+
const w = width / 2;
|
|
385
|
+
const top = 1 / 2;
|
|
386
|
+
const bot = -1 / 2;
|
|
387
|
+
const s = new Shape();
|
|
388
|
+
s.moveTo(-w, top);
|
|
389
|
+
s.lineTo(w, top);
|
|
390
|
+
s.lineTo(w, top * 0.1);
|
|
391
|
+
s.bezierCurveTo(w, bot * 0.5, w * 0.5, bot * 0.9, 0, bot);
|
|
392
|
+
s.bezierCurveTo(-w * 0.5, bot * 0.9, -w, bot * 0.5, -w, top * 0.1);
|
|
393
|
+
s.closePath();
|
|
394
|
+
return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
|
|
395
|
+
},
|
|
396
|
+
pawPrint: ({ curveSegments, bevelThickness = 0.02, bevelSize = 0.02, bevelSegments = 2 }) => {
|
|
397
|
+
const blob = (cx, cy, rx, ry) => {
|
|
398
|
+
const sh = new Shape();
|
|
399
|
+
const seg = 48;
|
|
400
|
+
for (let i = 0; i <= seg; i++) {
|
|
401
|
+
const a = (i / seg) * Math.PI * 2;
|
|
402
|
+
const x = cx + Math.cos(a) * rx;
|
|
403
|
+
const y = cy + Math.sin(a) * ry;
|
|
404
|
+
if (i === 0)
|
|
405
|
+
sh.moveTo(x, y);
|
|
406
|
+
else
|
|
407
|
+
sh.lineTo(x, y);
|
|
408
|
+
}
|
|
409
|
+
sh.closePath();
|
|
410
|
+
return extrude(sh, curveSegments, bevelThickness, bevelSize, bevelSegments);
|
|
411
|
+
};
|
|
412
|
+
return mergeGeometries([
|
|
413
|
+
blob(0, -0.18, 0.30, 0.24), // pad
|
|
414
|
+
blob(-0.26, 0.10, 0.11, 0.14),
|
|
415
|
+
blob(-0.09, 0.26, 0.11, 0.15),
|
|
416
|
+
blob(0.09, 0.26, 0.11, 0.15),
|
|
417
|
+
blob(0.26, 0.10, 0.11, 0.14),
|
|
418
|
+
], false);
|
|
419
|
+
},
|
|
420
|
+
/* ---------------- parametric ---------------- */
|
|
421
|
+
superformula: ({ symmetry = 6, // was m — rotational symmetry (lobe / corner count)
|
|
422
|
+
roundness = 0.3, // was n1 — overall inflation: lower = puffier, higher = pinched/spikier
|
|
423
|
+
twist1 = 0.3, // was n2 — exponent on the cosine term
|
|
424
|
+
twist2 = 0.3, // was n3 — exponent on the sine term
|
|
425
|
+
stretchX = 1, // was a — scales the cosine term (horizontal stretch)
|
|
426
|
+
stretchY = 1, // was b — scales the sine term (vertical stretch)
|
|
427
|
+
samples = 256, curveSegments, bevelThickness = 0.02, bevelSize = 0.02, bevelSegments = 2, }) => {
|
|
428
|
+
const s = new Shape();
|
|
429
|
+
for (let i = 0; i <= samples; i++) {
|
|
430
|
+
const phi = (i / samples) * Math.PI * 2;
|
|
431
|
+
const t1 = Math.pow(Math.abs(Math.cos((symmetry * phi) / 4) / stretchX), twist1);
|
|
432
|
+
const t2 = Math.pow(Math.abs(Math.sin((symmetry * phi) / 4) / stretchY), twist2);
|
|
433
|
+
const r = Math.pow(t1 + t2, -1 / roundness);
|
|
434
|
+
const ang = phi + Math.PI / 2;
|
|
435
|
+
if (i === 0)
|
|
436
|
+
s.moveTo(Math.cos(ang) * r, Math.sin(ang) * r);
|
|
437
|
+
else
|
|
438
|
+
s.lineTo(Math.cos(ang) * r, Math.sin(ang) * r);
|
|
439
|
+
}
|
|
440
|
+
s.closePath();
|
|
441
|
+
return extrude(s, curveSegments, bevelThickness, bevelSize, bevelSegments);
|
|
442
|
+
},
|
|
443
|
+
};
|