@3driseai/3drise-core 1.0.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/constants/index.d.ts +22 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +7 -0
- package/dist/data/allMaterials.d.ts +5 -0
- package/dist/data/allMaterials.d.ts.map +1 -0
- package/dist/data/allMaterials.js +932 -0
- package/dist/data/defaults.d.ts +107 -0
- package/dist/data/defaults.d.ts.map +1 -0
- package/dist/data/defaults.js +99 -0
- package/dist/data/effectsDefaults.d.ts +4 -0
- package/dist/data/effectsDefaults.d.ts.map +1 -0
- package/dist/data/effectsDefaults.js +55 -0
- package/dist/data/images.d.ts +4 -0
- package/dist/data/images.d.ts.map +1 -0
- package/dist/data/images.js +50 -0
- package/dist/data/index.d.ts +10 -0
- package/dist/data/index.d.ts.map +1 -0
- package/dist/data/index.js +9 -0
- package/dist/data/lightPresets.d.ts +99 -0
- package/dist/data/lightPresets.d.ts.map +1 -0
- package/dist/data/lightPresets.js +48 -0
- package/dist/data/particlesSettings.d.ts +13 -0
- package/dist/data/particlesSettings.d.ts.map +1 -0
- package/dist/data/particlesSettings.js +94 -0
- package/dist/data/paths.d.ts +32 -0
- package/dist/data/paths.d.ts.map +1 -0
- package/dist/data/paths.js +2597 -0
- package/dist/data/shaders.d.ts +12 -0
- package/dist/data/shaders.d.ts.map +1 -0
- package/dist/data/shaders.js +342 -0
- package/dist/data/shapeConfig.d.ts +3 -0
- package/dist/data/shapeConfig.d.ts.map +1 -0
- package/dist/data/shapeConfig.js +29 -0
- package/dist/index.d.ts +72 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +70 -0
- package/dist/presets/cloudsPresets.d.ts +32 -0
- package/dist/presets/cloudsPresets.d.ts.map +1 -0
- package/dist/presets/cloudsPresets.js +257 -0
- package/dist/presets/coronaPresets.d.ts +11 -0
- package/dist/presets/coronaPresets.d.ts.map +1 -0
- package/dist/presets/coronaPresets.js +148 -0
- package/dist/presets/crystalPresets.d.ts +38 -0
- package/dist/presets/crystalPresets.d.ts.map +1 -0
- package/dist/presets/crystalPresets.js +265 -0
- package/dist/presets/effectsPresets.d.ts +32 -0
- package/dist/presets/effectsPresets.d.ts.map +1 -0
- package/dist/presets/effectsPresets.js +438 -0
- package/dist/presets/glassPresets.d.ts +36 -0
- package/dist/presets/glassPresets.d.ts.map +1 -0
- package/dist/presets/glassPresets.js +236 -0
- package/dist/presets/index.d.ts +21 -0
- package/dist/presets/index.d.ts.map +1 -0
- package/dist/presets/index.js +52 -0
- package/dist/presets/lavaPresets.d.ts +11 -0
- package/dist/presets/lavaPresets.d.ts.map +1 -0
- package/dist/presets/lavaPresets.js +202 -0
- package/dist/presets/metalPresets.d.ts +33 -0
- package/dist/presets/metalPresets.d.ts.map +1 -0
- package/dist/presets/metalPresets.js +205 -0
- package/dist/presets/oceanPresets.d.ts +37 -0
- package/dist/presets/oceanPresets.d.ts.map +1 -0
- package/dist/presets/oceanPresets.js +120 -0
- package/dist/presets/plasticPresets.d.ts +35 -0
- package/dist/presets/plasticPresets.d.ts.map +1 -0
- package/dist/presets/plasticPresets.js +245 -0
- package/dist/presets/sandPresets.d.ts +11 -0
- package/dist/presets/sandPresets.d.ts.map +1 -0
- package/dist/presets/sandPresets.js +294 -0
- package/dist/presets/skyPresets.d.ts +27 -0
- package/dist/presets/skyPresets.d.ts.map +1 -0
- package/dist/presets/skyPresets.js +93 -0
- package/dist/presets/woodPresets.d.ts +33 -0
- package/dist/presets/woodPresets.d.ts.map +1 -0
- package/dist/presets/woodPresets.js +235 -0
- package/dist/services/AnimationsManager.d.ts +171 -0
- package/dist/services/AnimationsManager.d.ts.map +1 -0
- package/dist/services/AnimationsManager.js +508 -0
- package/dist/services/CubeCameraManager.d.ts +23 -0
- package/dist/services/CubeCameraManager.d.ts.map +1 -0
- package/dist/services/CubeCameraManager.js +84 -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/MaterialCompiler.d.ts +30 -0
- package/dist/services/MaterialCompiler.d.ts.map +1 -0
- package/dist/services/MaterialCompiler.js +91 -0
- package/dist/services/MaterialRegistry.d.ts +85 -0
- package/dist/services/MaterialRegistry.d.ts.map +1 -0
- package/dist/services/MaterialRegistry.js +362 -0
- package/dist/services/NoiseGenerator.d.ts +93 -0
- package/dist/services/NoiseGenerator.d.ts.map +1 -0
- package/dist/services/NoiseGenerator.js +653 -0
- package/dist/services/ObjectManager.d.ts +71 -0
- package/dist/services/ObjectManager.d.ts.map +1 -0
- package/dist/services/ObjectManager.js +386 -0
- package/dist/services/PositionsCreator.d.ts +26 -0
- package/dist/services/PositionsCreator.d.ts.map +1 -0
- package/dist/services/PositionsCreator.js +263 -0
- package/dist/services/SceneStore.d.ts +20 -0
- package/dist/services/SceneStore.d.ts.map +1 -0
- package/dist/services/SceneStore.js +18 -0
- package/dist/services/ShadersLibrary.d.ts +79 -0
- package/dist/services/ShadersLibrary.d.ts.map +1 -0
- package/dist/services/ShadersLibrary.js +820 -0
- package/dist/services/SkySystemManager.d.ts +57 -0
- package/dist/services/SkySystemManager.d.ts.map +1 -0
- package/dist/services/SkySystemManager.js +190 -0
- package/dist/services/TextureResolver.d.ts +51 -0
- package/dist/services/TextureResolver.d.ts.map +1 -0
- package/dist/services/TextureResolver.js +136 -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/services/UniformConverter.d.ts +33 -0
- package/dist/services/UniformConverter.d.ts.map +1 -0
- package/dist/services/UniformConverter.js +252 -0
- package/dist/services/index.d.ts +19 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +14 -0
- package/dist/shaders/BasicSkyMaterial.d.ts +49 -0
- package/dist/shaders/BasicSkyMaterial.d.ts.map +1 -0
- package/dist/shaders/BasicSkyMaterial.js +94 -0
- package/dist/shaders/BasicWaterMaterial.d.ts +41 -0
- package/dist/shaders/BasicWaterMaterial.d.ts.map +1 -0
- package/dist/shaders/BasicWaterMaterial.js +155 -0
- package/dist/shaders/BubblesPointsMaterial.d.ts +52 -0
- package/dist/shaders/BubblesPointsMaterial.d.ts.map +1 -0
- package/dist/shaders/BubblesPointsMaterial.js +95 -0
- package/dist/shaders/CartoonCloudsMaterial.d.ts +36 -0
- package/dist/shaders/CartoonCloudsMaterial.d.ts.map +1 -0
- package/dist/shaders/CartoonCloudsMaterial.js +59 -0
- package/dist/shaders/CartoonCloudsPointsMaterial.d.ts +65 -0
- package/dist/shaders/CartoonCloudsPointsMaterial.d.ts.map +1 -0
- package/dist/shaders/CartoonCloudsPointsMaterial.js +138 -0
- package/dist/shaders/CirrusCloudsMaterial.d.ts +36 -0
- package/dist/shaders/CirrusCloudsMaterial.d.ts.map +1 -0
- package/dist/shaders/CirrusCloudsMaterial.js +55 -0
- package/dist/shaders/CirrusCloudsPointsMaterial.d.ts +69 -0
- package/dist/shaders/CirrusCloudsPointsMaterial.d.ts.map +1 -0
- package/dist/shaders/CirrusCloudsPointsMaterial.js +140 -0
- package/dist/shaders/CloudsMaterial.d.ts +47 -0
- package/dist/shaders/CloudsMaterial.d.ts.map +1 -0
- package/dist/shaders/CloudsMaterial.js +124 -0
- package/dist/shaders/CloudsPointsMaterial.d.ts +82 -0
- package/dist/shaders/CloudsPointsMaterial.d.ts.map +1 -0
- package/dist/shaders/CloudsPointsMaterial.js +200 -0
- package/dist/shaders/CommonNoiseFunctions.d.ts +2 -0
- package/dist/shaders/CommonNoiseFunctions.d.ts.map +1 -0
- package/dist/shaders/CommonNoiseFunctions.js +41 -0
- package/dist/shaders/CoronaMaterial.d.ts +41 -0
- package/dist/shaders/CoronaMaterial.d.ts.map +1 -0
- package/dist/shaders/CoronaMaterial.js +54 -0
- package/dist/shaders/CustomShaderMaterial.d.ts +10 -0
- package/dist/shaders/CustomShaderMaterial.d.ts.map +1 -0
- package/dist/shaders/CustomShaderMaterial.js +10 -0
- package/dist/shaders/EarthAtmosphereMaterial.d.ts +28 -0
- package/dist/shaders/EarthAtmosphereMaterial.d.ts.map +1 -0
- package/dist/shaders/EarthAtmosphereMaterial.js +55 -0
- package/dist/shaders/EarthMaterial.d.ts +40 -0
- package/dist/shaders/EarthMaterial.d.ts.map +1 -0
- package/dist/shaders/EarthMaterial.js +69 -0
- package/dist/shaders/FireMaterial.d.ts +30 -0
- package/dist/shaders/FireMaterial.d.ts.map +1 -0
- package/dist/shaders/FireMaterial.js +154 -0
- package/dist/shaders/FireShellMaterial.d.ts +34 -0
- package/dist/shaders/FireShellMaterial.d.ts.map +1 -0
- package/dist/shaders/FireShellMaterial.js +137 -0
- package/dist/shaders/FlareMaterial.d.ts +79 -0
- package/dist/shaders/FlareMaterial.d.ts.map +1 -0
- package/dist/shaders/FlareMaterial.js +184 -0
- package/dist/shaders/GlowMaterial.d.ts +41 -0
- package/dist/shaders/GlowMaterial.d.ts.map +1 -0
- package/dist/shaders/GlowMaterial.js +54 -0
- package/dist/shaders/GlyphRingMaterial.d.ts +72 -0
- package/dist/shaders/GlyphRingMaterial.d.ts.map +1 -0
- package/dist/shaders/GlyphRingMaterial.js +152 -0
- package/dist/shaders/ImageMaterial.d.ts +294 -0
- package/dist/shaders/ImageMaterial.d.ts.map +1 -0
- package/dist/shaders/ImageMaterial.js +401 -0
- package/dist/shaders/LavaMaterial.d.ts +69 -0
- package/dist/shaders/LavaMaterial.d.ts.map +1 -0
- package/dist/shaders/LavaMaterial.js +127 -0
- package/dist/shaders/LineEffectsMaterials.d.ts +97 -0
- package/dist/shaders/LineEffectsMaterials.d.ts.map +1 -0
- package/dist/shaders/LineEffectsMaterials.js +242 -0
- package/dist/shaders/LineMaterial.d.ts +37 -0
- package/dist/shaders/LineMaterial.d.ts.map +1 -0
- package/dist/shaders/LineMaterial.js +64 -0
- package/dist/shaders/MeshEffectsMaterial.d.ts +278 -0
- package/dist/shaders/MeshEffectsMaterial.d.ts.map +1 -0
- package/dist/shaders/MeshEffectsMaterial.js +312 -0
- package/dist/shaders/MorphingSimulation.d.ts +17 -0
- package/dist/shaders/MorphingSimulation.d.ts.map +1 -0
- package/dist/shaders/MorphingSimulation.js +66 -0
- package/dist/shaders/MyGridMaterial.d.ts +61 -0
- package/dist/shaders/MyGridMaterial.d.ts.map +1 -0
- package/dist/shaders/MyGridMaterial.js +176 -0
- package/dist/shaders/MyParticlesMaterial.d.ts +65 -0
- package/dist/shaders/MyParticlesMaterial.d.ts.map +1 -0
- package/dist/shaders/MyParticlesMaterial.js +126 -0
- package/dist/shaders/NebulaCloudsMaterial.d.ts +44 -0
- package/dist/shaders/NebulaCloudsMaterial.d.ts.map +1 -0
- package/dist/shaders/NebulaCloudsMaterial.js +63 -0
- package/dist/shaders/NebulaPointsMaterial.d.ts +236 -0
- package/dist/shaders/NebulaPointsMaterial.d.ts.map +1 -0
- package/dist/shaders/NebulaPointsMaterial.js +265 -0
- package/dist/shaders/OceanMaterial.d.ts +57 -0
- package/dist/shaders/OceanMaterial.d.ts.map +1 -0
- package/dist/shaders/OceanMaterial.js +240 -0
- package/dist/shaders/PainterlyCloudsMaterial.d.ts +49 -0
- package/dist/shaders/PainterlyCloudsMaterial.d.ts.map +1 -0
- package/dist/shaders/PainterlyCloudsMaterial.js +68 -0
- package/dist/shaders/PainterlyCloudsPointsMaterial.d.ts +69 -0
- package/dist/shaders/PainterlyCloudsPointsMaterial.d.ts.map +1 -0
- package/dist/shaders/PainterlyCloudsPointsMaterial.js +140 -0
- package/dist/shaders/RainMaterial.d.ts +36 -0
- package/dist/shaders/RainMaterial.d.ts.map +1 -0
- package/dist/shaders/RainMaterial.js +79 -0
- package/dist/shaders/ReflectorMaterial.d.ts +62 -0
- package/dist/shaders/ReflectorMaterial.d.ts.map +1 -0
- package/dist/shaders/ReflectorMaterial.js +167 -0
- package/dist/shaders/SandMaterial.d.ts +58 -0
- package/dist/shaders/SandMaterial.d.ts.map +1 -0
- package/dist/shaders/SandMaterial.js +296 -0
- package/dist/shaders/ShaderEffectsMaterial copy.d.ts +280 -0
- package/dist/shaders/ShaderEffectsMaterial copy.d.ts.map +1 -0
- package/dist/shaders/ShaderEffectsMaterial copy.js +354 -0
- package/dist/shaders/ShaderEffectsMaterial.d.ts +5 -0
- package/dist/shaders/ShaderEffectsMaterial.d.ts.map +1 -0
- package/dist/shaders/ShaderEffectsMaterial.js +10 -0
- package/dist/shaders/ShootingStarMaterial.d.ts +9 -0
- package/dist/shaders/ShootingStarMaterial.d.ts.map +1 -0
- package/dist/shaders/ShootingStarMaterial.js +42 -0
- package/dist/shaders/SkyCloudsMaterial.d.ts +76 -0
- package/dist/shaders/SkyCloudsMaterial.d.ts.map +1 -0
- package/dist/shaders/SkyCloudsMaterial.js +212 -0
- package/dist/shaders/SkyMaterial.d.ts +130 -0
- package/dist/shaders/SkyMaterial.d.ts.map +1 -0
- package/dist/shaders/SkyMaterial.js +237 -0
- package/dist/shaders/SkyboxMaterial.d.ts +40 -0
- package/dist/shaders/SkyboxMaterial.d.ts.map +1 -0
- package/dist/shaders/SkyboxMaterial.js +64 -0
- package/dist/shaders/SmokeMaterial.d.ts +48 -0
- package/dist/shaders/SmokeMaterial.d.ts.map +1 -0
- package/dist/shaders/SmokeMaterial.js +159 -0
- package/dist/shaders/SmokeRibbonMaterial.d.ts +48 -0
- package/dist/shaders/SmokeRibbonMaterial.d.ts.map +1 -0
- package/dist/shaders/SmokeRibbonMaterial.js +120 -0
- package/dist/shaders/SparklesBurstMaterial.d.ts +65 -0
- package/dist/shaders/SparklesBurstMaterial.d.ts.map +1 -0
- package/dist/shaders/SparklesBurstMaterial.js +99 -0
- package/dist/shaders/StarsMaterial.d.ts +36 -0
- package/dist/shaders/StarsMaterial.d.ts.map +1 -0
- package/dist/shaders/StarsMaterial.js +74 -0
- package/dist/shaders/StormCloudsMaterial.d.ts +44 -0
- package/dist/shaders/StormCloudsMaterial.d.ts.map +1 -0
- package/dist/shaders/StormCloudsMaterial.js +61 -0
- package/dist/shaders/StormCloudsPointsMaterial.d.ts +303 -0
- package/dist/shaders/StormCloudsPointsMaterial.d.ts.map +1 -0
- package/dist/shaders/StormCloudsPointsMaterial.js +389 -0
- package/dist/shaders/SunCoreMaterial.d.ts +69 -0
- package/dist/shaders/SunCoreMaterial.d.ts.map +1 -0
- package/dist/shaders/SunCoreMaterial.js +127 -0
- package/dist/shaders/VolumetricCloudsMaterial.d.ts +56 -0
- package/dist/shaders/VolumetricCloudsMaterial.d.ts.map +1 -0
- package/dist/shaders/VolumetricCloudsMaterial.js +93 -0
- package/dist/shaders/VolumetricCloudsPointsMaterial.d.ts +73 -0
- package/dist/shaders/VolumetricCloudsPointsMaterial.d.ts.map +1 -0
- package/dist/shaders/VolumetricCloudsPointsMaterial.js +143 -0
- package/dist/shaders/WaterMaterial.d.ts +110 -0
- package/dist/shaders/WaterMaterial.d.ts.map +1 -0
- package/dist/shaders/WaterMaterial.js +228 -0
- package/dist/shaders/effects/EffectsFragmentFunctions.glsl.d.ts +2 -0
- package/dist/shaders/effects/EffectsFragmentFunctions.glsl.d.ts.map +1 -0
- package/dist/shaders/effects/EffectsFragmentFunctions.glsl.js +182 -0
- package/dist/shaders/effects/EffectsUniforms.d.ts +230 -0
- package/dist/shaders/effects/EffectsUniforms.d.ts.map +1 -0
- package/dist/shaders/effects/EffectsUniforms.js +66 -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 +167 -0
- package/dist/shaders/effects/baseFragment.glsl.d.ts +2 -0
- package/dist/shaders/effects/baseFragment.glsl.d.ts.map +1 -0
- package/dist/shaders/effects/baseFragment.glsl.js +53 -0
- package/dist/shaders/effects/baseVertex.glsl.d.ts +2 -0
- package/dist/shaders/effects/baseVertex.glsl.d.ts.map +1 -0
- package/dist/shaders/effects/baseVertex.glsl.js +60 -0
- package/dist/shaders/effects/buildShaderEffectsMaterial.d.ts +17 -0
- package/dist/shaders/effects/buildShaderEffectsMaterial.d.ts.map +1 -0
- package/dist/shaders/effects/buildShaderEffectsMaterial.js +156 -0
- package/dist/shaders/effects/defaults.d.ts +4 -0
- package/dist/shaders/effects/defaults.d.ts.map +1 -0
- package/dist/shaders/effects/defaults.js +27 -0
- package/dist/shaders/effects/index.d.ts +7 -0
- package/dist/shaders/effects/index.d.ts.map +1 -0
- package/dist/shaders/effects/index.js +6 -0
- package/dist/shaders/effects/noiseLib.glsl.d.ts +6 -0
- package/dist/shaders/effects/noiseLib.glsl.d.ts.map +1 -0
- package/dist/shaders/effects/noiseLib.glsl.js +214 -0
- package/dist/shaders/effects/presets.d.ts +20 -0
- package/dist/shaders/effects/presets.d.ts.map +1 -0
- package/dist/shaders/effects/presets.js +288 -0
- package/dist/shaders/effects/registry/brightness.d.ts +3 -0
- package/dist/shaders/effects/registry/brightness.d.ts.map +1 -0
- package/dist/shaders/effects/registry/brightness.js +16 -0
- package/dist/shaders/effects/registry/colorShift.d.ts +3 -0
- package/dist/shaders/effects/registry/colorShift.d.ts.map +1 -0
- package/dist/shaders/effects/registry/colorShift.js +21 -0
- package/dist/shaders/effects/registry/depthFade.d.ts +3 -0
- package/dist/shaders/effects/registry/depthFade.d.ts.map +1 -0
- package/dist/shaders/effects/registry/depthFade.js +29 -0
- package/dist/shaders/effects/registry/displacement.d.ts +3 -0
- package/dist/shaders/effects/registry/displacement.d.ts.map +1 -0
- package/dist/shaders/effects/registry/displacement.js +17 -0
- package/dist/shaders/effects/registry/explode.d.ts +3 -0
- package/dist/shaders/effects/registry/explode.d.ts.map +1 -0
- package/dist/shaders/effects/registry/explode.js +43 -0
- package/dist/shaders/effects/registry/flicker.d.ts +3 -0
- package/dist/shaders/effects/registry/flicker.d.ts.map +1 -0
- package/dist/shaders/effects/registry/flicker.js +27 -0
- package/dist/shaders/effects/registry/glow.d.ts +3 -0
- package/dist/shaders/effects/registry/glow.d.ts.map +1 -0
- package/dist/shaders/effects/registry/glow.js +21 -0
- package/dist/shaders/effects/registry/grayscale.d.ts +3 -0
- package/dist/shaders/effects/registry/grayscale.d.ts.map +1 -0
- package/dist/shaders/effects/registry/grayscale.js +105 -0
- package/dist/shaders/effects/registry/hueShift.d.ts +3 -0
- package/dist/shaders/effects/registry/hueShift.d.ts.map +1 -0
- package/dist/shaders/effects/registry/hueShift.js +40 -0
- package/dist/shaders/effects/registry/index.d.ts +9 -0
- package/dist/shaders/effects/registry/index.d.ts.map +1 -0
- package/dist/shaders/effects/registry/index.js +70 -0
- package/dist/shaders/effects/registry/jitter.d.ts +3 -0
- package/dist/shaders/effects/registry/jitter.d.ts.map +1 -0
- package/dist/shaders/effects/registry/jitter.js +31 -0
- package/dist/shaders/effects/registry/magnet.d.ts +3 -0
- package/dist/shaders/effects/registry/magnet.d.ts.map +1 -0
- package/dist/shaders/effects/registry/magnet.js +43 -0
- package/dist/shaders/effects/registry/noise.d.ts +3 -0
- package/dist/shaders/effects/registry/noise.d.ts.map +1 -0
- package/dist/shaders/effects/registry/noise.js +61 -0
- package/dist/shaders/effects/registry/pulse.d.ts +3 -0
- package/dist/shaders/effects/registry/pulse.d.ts.map +1 -0
- package/dist/shaders/effects/registry/pulse.js +24 -0
- package/dist/shaders/effects/registry/rainbow.d.ts +3 -0
- package/dist/shaders/effects/registry/rainbow.d.ts.map +1 -0
- package/dist/shaders/effects/registry/rainbow.js +55 -0
- package/dist/shaders/effects/registry/ripple.d.ts +3 -0
- package/dist/shaders/effects/registry/ripple.d.ts.map +1 -0
- package/dist/shaders/effects/registry/ripple.js +39 -0
- package/dist/shaders/effects/registry/saturation.d.ts +3 -0
- package/dist/shaders/effects/registry/saturation.d.ts.map +1 -0
- package/dist/shaders/effects/registry/saturation.js +19 -0
- package/dist/shaders/effects/registry/scale.d.ts +3 -0
- package/dist/shaders/effects/registry/scale.d.ts.map +1 -0
- package/dist/shaders/effects/registry/scale.js +26 -0
- package/dist/shaders/effects/registry/sparkle.d.ts +3 -0
- package/dist/shaders/effects/registry/sparkle.d.ts.map +1 -0
- package/dist/shaders/effects/registry/sparkle.js +34 -0
- package/dist/shaders/effects/registry/spiral.d.ts +3 -0
- package/dist/shaders/effects/registry/spiral.d.ts.map +1 -0
- package/dist/shaders/effects/registry/spiral.js +46 -0
- package/dist/shaders/effects/registry/twist.d.ts +3 -0
- package/dist/shaders/effects/registry/twist.d.ts.map +1 -0
- package/dist/shaders/effects/registry/twist.js +55 -0
- package/dist/shaders/effects/registry/vortex.d.ts +3 -0
- package/dist/shaders/effects/registry/vortex.d.ts.map +1 -0
- package/dist/shaders/effects/registry/vortex.js +35 -0
- package/dist/shaders/effects/registry/wave.d.ts +3 -0
- package/dist/shaders/effects/registry/wave.d.ts.map +1 -0
- package/dist/shaders/effects/registry/wave.js +44 -0
- package/dist/shaders/effects/types.d.ts +56 -0
- package/dist/shaders/effects/types.d.ts.map +1 -0
- package/dist/shaders/effects/types.js +11 -0
- package/dist/shaders/index.d.ts +51 -0
- package/dist/shaders/index.d.ts.map +1 -0
- package/dist/shaders/index.js +50 -0
- package/dist/shaders/lineShaders/GhostSignalMaterial.d.ts +41 -0
- package/dist/shaders/lineShaders/GhostSignalMaterial.d.ts.map +1 -0
- package/dist/shaders/lineShaders/GhostSignalMaterial.js +88 -0
- package/dist/shaders/lineShaders/LineShaderMaterials.d.ts +180 -0
- package/dist/shaders/lineShaders/LineShaderMaterials.d.ts.map +1 -0
- package/dist/shaders/lineShaders/LineShaderMaterials.js +551 -0
- package/dist/shaders/lineShaders/ParticleEffects.d.ts +39 -0
- package/dist/shaders/lineShaders/ParticleEffects.d.ts.map +1 -0
- package/dist/shaders/lineShaders/ParticleEffects.js +451 -0
- package/dist/shaders/lineShaders/SerpentFlowMaterial.d.ts +37 -0
- package/dist/shaders/lineShaders/SerpentFlowMaterial.d.ts.map +1 -0
- package/dist/shaders/lineShaders/SerpentFlowMaterial.js +91 -0
- package/dist/shaders/lineShaders/SolarFilamentMaterial.d.ts +37 -0
- package/dist/shaders/lineShaders/SolarFilamentMaterial.d.ts.map +1 -0
- package/dist/shaders/lineShaders/SolarFilamentMaterial.js +104 -0
- package/dist/shaders/lineShaders/TeslaArcMaterial.d.ts +37 -0
- package/dist/shaders/lineShaders/TeslaArcMaterial.d.ts.map +1 -0
- package/dist/shaders/lineShaders/TeslaArcMaterial.js +125 -0
- package/dist/shaders/lineShaders/VoidRiftMaterial.d.ts +41 -0
- package/dist/shaders/lineShaders/VoidRiftMaterial.d.ts.map +1 -0
- package/dist/shaders/lineShaders/VoidRiftMaterial.js +118 -0
- package/dist/shaders/lineShaders/index.d.ts +11 -0
- package/dist/shaders/lineShaders/index.d.ts.map +1 -0
- package/dist/shaders/lineShaders/index.js +7 -0
- package/dist/shaders/sunNoise.d.ts +2 -0
- package/dist/shaders/sunNoise.d.ts.map +1 -0
- package/dist/shaders/sunNoise.js +91 -0
- package/dist/three/AnimatedObjectV.d.ts +71 -0
- package/dist/three/AnimatedObjectV.d.ts.map +1 -0
- package/dist/three/AnimatedObjectV.js +169 -0
- package/dist/three/CloudsV.d.ts +24 -0
- package/dist/three/CloudsV.d.ts.map +1 -0
- package/dist/three/CloudsV.js +132 -0
- package/dist/three/EffectsGeneratorV.d.ts +14 -0
- package/dist/three/EffectsGeneratorV.d.ts.map +1 -0
- package/dist/three/EffectsGeneratorV.js +109 -0
- package/dist/three/EnvironmentManagerV.d.ts +35 -0
- package/dist/three/EnvironmentManagerV.d.ts.map +1 -0
- package/dist/three/EnvironmentManagerV.js +140 -0
- package/dist/three/FrameV.d.ts +24 -0
- package/dist/three/FrameV.d.ts.map +1 -0
- package/dist/three/FrameV.js +43 -0
- package/dist/three/GalaxyV.d.ts +21 -0
- package/dist/three/GalaxyV.d.ts.map +1 -0
- package/dist/three/GalaxyV.js +223 -0
- package/dist/three/GalleryLayoutV.d.ts +20 -0
- package/dist/three/GalleryLayoutV.d.ts.map +1 -0
- package/dist/three/GalleryLayoutV.js +76 -0
- package/dist/three/GridHelperV.d.ts +19 -0
- package/dist/three/GridHelperV.d.ts.map +1 -0
- package/dist/three/GridHelperV.js +28 -0
- package/dist/three/ImageGeometryV.d.ts +23 -0
- package/dist/three/ImageGeometryV.d.ts.map +1 -0
- package/dist/three/ImageGeometryV.js +83 -0
- package/dist/three/LensflareV.d.ts +19 -0
- package/dist/three/LensflareV.d.ts.map +1 -0
- package/dist/three/LensflareV.js +79 -0
- package/dist/three/LetterV.d.ts +24 -0
- package/dist/three/LetterV.d.ts.map +1 -0
- package/dist/three/LetterV.js +90 -0
- package/dist/three/LightsManagerV.d.ts +21 -0
- package/dist/three/LightsManagerV.d.ts.map +1 -0
- package/dist/three/LightsManagerV.js +85 -0
- package/dist/three/LinesV.d.ts +22 -0
- package/dist/three/LinesV.d.ts.map +1 -0
- package/dist/three/LinesV.js +43 -0
- package/dist/three/ParticlesV.d.ts +28 -0
- package/dist/three/ParticlesV.d.ts.map +1 -0
- package/dist/three/ParticlesV.js +88 -0
- package/dist/three/PathRendererV.d.ts +29 -0
- package/dist/three/PathRendererV.d.ts.map +1 -0
- package/dist/three/PathRendererV.js +225 -0
- package/dist/three/PathV.d.ts +27 -0
- package/dist/three/PathV.d.ts.map +1 -0
- package/dist/three/PathV.js +81 -0
- package/dist/three/ProjectLoaderV.d.ts +18 -0
- package/dist/three/ProjectLoaderV.d.ts.map +1 -0
- package/dist/three/ProjectLoaderV.js +49 -0
- package/dist/three/RainV.d.ts +21 -0
- package/dist/three/RainV.d.ts.map +1 -0
- package/dist/three/RainV.js +201 -0
- package/dist/three/SceneBuilderV.d.ts +26 -0
- package/dist/three/SceneBuilderV.d.ts.map +1 -0
- package/dist/three/SceneBuilderV.js +263 -0
- package/dist/three/SkyControllerV.d.ts +22 -0
- package/dist/three/SkyControllerV.d.ts.map +1 -0
- package/dist/three/SkyControllerV.js +114 -0
- package/dist/three/SkySystemV.d.ts +40 -0
- package/dist/three/SkySystemV.d.ts.map +1 -0
- package/dist/three/SkySystemV.js +103 -0
- package/dist/three/SkyboxV.d.ts +29 -0
- package/dist/three/SkyboxV.d.ts.map +1 -0
- package/dist/three/SkyboxV.js +160 -0
- package/dist/three/StarsV.d.ts +24 -0
- package/dist/three/StarsV.d.ts.map +1 -0
- package/dist/three/StarsV.js +179 -0
- package/dist/three/SunLightV.d.ts +26 -0
- package/dist/three/SunLightV.d.ts.map +1 -0
- package/dist/three/SunLightV.js +90 -0
- package/dist/three/Text2DV.d.ts +25 -0
- package/dist/three/Text2DV.d.ts.map +1 -0
- package/dist/three/Text2DV.js +66 -0
- package/dist/three/Text3DV.d.ts +22 -0
- package/dist/three/Text3DV.d.ts.map +1 -0
- package/dist/three/Text3DV.js +43 -0
- package/dist/three/effects/AuraEffectV.d.ts +15 -0
- package/dist/three/effects/AuraEffectV.d.ts.map +1 -0
- package/dist/three/effects/AuraEffectV.js +150 -0
- package/dist/three/effects/AuroraEffectV.d.ts +16 -0
- package/dist/three/effects/AuroraEffectV.d.ts.map +1 -0
- package/dist/three/effects/AuroraEffectV.js +129 -0
- package/dist/three/effects/BlackHoleEffectV.d.ts +15 -0
- package/dist/three/effects/BlackHoleEffectV.d.ts.map +1 -0
- package/dist/three/effects/BlackHoleEffectV.js +219 -0
- package/dist/three/effects/ConstellationEffectV.d.ts +17 -0
- package/dist/three/effects/ConstellationEffectV.d.ts.map +1 -0
- package/dist/three/effects/ConstellationEffectV.js +207 -0
- package/dist/three/effects/DataStreamEffectV.d.ts +15 -0
- package/dist/three/effects/DataStreamEffectV.d.ts.map +1 -0
- package/dist/three/effects/DataStreamEffectV.js +151 -0
- package/dist/three/effects/DnaHelixEffectV.d.ts +24 -0
- package/dist/three/effects/DnaHelixEffectV.d.ts.map +1 -0
- package/dist/three/effects/DnaHelixEffectV.js +343 -0
- package/dist/three/effects/FireEffectV.d.ts +17 -0
- package/dist/three/effects/FireEffectV.d.ts.map +1 -0
- package/dist/three/effects/FireEffectV.js +219 -0
- package/dist/three/effects/ForcefieldEffectV.d.ts +17 -0
- package/dist/three/effects/ForcefieldEffectV.d.ts.map +1 -0
- package/dist/three/effects/ForcefieldEffectV.js +150 -0
- package/dist/three/effects/HologramEffectV.d.ts +15 -0
- package/dist/three/effects/HologramEffectV.d.ts.map +1 -0
- package/dist/three/effects/HologramEffectV.js +154 -0
- package/dist/three/effects/IceCrystalsEffectV.d.ts +21 -0
- package/dist/three/effects/IceCrystalsEffectV.d.ts.map +1 -0
- package/dist/three/effects/IceCrystalsEffectV.js +214 -0
- package/dist/three/effects/LightningEffectV.d.ts +27 -0
- package/dist/three/effects/LightningEffectV.d.ts.map +1 -0
- package/dist/three/effects/LightningEffectV.js +255 -0
- package/dist/three/effects/MoleculesEffectV.d.ts +23 -0
- package/dist/three/effects/MoleculesEffectV.d.ts.map +1 -0
- package/dist/three/effects/MoleculesEffectV.js +204 -0
- package/dist/three/effects/NeuralNetworkEffectV.d.ts +23 -0
- package/dist/three/effects/NeuralNetworkEffectV.d.ts.map +1 -0
- package/dist/three/effects/NeuralNetworkEffectV.js +211 -0
- package/dist/three/effects/OrbEffectV.d.ts +17 -0
- package/dist/three/effects/OrbEffectV.d.ts.map +1 -0
- package/dist/three/effects/OrbEffectV.js +307 -0
- package/dist/three/effects/PortalEffectV.d.ts +15 -0
- package/dist/three/effects/PortalEffectV.d.ts.map +1 -0
- package/dist/three/effects/PortalEffectV.js +213 -0
- package/dist/three/effects/ShockwaveEffectV.d.ts +19 -0
- package/dist/three/effects/ShockwaveEffectV.d.ts.map +1 -0
- package/dist/three/effects/ShockwaveEffectV.js +195 -0
- package/dist/three/effects/SmokePlumeEffectV.d.ts +15 -0
- package/dist/three/effects/SmokePlumeEffectV.d.ts.map +1 -0
- package/dist/three/effects/SmokePlumeEffectV.js +152 -0
- package/dist/three/effects/SmokeRingEffectV.d.ts +16 -0
- package/dist/three/effects/SmokeRingEffectV.d.ts.map +1 -0
- package/dist/three/effects/SmokeRingEffectV.js +174 -0
- package/dist/three/effects/VolumetricFogEffectV.d.ts +15 -0
- package/dist/three/effects/VolumetricFogEffectV.d.ts.map +1 -0
- package/dist/three/effects/VolumetricFogEffectV.js +127 -0
- package/dist/types/actions.d.ts +30 -0
- package/dist/types/actions.d.ts.map +1 -0
- package/dist/types/actions.js +5 -0
- package/dist/types/animations.d.ts +109 -0
- package/dist/types/animations.d.ts.map +1 -0
- package/dist/types/animations.js +5 -0
- package/dist/types/common.d.ts +20 -0
- package/dist/types/common.d.ts.map +1 -0
- package/dist/types/common.js +1 -0
- package/dist/types/cursor.d.ts +142 -0
- package/dist/types/cursor.d.ts.map +1 -0
- package/dist/types/cursor.js +1 -0
- package/dist/types/effects.d.ts +100 -0
- package/dist/types/effects.d.ts.map +1 -0
- package/dist/types/effects.js +1 -0
- package/dist/types/environment.d.ts +265 -0
- package/dist/types/environment.d.ts.map +1 -0
- package/dist/types/environment.js +10 -0
- package/dist/types/gallery.d.ts +74 -0
- package/dist/types/gallery.d.ts.map +1 -0
- package/dist/types/gallery.js +1 -0
- package/dist/types/generativeEffects.d.ts +316 -0
- package/dist/types/generativeEffects.d.ts.map +1 -0
- package/dist/types/generativeEffects.js +5 -0
- package/dist/types/handlerSettings.d.ts +48 -0
- package/dist/types/handlerSettings.d.ts.map +1 -0
- package/dist/types/handlerSettings.js +1 -0
- package/dist/types/index.d.ts +24 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types/lights.d.ts +79 -0
- package/dist/types/lights.d.ts.map +1 -0
- package/dist/types/lights.js +1 -0
- package/dist/types/materials.d.ts +194 -0
- package/dist/types/materials.d.ts.map +1 -0
- package/dist/types/materials.js +1 -0
- package/dist/types/mesh.d.ts +200 -0
- package/dist/types/mesh.d.ts.map +1 -0
- package/dist/types/mesh.js +1 -0
- package/dist/types/objectSettings.d.ts +144 -0
- package/dist/types/objectSettings.d.ts.map +1 -0
- package/dist/types/objectSettings.js +25 -0
- package/dist/types/objectsConfigs.d.ts +47 -0
- package/dist/types/objectsConfigs.d.ts.map +1 -0
- package/dist/types/objectsConfigs.js +1 -0
- package/dist/types/particles.d.ts +156 -0
- package/dist/types/particles.d.ts.map +1 -0
- package/dist/types/particles.js +1 -0
- package/dist/types/postprocessing.d.ts +141 -0
- package/dist/types/postprocessing.d.ts.map +1 -0
- package/dist/types/postprocessing.js +1 -0
- package/dist/types/scene3d.d.ts +501 -0
- package/dist/types/scene3d.d.ts.map +1 -0
- package/dist/types/scene3d.js +3 -0
- package/dist/types/shaderEffects.d.ts +61 -0
- package/dist/types/shaderEffects.d.ts.map +1 -0
- package/dist/types/shaderEffects.js +1 -0
- package/dist/types/text.d.ts +74 -0
- package/dist/types/text.d.ts.map +1 -0
- package/dist/types/text.js +1 -0
- package/dist/types/types.d.ts +81 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/types.js +1 -0
- package/dist/types/uiController.d.ts +42 -0
- package/dist/types/uiController.d.ts.map +1 -0
- package/dist/types/uiController.js +1 -0
- package/dist/types/users.d.ts +334 -0
- package/dist/types/users.d.ts.map +1 -0
- package/dist/types/users.js +34 -0
- package/dist/utils/GalleryCreator.d.ts +80 -0
- package/dist/utils/GalleryCreator.d.ts.map +1 -0
- package/dist/utils/GalleryCreator.js +465 -0
- package/dist/utils/GalleryLayouts.d.ts +10 -0
- package/dist/utils/GalleryLayouts.d.ts.map +1 -0
- package/dist/utils/GalleryLayouts.js +43 -0
- package/dist/utils/MaterialCompiler.d.ts +30 -0
- package/dist/utils/MaterialCompiler.d.ts.map +1 -0
- package/dist/utils/MaterialCompiler.js +91 -0
- package/dist/utils/animationsUtils.d.ts +69 -0
- package/dist/utils/animationsUtils.d.ts.map +1 -0
- package/dist/utils/animationsUtils.js +151 -0
- package/dist/utils/createdObjectHandlers.d.ts +32 -0
- package/dist/utils/createdObjectHandlers.d.ts.map +1 -0
- package/dist/utils/createdObjectHandlers.js +35 -0
- package/dist/utils/dataUtils.d.ts +36 -0
- package/dist/utils/dataUtils.d.ts.map +1 -0
- package/dist/utils/dataUtils.js +471 -0
- package/dist/utils/easingUtils.d.ts +5 -0
- package/dist/utils/easingUtils.d.ts.map +1 -0
- package/dist/utils/easingUtils.js +86 -0
- package/dist/utils/edgeUtils.d.ts +37 -0
- package/dist/utils/edgeUtils.d.ts.map +1 -0
- package/dist/utils/edgeUtils.js +128 -0
- package/dist/utils/environmentUtils.d.ts +19 -0
- package/dist/utils/environmentUtils.d.ts.map +1 -0
- package/dist/utils/environmentUtils.js +144 -0
- package/dist/utils/frameAnimations.d.ts +116 -0
- package/dist/utils/frameAnimations.d.ts.map +1 -0
- package/dist/utils/frameAnimations.js +449 -0
- package/dist/utils/galleriesUtils.d.ts +10 -0
- package/dist/utils/galleriesUtils.d.ts.map +1 -0
- package/dist/utils/galleriesUtils.js +162 -0
- package/dist/utils/getAnimatableProperties.d.ts +30 -0
- package/dist/utils/getAnimatableProperties.d.ts.map +1 -0
- package/dist/utils/getAnimatableProperties.js +170 -0
- package/dist/utils/gridUtils.d.ts +8 -0
- package/dist/utils/gridUtils.d.ts.map +1 -0
- package/dist/utils/gridUtils.js +26 -0
- package/dist/utils/handleEdgesAnimations.d.ts +20 -0
- package/dist/utils/handleEdgesAnimations.d.ts.map +1 -0
- package/dist/utils/handleEdgesAnimations.js +125 -0
- package/dist/utils/handleEdgesMouseMove.d.ts +12 -0
- package/dist/utils/handleEdgesMouseMove.d.ts.map +1 -0
- package/dist/utils/handleEdgesMouseMove.js +38 -0
- package/dist/utils/handleGenerativeEffectsAnimations.d.ts +15 -0
- package/dist/utils/handleGenerativeEffectsAnimations.d.ts.map +1 -0
- package/dist/utils/handleGenerativeEffectsAnimations.js +218 -0
- package/dist/utils/handleLightAnimations.d.ts +18 -0
- package/dist/utils/handleLightAnimations.d.ts.map +1 -0
- package/dist/utils/handleLightAnimations.js +123 -0
- package/dist/utils/handleLightMouseMove.d.ts +13 -0
- package/dist/utils/handleLightMouseMove.d.ts.map +1 -0
- package/dist/utils/handleLightMouseMove.js +51 -0
- package/dist/utils/handleMaterialEffects.d.ts +32 -0
- package/dist/utils/handleMaterialEffects.d.ts.map +1 -0
- package/dist/utils/handleMaterialEffects.js +130 -0
- package/dist/utils/handleMaterialMouseMove.d.ts +11 -0
- package/dist/utils/handleMaterialMouseMove.d.ts.map +1 -0
- package/dist/utils/handleMaterialMouseMove.js +20 -0
- package/dist/utils/handleTransformEffects.d.ts +31 -0
- package/dist/utils/handleTransformEffects.d.ts.map +1 -0
- package/dist/utils/handleTransformEffects.js +140 -0
- package/dist/utils/handleTransformMouseMove.d.ts +13 -0
- package/dist/utils/handleTransformMouseMove.d.ts.map +1 -0
- package/dist/utils/handleTransformMouseMove.js +49 -0
- package/dist/utils/idUtils.d.ts +4 -0
- package/dist/utils/idUtils.d.ts.map +1 -0
- package/dist/utils/idUtils.js +10 -0
- package/dist/utils/index.d.ts +34 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +33 -0
- package/dist/utils/loadingManager.d.ts +29 -0
- package/dist/utils/loadingManager.d.ts.map +1 -0
- package/dist/utils/loadingManager.js +103 -0
- package/dist/utils/materialApplicationUtils.d.ts +72 -0
- package/dist/utils/materialApplicationUtils.d.ts.map +1 -0
- package/dist/utils/materialApplicationUtils.js +169 -0
- package/dist/utils/materialUtils.d.ts +79 -0
- package/dist/utils/materialUtils.d.ts.map +1 -0
- package/dist/utils/materialUtils.js +267 -0
- package/dist/utils/meshUtils.d.ts +10 -0
- package/dist/utils/meshUtils.d.ts.map +1 -0
- package/dist/utils/meshUtils.js +473 -0
- package/dist/utils/mouseMoveUtils.d.ts +15 -0
- package/dist/utils/mouseMoveUtils.d.ts.map +1 -0
- package/dist/utils/mouseMoveUtils.js +52 -0
- package/dist/utils/objectTreeUtils.d.ts +39 -0
- package/dist/utils/objectTreeUtils.d.ts.map +1 -0
- package/dist/utils/objectTreeUtils.js +115 -0
- package/dist/utils/optionalProperties.d.ts +36 -0
- package/dist/utils/optionalProperties.d.ts.map +1 -0
- package/dist/utils/optionalProperties.js +487 -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/pathUtils.d.ts +19 -0
- package/dist/utils/pathUtils.d.ts.map +1 -0
- package/dist/utils/pathUtils.js +73 -0
- package/dist/utils/positionsCreatorUtils.d.ts +97 -0
- package/dist/utils/positionsCreatorUtils.d.ts.map +1 -0
- package/dist/utils/positionsCreatorUtils.js +644 -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/shootingStarHelpers.d.ts +13 -0
- package/dist/utils/shootingStarHelpers.d.ts.map +1 -0
- package/dist/utils/shootingStarHelpers.js +44 -0
- package/dist/utils/sunUtils.d.ts +6 -0
- package/dist/utils/sunUtils.d.ts.map +1 -0
- package/dist/utils/sunUtils.js +9 -0
- package/dist/utils/utils.d.ts +21 -0
- package/dist/utils/utils.d.ts.map +1 -0
- package/dist/utils/utils.js +158 -0
- package/package.json +43 -0
|
@@ -0,0 +1,644 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Shared helpers
|
|
3
|
+
//
|
|
4
|
+
// Every generator below emits positions inside a UNIT cube centered at the
|
|
5
|
+
// origin (longest axis = 1.0, coords in -0.5..0.5) so all shapes render at a
|
|
6
|
+
// consistent size. These helpers hold the point-writing / edge-sampling /
|
|
7
|
+
// ring-fill logic the generators used to duplicate.
|
|
8
|
+
// ============================================================================
|
|
9
|
+
/** Write a single xyz point into a flat [x,y,z, x,y,z, ...] buffer. */
|
|
10
|
+
export function setPoint(data, particleIndex, x, y, z) {
|
|
11
|
+
data[particleIndex * 3] = x;
|
|
12
|
+
data[particleIndex * 3 + 1] = y;
|
|
13
|
+
data[particleIndex * 3 + 2] = z;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Sequential writer into a flat position buffer. Tracks the running particle
|
|
17
|
+
* index and silently ignores writes past `total`, so generators can emit
|
|
18
|
+
* "up to N" points without repeating bounds checks everywhere.
|
|
19
|
+
*/
|
|
20
|
+
export function createPointWriter(data, total) {
|
|
21
|
+
let index = 0;
|
|
22
|
+
return {
|
|
23
|
+
add(x, y, z) {
|
|
24
|
+
if (index < total) {
|
|
25
|
+
setPoint(data, index, x, y, z);
|
|
26
|
+
index++;
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
/** Sample `count` evenly-spaced points along the segment A->B (inclusive). */
|
|
30
|
+
addSegment(ax, ay, az, bx, by, bz, count, skipFirst = false) {
|
|
31
|
+
for (let i = skipFirst ? 1 : 0; i < count && index < total; i++) {
|
|
32
|
+
const t = count > 1 ? i / (count - 1) : 0.5;
|
|
33
|
+
this.add(ax + (bx - ax) * t, ay + (by - ay) * t, az + (bz - az) * t);
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
get count() { return index; },
|
|
37
|
+
get done() { return index >= total; },
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Golden-angle ("Fibonacci sphere") point for an even distribution of `count`
|
|
42
|
+
* points over a sphere surface of the given radius. Shared by the sphere
|
|
43
|
+
* surface and the sphere-shell volume fill.
|
|
44
|
+
*/
|
|
45
|
+
export function fibonacciSpherePoint(i, count, radius) {
|
|
46
|
+
const goldenRatio = (1 + Math.sqrt(5)) / 2;
|
|
47
|
+
const t = count > 1 ? i / (count - 1) : 0.5;
|
|
48
|
+
const phi = Math.acos(1 - 2 * t); // inclination 0..π
|
|
49
|
+
const theta = Math.PI * 2 * goldenRatio * i; // azimuth via golden angle
|
|
50
|
+
return [
|
|
51
|
+
radius * Math.sin(phi) * Math.cos(theta),
|
|
52
|
+
radius * Math.sin(phi) * Math.sin(theta),
|
|
53
|
+
radius * Math.cos(phi),
|
|
54
|
+
];
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Center a set of paths on the origin and uniformly scale them so their
|
|
58
|
+
* longest axis equals `targetSize` (default 1 → unit cube, coords in
|
|
59
|
+
* -0.5..0.5), preserving aspect ratio. Used to normalize the static
|
|
60
|
+
* coordinate arrays (brain/dna/helix3d/circles) that have no scale param.
|
|
61
|
+
*/
|
|
62
|
+
export function centerPathsToUnit(paths, targetSize = 1) {
|
|
63
|
+
const min = [Infinity, Infinity, Infinity];
|
|
64
|
+
const max = [-Infinity, -Infinity, -Infinity];
|
|
65
|
+
for (const path of paths) {
|
|
66
|
+
for (let i = 0; i < path.length; i += 3) {
|
|
67
|
+
for (let k = 0; k < 3; k++) {
|
|
68
|
+
const v = path[i + k];
|
|
69
|
+
if (v < min[k])
|
|
70
|
+
min[k] = v;
|
|
71
|
+
if (v > max[k])
|
|
72
|
+
max[k] = v;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const center = [(min[0] + max[0]) / 2, (min[1] + max[1]) / 2, (min[2] + max[2]) / 2];
|
|
77
|
+
const maxExtent = Math.max(max[0] - min[0], max[1] - min[1], max[2] - min[2]) || 1;
|
|
78
|
+
const scale = targetSize / maxExtent;
|
|
79
|
+
return paths.map((path) => {
|
|
80
|
+
const out = new Array(path.length);
|
|
81
|
+
for (let i = 0; i < path.length; i += 3) {
|
|
82
|
+
out[i] = (path[i] - center[0]) * scale;
|
|
83
|
+
out[i + 1] = (path[i + 1] - center[1]) * scale;
|
|
84
|
+
out[i + 2] = (path[i + 2] - center[2]) * scale;
|
|
85
|
+
}
|
|
86
|
+
return out;
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Fill a disk of the given radius with concentric rings, writing up to the
|
|
91
|
+
* writer's remaining capacity. `place(x, y)` maps a 2D ring coordinate onto
|
|
92
|
+
* the target plane (XY for a circle, XZ at a fixed height for a cylinder layer).
|
|
93
|
+
*/
|
|
94
|
+
export function fillRings(writer, radius, ringBudget, place) {
|
|
95
|
+
const rings = Math.ceil(Math.sqrt(ringBudget));
|
|
96
|
+
for (let ring = 0; ring < rings && !writer.done; ring++) {
|
|
97
|
+
const ringRadius = ring / (rings - 1 || 1); // normalized 0..1
|
|
98
|
+
const circumference = 2 * Math.PI * ringRadius;
|
|
99
|
+
const particlesInRing = ring === 0 ? 1 : Math.max(1, Math.round(circumference * rings / 2));
|
|
100
|
+
for (let i = 0; i < particlesInRing && !writer.done; i++) {
|
|
101
|
+
const t = particlesInRing > 1 ? i / particlesInRing : 0;
|
|
102
|
+
const angle = t * Math.PI * 2;
|
|
103
|
+
const [px, py, pz] = place(ringRadius * radius * Math.cos(angle), ringRadius * radius * Math.sin(angle));
|
|
104
|
+
writer.add(px, py, pz);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Generate positions for a square shape - evenly scattered on x and y axis.
|
|
110
|
+
* Defaults (width = height = 1) span -0.5..0.5.
|
|
111
|
+
* @param width - Width of the square (x-axis)
|
|
112
|
+
* @param height - Height of the square (y-axis)
|
|
113
|
+
* @param length - Number of particles to generate
|
|
114
|
+
* @param outlines - If true, positions particles only on the outer edges
|
|
115
|
+
* @returns Float32Array with particle positions (x, y, z format, 3 values per particle)
|
|
116
|
+
*/
|
|
117
|
+
export function generateSquarePositions(width, height, length, outlines) {
|
|
118
|
+
const data = new Float32Array(length * 3);
|
|
119
|
+
const writer = createPointWriter(data, length);
|
|
120
|
+
const halfX = width / 2;
|
|
121
|
+
const halfY = height / 2;
|
|
122
|
+
if (outlines) {
|
|
123
|
+
// Distribute particles across the 4 edges proportionally to edge length.
|
|
124
|
+
const perimeter = 2 * (width + height);
|
|
125
|
+
const nWidth = Math.max(2, Math.round((width / perimeter) * length));
|
|
126
|
+
const nHeight = Math.max(2, Math.round((height / perimeter) * length));
|
|
127
|
+
writer.addSegment(-halfX, -halfY, 0, halfX, -halfY, 0, nWidth); // bottom
|
|
128
|
+
writer.addSegment(halfX, -halfY, 0, halfX, halfY, 0, nHeight, true); // right
|
|
129
|
+
writer.addSegment(halfX, halfY, 0, -halfX, halfY, 0, nWidth, true); // top
|
|
130
|
+
writer.addSegment(-halfX, halfY, 0, -halfX, -halfY, 0, nHeight, true); // left
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
// Evenly spaced grid sized to the aspect ratio.
|
|
134
|
+
const aspectRatio = width / height;
|
|
135
|
+
const gridY = Math.round(Math.sqrt(length / aspectRatio));
|
|
136
|
+
const gridX = Math.max(1, Math.round(length / gridY));
|
|
137
|
+
for (let y = 0; y < gridY && !writer.done; y++) {
|
|
138
|
+
for (let x = 0; x < gridX && !writer.done; x++) {
|
|
139
|
+
const normX = gridX > 1 ? x / (gridX - 1) : 0.5;
|
|
140
|
+
const normY = gridY > 1 ? y / (gridY - 1) : 0.5;
|
|
141
|
+
writer.add((normX - 0.5) * width, (normY - 0.5) * height, 0);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return data;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Generate positions for a box shape - evenly distributed in 3D space
|
|
149
|
+
* Following the pattern from generateLinePositions for correct position distribution
|
|
150
|
+
* @param meshSize - Size of the box [width, height, depth]
|
|
151
|
+
* @param length - Number of particles to generate
|
|
152
|
+
* @param outlines - If true, positions particles only on the edges; if false, fills the volume
|
|
153
|
+
* @returns Float32Array with particle positions (x, y, z format, 3 values per particle)
|
|
154
|
+
*/
|
|
155
|
+
export function generateBoxPositions(meshSize, length, outlines) {
|
|
156
|
+
const data = new Float32Array(length * 3);
|
|
157
|
+
const writer = createPointWriter(data, length);
|
|
158
|
+
const [sizeX, sizeY, sizeZ] = meshSize;
|
|
159
|
+
const halfX = sizeX / 2;
|
|
160
|
+
const halfY = sizeY / 2;
|
|
161
|
+
const halfZ = sizeZ / 2;
|
|
162
|
+
if (outlines) {
|
|
163
|
+
// Box wireframe: 12 edges (4 top, 4 bottom, 4 vertical), particles split
|
|
164
|
+
// across the 4 edges in each direction proportionally to edge length.
|
|
165
|
+
const totalEdgeLength = 4 * (sizeX + sizeY + sizeZ);
|
|
166
|
+
const perEdgeX = Math.max(2, Math.ceil(Math.round((4 * sizeX / totalEdgeLength) * length) / 4));
|
|
167
|
+
const perEdgeY = Math.max(2, Math.ceil(Math.round((4 * sizeY / totalEdgeLength) * length) / 4));
|
|
168
|
+
const perEdgeZ = Math.max(2, Math.ceil(Math.round((4 * sizeZ / totalEdgeLength) * length) / 4));
|
|
169
|
+
// Top face edges
|
|
170
|
+
writer.addSegment(-halfX, halfY, -halfZ, halfX, halfY, -halfZ, perEdgeX); // front top
|
|
171
|
+
writer.addSegment(halfX, halfY, -halfZ, halfX, halfY, halfZ, perEdgeZ, true); // right top
|
|
172
|
+
writer.addSegment(halfX, halfY, halfZ, -halfX, halfY, halfZ, perEdgeX, true); // back top
|
|
173
|
+
writer.addSegment(-halfX, halfY, halfZ, -halfX, halfY, -halfZ, perEdgeZ, true); // left top
|
|
174
|
+
// Bottom face edges
|
|
175
|
+
writer.addSegment(-halfX, -halfY, -halfZ, halfX, -halfY, -halfZ, perEdgeX); // front bottom
|
|
176
|
+
writer.addSegment(halfX, -halfY, -halfZ, halfX, -halfY, halfZ, perEdgeZ, true); // right bottom
|
|
177
|
+
writer.addSegment(halfX, -halfY, halfZ, -halfX, -halfY, halfZ, perEdgeX, true); // back bottom
|
|
178
|
+
writer.addSegment(-halfX, -halfY, halfZ, -halfX, -halfY, -halfZ, perEdgeZ, true); // left bottom
|
|
179
|
+
// Vertical edges
|
|
180
|
+
writer.addSegment(-halfX, -halfY, -halfZ, -halfX, halfY, -halfZ, perEdgeY, true); // front left
|
|
181
|
+
writer.addSegment(halfX, -halfY, -halfZ, halfX, halfY, -halfZ, perEdgeY, true); // front right
|
|
182
|
+
writer.addSegment(halfX, -halfY, halfZ, halfX, halfY, halfZ, perEdgeY, true); // back right
|
|
183
|
+
writer.addSegment(-halfX, -halfY, halfZ, -halfX, halfY, halfZ, perEdgeY, true); // back left
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
// Solid box: evenly distributed particles throughout the volume.
|
|
187
|
+
const volume = sizeX * sizeY * sizeZ;
|
|
188
|
+
const baseParticlesPerUnit = Math.cbrt(length / volume);
|
|
189
|
+
let gridX = Math.max(1, Math.round(sizeX * baseParticlesPerUnit));
|
|
190
|
+
let gridY = Math.max(1, Math.round(sizeY * baseParticlesPerUnit));
|
|
191
|
+
let gridZ = Math.max(1, Math.round(sizeZ * baseParticlesPerUnit));
|
|
192
|
+
// Nudge the grid toward the target particle count.
|
|
193
|
+
const gridTotal = gridX * gridY * gridZ;
|
|
194
|
+
if (gridTotal > 0) {
|
|
195
|
+
const scaleFactor = Math.cbrt(length / gridTotal);
|
|
196
|
+
gridX = Math.max(1, Math.round(gridX * scaleFactor));
|
|
197
|
+
gridY = Math.max(1, Math.round(gridY * scaleFactor));
|
|
198
|
+
gridZ = Math.max(1, Math.round(gridZ * scaleFactor));
|
|
199
|
+
}
|
|
200
|
+
for (let z = 0; z < gridZ && !writer.done; z++) {
|
|
201
|
+
for (let y = 0; y < gridY && !writer.done; y++) {
|
|
202
|
+
for (let x = 0; x < gridX && !writer.done; x++) {
|
|
203
|
+
const normX = gridX > 1 ? x / (gridX - 1) : 0.5;
|
|
204
|
+
const normY = gridY > 1 ? y / (gridY - 1) : 0.5;
|
|
205
|
+
const normZ = gridZ > 1 ? z / (gridZ - 1) : 0.5;
|
|
206
|
+
writer.add((normX - 0.5) * sizeX, (normY - 0.5) * sizeY, (normZ - 0.5) * sizeZ);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return data;
|
|
212
|
+
}
|
|
213
|
+
export function generateLinePositions(start, end, length) {
|
|
214
|
+
const data = new Float32Array(length * 3);
|
|
215
|
+
const writer = createPointWriter(data, length);
|
|
216
|
+
writer.addSegment(start[0], start[1], start[2], end[0], end[1], end[2], length);
|
|
217
|
+
return data;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Generate positions for a triangle shape - evenly distributed
|
|
221
|
+
* Following the pattern from generateLinePositions for correct position distribution
|
|
222
|
+
* @param size - Size of the triangle (distance from center to vortex)
|
|
223
|
+
* @param length - Number of particles to generate
|
|
224
|
+
* @param outlines - If true, positions particles only on the edges; if false, fills the triangle
|
|
225
|
+
* @returns Float32Array with particle positions (x, y, z format, 3 values per particle)
|
|
226
|
+
*/
|
|
227
|
+
export function generateTrianglePositions(size, length, outlines) {
|
|
228
|
+
const data = new Float32Array(length * 3);
|
|
229
|
+
const writer = createPointWriter(data, length);
|
|
230
|
+
// Equilateral triangle vertices, bounding-box centered in the XY plane so
|
|
231
|
+
// the whole shape stays within -0.5..0.5. With size = 1 the width (longest
|
|
232
|
+
// axis) is 1.0 and the height is ~0.866.
|
|
233
|
+
const height = size * Math.sqrt(3) / 2;
|
|
234
|
+
const top = [0, height / 2, 0];
|
|
235
|
+
const left = [-size / 2, -height / 2, 0];
|
|
236
|
+
const right = [size / 2, -height / 2, 0];
|
|
237
|
+
if (outlines) {
|
|
238
|
+
const perEdge = Math.ceil(length / 3);
|
|
239
|
+
writer.addSegment(top[0], top[1], 0, left[0], left[1], 0, perEdge); // top -> bottom-left
|
|
240
|
+
writer.addSegment(left[0], left[1], 0, right[0], right[1], 0, perEdge, true); // bottom-left -> bottom-right
|
|
241
|
+
writer.addSegment(right[0], right[1], 0, top[0], top[1], 0, perEdge, true); // bottom-right -> top
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
// Fill via barycentric coordinates, row by row.
|
|
245
|
+
const rows = Math.ceil(Math.sqrt(length * 2));
|
|
246
|
+
for (let row = 0; row < rows && !writer.done; row++) {
|
|
247
|
+
const rowProgress = rows > 1 ? row / (rows - 1) : 0.5;
|
|
248
|
+
const particlesInRow = Math.max(1, Math.round((1 - rowProgress) * rows));
|
|
249
|
+
for (let col = 0; col < particlesInRow && !writer.done; col++) {
|
|
250
|
+
const colProgress = particlesInRow > 1 ? col / (particlesInRow - 1) : 0.5;
|
|
251
|
+
const u = rowProgress;
|
|
252
|
+
const v = colProgress * (1 - rowProgress);
|
|
253
|
+
const w = 1 - u - v;
|
|
254
|
+
writer.add(w * top[0] + u * left[0] + v * right[0], w * top[1] + u * left[1] + v * right[1], 0);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
return data;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Generate positions for a circle shape - evenly distributed
|
|
262
|
+
* Following the pattern from generateLinePositions for correct position distribution
|
|
263
|
+
* @param radius - Radius of the circle
|
|
264
|
+
* @param length - Number of particles to generate
|
|
265
|
+
* @param outlines - If true, positions particles only on the circle perimeter; if false, fills the circle
|
|
266
|
+
* @returns Float32Array with particle positions (x, y, z format, 3 values per particle)
|
|
267
|
+
*/
|
|
268
|
+
export function generateCirclePositions(radius, length, outlines) {
|
|
269
|
+
const data = new Float32Array(length * 3);
|
|
270
|
+
const writer = createPointWriter(data, length);
|
|
271
|
+
if (outlines) {
|
|
272
|
+
// Even distribution around the perimeter.
|
|
273
|
+
for (let i = 0; i < length; i++) {
|
|
274
|
+
const t = length > 1 ? i / (length - 1) : 0.5;
|
|
275
|
+
const angle = t * Math.PI * 2;
|
|
276
|
+
writer.add(radius * Math.cos(angle), radius * Math.sin(angle), 0);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
// Fill with concentric rings in the XY plane.
|
|
281
|
+
fillRings(writer, radius, length, (x, y) => [x, y, 0]);
|
|
282
|
+
}
|
|
283
|
+
return data;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* Generate positions for a sphere shape - evenly distributed
|
|
287
|
+
* Following the pattern from generateLinePositions for correct position distribution
|
|
288
|
+
* @param radius - Radius of the sphere
|
|
289
|
+
* @param length - Number of particles to generate
|
|
290
|
+
* @param outlines - If true, positions particles only on the sphere surface; if false, fills the volume
|
|
291
|
+
* @returns Float32Array with particle positions (x, y, z format, 3 values per particle)
|
|
292
|
+
*/
|
|
293
|
+
export function generateSpherePositions(radius, length, outlines) {
|
|
294
|
+
const data = new Float32Array(length * 3);
|
|
295
|
+
const writer = createPointWriter(data, length);
|
|
296
|
+
if (outlines) {
|
|
297
|
+
// Even surface distribution via the Fibonacci sphere.
|
|
298
|
+
for (let i = 0; i < length; i++) {
|
|
299
|
+
const [x, y, z] = fibonacciSpherePoint(i, length, radius);
|
|
300
|
+
writer.add(x, y, z);
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
else {
|
|
304
|
+
// Fill the volume with nested spherical shells, each spread by the same
|
|
305
|
+
// golden-angle distribution.
|
|
306
|
+
const shells = Math.ceil(Math.cbrt(length));
|
|
307
|
+
for (let shell = 0; shell < shells && !writer.done; shell++) {
|
|
308
|
+
const normalizedRadius = shell / (shells - 1 || 1); // 0..1
|
|
309
|
+
const surfaceArea = 4 * Math.PI * normalizedRadius * normalizedRadius;
|
|
310
|
+
const particlesInShell = shell === 0 ? 1 : Math.max(1, Math.round(surfaceArea * shells * shells / 4));
|
|
311
|
+
for (let i = 0; i < particlesInShell && !writer.done; i++) {
|
|
312
|
+
const [x, y, z] = fibonacciSpherePoint(i, particlesInShell, normalizedRadius * radius);
|
|
313
|
+
writer.add(x, y, z);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
return data;
|
|
318
|
+
}
|
|
319
|
+
/**
|
|
320
|
+
* Generate positions for a cylinder shape - evenly distributed
|
|
321
|
+
* Following the pattern from generateLinePositions for correct position distribution
|
|
322
|
+
* @param radius - Radius of the cylinder
|
|
323
|
+
* @param height - Height of the cylinder
|
|
324
|
+
* @param length - Number of particles to generate
|
|
325
|
+
* @param outlines - If true, positions particles only on the edges (top/bottom circles and vertical edges); if false, fills the volume
|
|
326
|
+
* @returns Float32Array with particle positions (x, y, z format, 3 values per particle)
|
|
327
|
+
*/
|
|
328
|
+
export function generateCylinderPositions(radius, height, length, outlines) {
|
|
329
|
+
const data = new Float32Array(length * 3);
|
|
330
|
+
const writer = createPointWriter(data, length);
|
|
331
|
+
const halfHeight = height / 2;
|
|
332
|
+
if (outlines) {
|
|
333
|
+
// Top circle, bottom circle, and 4 vertical edges, split proportionally.
|
|
334
|
+
const circumference = 2 * Math.PI * radius;
|
|
335
|
+
const totalOutlineLength = 2 * circumference + 4 * height;
|
|
336
|
+
const perCircle = Math.max(3, Math.round((circumference / totalOutlineLength) * length));
|
|
337
|
+
const perVerticalEdge = Math.max(2, Math.round((height / totalOutlineLength) * length / 4));
|
|
338
|
+
// A circle traced in the XZ plane at a given height (open loop, t uses
|
|
339
|
+
// `/count` so the first and last points don't coincide).
|
|
340
|
+
const addCircle = (y, count) => {
|
|
341
|
+
for (let i = 0; i < count && !writer.done; i++) {
|
|
342
|
+
const angle = (count > 1 ? i / count : 0) * Math.PI * 2;
|
|
343
|
+
writer.add(radius * Math.cos(angle), y, radius * Math.sin(angle));
|
|
344
|
+
}
|
|
345
|
+
};
|
|
346
|
+
addCircle(halfHeight, perCircle);
|
|
347
|
+
addCircle(-halfHeight, perCircle);
|
|
348
|
+
for (const angle of [0, Math.PI / 2, Math.PI, Math.PI * 3 / 2]) {
|
|
349
|
+
const x = radius * Math.cos(angle);
|
|
350
|
+
const z = radius * Math.sin(angle);
|
|
351
|
+
writer.addSegment(x, -halfHeight, z, x, halfHeight, z, perVerticalEdge);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
// Fill the volume layer by layer, each layer a concentric-ring disk.
|
|
356
|
+
const density = length / (Math.PI * radius * radius * height);
|
|
357
|
+
const layers = Math.max(1, Math.round(height * Math.cbrt(density / Math.PI)));
|
|
358
|
+
const ringsPerLayer = Math.max(1, Math.round(Math.sqrt(length / layers)));
|
|
359
|
+
for (let layer = 0; layer < layers && !writer.done; layer++) {
|
|
360
|
+
const y = layers > 1 ? -halfHeight + (layer / (layers - 1)) * height : 0;
|
|
361
|
+
fillRings(writer, radius, ringsPerLayer, (x, z) => [x, y, z]);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
return data;
|
|
365
|
+
}
|
|
366
|
+
export const calculateCirclePositions = (count, sep) => {
|
|
367
|
+
let positions = [];
|
|
368
|
+
for (let i = 0; i < count * count; i++) {
|
|
369
|
+
// Convert i to an angle between 0 and 2π
|
|
370
|
+
let angle = (i / (count * count)) * 2 * Math.PI;
|
|
371
|
+
// Calculate the radius of the current point
|
|
372
|
+
let radius = (sep * ((i % count) - count / 2)) / 150;
|
|
373
|
+
// Convert polar coordinates to Cartesian coordinates
|
|
374
|
+
let x = radius * Math.cos(angle);
|
|
375
|
+
let z = radius * Math.sin(angle);
|
|
376
|
+
let y = 0;
|
|
377
|
+
// let y = graph(x, z);
|
|
378
|
+
positions.push(x, y, z);
|
|
379
|
+
}
|
|
380
|
+
return new Float32Array(positions);
|
|
381
|
+
};
|
|
382
|
+
export function generateTextPositions(shapeParams, config) {
|
|
383
|
+
const { length } = shapeParams;
|
|
384
|
+
const { text, letterSize, spacing } = config;
|
|
385
|
+
// const length = positions ? positions.length : width * height * 4;
|
|
386
|
+
const data = new Float32Array(length);
|
|
387
|
+
// Define letter shapes as filled areas using a bitmap-like approach
|
|
388
|
+
const letterBitmaps = {
|
|
389
|
+
'A': [
|
|
390
|
+
[0, 1, 1, 0],
|
|
391
|
+
[1, 0, 0, 1],
|
|
392
|
+
[1, 1, 1, 1],
|
|
393
|
+
[1, 0, 0, 1],
|
|
394
|
+
[1, 0, 0, 1]
|
|
395
|
+
],
|
|
396
|
+
'B': [
|
|
397
|
+
[1, 1, 1, 0],
|
|
398
|
+
[1, 0, 0, 1],
|
|
399
|
+
[1, 1, 1, 0],
|
|
400
|
+
[1, 0, 0, 1],
|
|
401
|
+
[1, 1, 1, 0]
|
|
402
|
+
],
|
|
403
|
+
'C': [
|
|
404
|
+
[0, 1, 1, 1],
|
|
405
|
+
[1, 0, 0, 0],
|
|
406
|
+
[1, 0, 0, 0],
|
|
407
|
+
[1, 0, 0, 0],
|
|
408
|
+
[0, 1, 1, 1]
|
|
409
|
+
],
|
|
410
|
+
'D': [
|
|
411
|
+
[1, 1, 1, 0],
|
|
412
|
+
[1, 0, 0, 1],
|
|
413
|
+
[1, 0, 0, 1],
|
|
414
|
+
[1, 0, 0, 1],
|
|
415
|
+
[1, 1, 1, 0]
|
|
416
|
+
],
|
|
417
|
+
'E': [
|
|
418
|
+
[1, 1, 1, 1],
|
|
419
|
+
[1, 0, 0, 0],
|
|
420
|
+
[1, 1, 1, 0],
|
|
421
|
+
[1, 0, 0, 0],
|
|
422
|
+
[1, 1, 1, 1]
|
|
423
|
+
],
|
|
424
|
+
'F': [
|
|
425
|
+
[1, 1, 1, 1],
|
|
426
|
+
[1, 0, 0, 0],
|
|
427
|
+
[1, 1, 1, 0],
|
|
428
|
+
[1, 0, 0, 0],
|
|
429
|
+
[1, 0, 0, 0]
|
|
430
|
+
],
|
|
431
|
+
'G': [
|
|
432
|
+
[0, 1, 1, 1],
|
|
433
|
+
[1, 0, 0, 0],
|
|
434
|
+
[1, 0, 1, 1],
|
|
435
|
+
[1, 0, 0, 1],
|
|
436
|
+
[0, 1, 1, 1]
|
|
437
|
+
],
|
|
438
|
+
'H': [
|
|
439
|
+
[1, 0, 0, 1],
|
|
440
|
+
[1, 0, 0, 1],
|
|
441
|
+
[1, 1, 1, 1],
|
|
442
|
+
[1, 0, 0, 1],
|
|
443
|
+
[1, 0, 0, 1]
|
|
444
|
+
],
|
|
445
|
+
'I': [
|
|
446
|
+
[1, 1, 1],
|
|
447
|
+
[0, 1, 0],
|
|
448
|
+
[0, 1, 0],
|
|
449
|
+
[0, 1, 0],
|
|
450
|
+
[1, 1, 1]
|
|
451
|
+
],
|
|
452
|
+
'J': [
|
|
453
|
+
[1, 1, 1, 1],
|
|
454
|
+
[0, 0, 1, 0],
|
|
455
|
+
[0, 0, 1, 0],
|
|
456
|
+
[1, 0, 1, 0],
|
|
457
|
+
[0, 1, 1, 0]
|
|
458
|
+
],
|
|
459
|
+
'K': [
|
|
460
|
+
[1, 0, 0, 1],
|
|
461
|
+
[1, 0, 1, 0],
|
|
462
|
+
[1, 1, 0, 0],
|
|
463
|
+
[1, 0, 1, 0],
|
|
464
|
+
[1, 0, 0, 1]
|
|
465
|
+
],
|
|
466
|
+
'L': [
|
|
467
|
+
[1, 0, 0, 0],
|
|
468
|
+
[1, 0, 0, 0],
|
|
469
|
+
[1, 0, 0, 0],
|
|
470
|
+
[1, 0, 0, 0],
|
|
471
|
+
[1, 1, 1, 1]
|
|
472
|
+
],
|
|
473
|
+
'M': [
|
|
474
|
+
[1, 0, 0, 1],
|
|
475
|
+
[1, 1, 1, 1],
|
|
476
|
+
[1, 0, 0, 1],
|
|
477
|
+
[1, 0, 0, 1],
|
|
478
|
+
[1, 0, 0, 1]
|
|
479
|
+
],
|
|
480
|
+
'N': [
|
|
481
|
+
[1, 0, 0, 1],
|
|
482
|
+
[1, 1, 0, 1],
|
|
483
|
+
[1, 0, 1, 1],
|
|
484
|
+
[1, 0, 0, 1],
|
|
485
|
+
[1, 0, 0, 1]
|
|
486
|
+
],
|
|
487
|
+
'O': [
|
|
488
|
+
[0, 1, 1, 0],
|
|
489
|
+
[1, 0, 0, 1],
|
|
490
|
+
[1, 0, 0, 1],
|
|
491
|
+
[1, 0, 0, 1],
|
|
492
|
+
[0, 1, 1, 0]
|
|
493
|
+
],
|
|
494
|
+
'P': [
|
|
495
|
+
[1, 1, 1, 0],
|
|
496
|
+
[1, 0, 0, 1],
|
|
497
|
+
[1, 1, 1, 0],
|
|
498
|
+
[1, 0, 0, 0],
|
|
499
|
+
[1, 0, 0, 0]
|
|
500
|
+
],
|
|
501
|
+
'Q': [
|
|
502
|
+
[0, 1, 1, 0],
|
|
503
|
+
[1, 0, 0, 1],
|
|
504
|
+
[1, 0, 0, 1],
|
|
505
|
+
[1, 0, 1, 1],
|
|
506
|
+
[0, 1, 1, 1]
|
|
507
|
+
],
|
|
508
|
+
'R': [
|
|
509
|
+
[1, 1, 1, 0],
|
|
510
|
+
[1, 0, 0, 1],
|
|
511
|
+
[1, 1, 1, 0],
|
|
512
|
+
[1, 0, 1, 0],
|
|
513
|
+
[1, 0, 0, 1]
|
|
514
|
+
],
|
|
515
|
+
'S': [
|
|
516
|
+
[0, 1, 1, 1],
|
|
517
|
+
[1, 0, 0, 0],
|
|
518
|
+
[0, 1, 1, 0],
|
|
519
|
+
[0, 0, 0, 1],
|
|
520
|
+
[1, 1, 1, 0]
|
|
521
|
+
],
|
|
522
|
+
'T': [
|
|
523
|
+
[1, 1, 1, 1, 1],
|
|
524
|
+
[0, 0, 1, 0, 0],
|
|
525
|
+
[0, 0, 1, 0, 0],
|
|
526
|
+
[0, 0, 1, 0, 0],
|
|
527
|
+
[0, 0, 1, 0, 0]
|
|
528
|
+
],
|
|
529
|
+
'U': [
|
|
530
|
+
[1, 0, 0, 1],
|
|
531
|
+
[1, 0, 0, 1],
|
|
532
|
+
[1, 0, 0, 1],
|
|
533
|
+
[1, 0, 0, 1],
|
|
534
|
+
[0, 1, 1, 0]
|
|
535
|
+
],
|
|
536
|
+
'V': [
|
|
537
|
+
[1, 0, 0, 1],
|
|
538
|
+
[1, 0, 0, 1],
|
|
539
|
+
[1, 0, 0, 1],
|
|
540
|
+
[0, 1, 1, 0],
|
|
541
|
+
[0, 0, 1, 0]
|
|
542
|
+
],
|
|
543
|
+
'W': [
|
|
544
|
+
[1, 0, 0, 0, 1],
|
|
545
|
+
[1, 0, 0, 0, 1],
|
|
546
|
+
[1, 0, 1, 0, 1],
|
|
547
|
+
[1, 1, 0, 1, 1],
|
|
548
|
+
[1, 0, 0, 0, 1]
|
|
549
|
+
],
|
|
550
|
+
'X': [
|
|
551
|
+
[1, 0, 0, 1],
|
|
552
|
+
[0, 1, 1, 0],
|
|
553
|
+
[0, 1, 1, 0],
|
|
554
|
+
[1, 0, 0, 1],
|
|
555
|
+
[1, 0, 0, 1]
|
|
556
|
+
],
|
|
557
|
+
'Y': [
|
|
558
|
+
[1, 0, 0, 1],
|
|
559
|
+
[0, 1, 1, 0],
|
|
560
|
+
[0, 1, 1, 0],
|
|
561
|
+
[0, 0, 1, 0],
|
|
562
|
+
[0, 0, 1, 0]
|
|
563
|
+
],
|
|
564
|
+
'Z': [
|
|
565
|
+
[1, 1, 1, 1],
|
|
566
|
+
[0, 0, 0, 1],
|
|
567
|
+
[0, 0, 1, 0],
|
|
568
|
+
[0, 1, 0, 0],
|
|
569
|
+
[1, 1, 1, 1]
|
|
570
|
+
],
|
|
571
|
+
'0': [
|
|
572
|
+
[0, 1, 1, 0],
|
|
573
|
+
[1, 0, 0, 1],
|
|
574
|
+
[1, 0, 0, 1],
|
|
575
|
+
[1, 0, 0, 1],
|
|
576
|
+
[0, 1, 1, 0]
|
|
577
|
+
],
|
|
578
|
+
'1': [
|
|
579
|
+
[0, 1, 0],
|
|
580
|
+
[1, 1, 0],
|
|
581
|
+
[0, 1, 0],
|
|
582
|
+
[0, 1, 0],
|
|
583
|
+
[1, 1, 1]
|
|
584
|
+
],
|
|
585
|
+
'2': [
|
|
586
|
+
[1, 1, 1, 0],
|
|
587
|
+
[0, 0, 0, 1],
|
|
588
|
+
[0, 1, 1, 0],
|
|
589
|
+
[1, 0, 0, 0],
|
|
590
|
+
[1, 1, 1, 1]
|
|
591
|
+
],
|
|
592
|
+
'3': [
|
|
593
|
+
[1, 1, 1, 0],
|
|
594
|
+
[0, 0, 0, 1],
|
|
595
|
+
[0, 1, 1, 0],
|
|
596
|
+
[0, 0, 0, 1],
|
|
597
|
+
[1, 1, 1, 0]
|
|
598
|
+
],
|
|
599
|
+
' ': [] // Space
|
|
600
|
+
};
|
|
601
|
+
const letters = text.toUpperCase().split('');
|
|
602
|
+
const totalWidth = letters.length * spacing;
|
|
603
|
+
const startX = -totalWidth / 2;
|
|
604
|
+
// Create a list of all valid particle positions for the text
|
|
605
|
+
const textPositions = [];
|
|
606
|
+
letters.forEach((letter, letterIndex) => {
|
|
607
|
+
const bitmap = letterBitmaps[letter] || letterBitmaps['A'];
|
|
608
|
+
if (bitmap.length === 0)
|
|
609
|
+
return; // Skip spaces
|
|
610
|
+
const letterWidth = bitmap[0]?.length || 4;
|
|
611
|
+
const letterHeight = bitmap.length;
|
|
612
|
+
// For each pixel in the bitmap, create multiple particles for density
|
|
613
|
+
for (let row = 0; row < letterHeight; row++) {
|
|
614
|
+
for (let col = 0; col < letterWidth; col++) {
|
|
615
|
+
if (bitmap[row] && bitmap[row][col] === 1) {
|
|
616
|
+
// Create multiple particles per bitmap pixel for better density
|
|
617
|
+
const particlesPerPixel = 8;
|
|
618
|
+
for (let p = 0; p < particlesPerPixel; p++) {
|
|
619
|
+
const pixelX = startX + letterIndex * spacing + (col + Math.random()) * letterSize / letterWidth;
|
|
620
|
+
const pixelY = ((letterHeight - 1 - row) + Math.random() - letterHeight / 2) * letterSize / letterHeight;
|
|
621
|
+
const pixelZ = (Math.random() - 0.5) * 0.3;
|
|
622
|
+
textPositions.push([pixelX, pixelY, pixelZ]);
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
});
|
|
628
|
+
// If no valid positions, create a fallback
|
|
629
|
+
if (textPositions.length === 0) {
|
|
630
|
+
textPositions.push([0, 0, 0]);
|
|
631
|
+
}
|
|
632
|
+
// Fill the data array by cycling through valid text positions
|
|
633
|
+
for (let i = 0; i < length; i += 3) {
|
|
634
|
+
const index = i / 3;
|
|
635
|
+
const posIndex = index % textPositions.length;
|
|
636
|
+
const pos = textPositions[posIndex];
|
|
637
|
+
// Add some slight randomness to avoid perfect repetition
|
|
638
|
+
const randomOffset = 0.1;
|
|
639
|
+
data[i] = pos[0] + (Math.random() - 0.5) * randomOffset; // x
|
|
640
|
+
data[i + 1] = pos[1] + (Math.random() - 0.5) * randomOffset; // y
|
|
641
|
+
data[i + 2] = pos[2] + (Math.random() - 0.5) * randomOffset; // z
|
|
642
|
+
}
|
|
643
|
+
return data;
|
|
644
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Object3D } from "three";
|
|
2
|
+
export declare function findById(id: string): Object3D | null;
|
|
3
|
+
/**
|
|
4
|
+
* Find a Three.js object in the live scene by its Three.js name (object.name).
|
|
5
|
+
* Uses the native Three.js getObjectByName for efficiency.
|
|
6
|
+
* Returns null if the scene is not yet initialised or the object is not found.
|
|
7
|
+
*/
|
|
8
|
+
export declare function findByName(name: string): Object3D | null;
|
|
9
|
+
//# sourceMappingURL=sceneQuery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sceneQuery.d.ts","sourceRoot":"","sources":["../../src/utils/sceneQuery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEtC,wBAAgB,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAUpD;AACD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAIxD"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import SceneStore from '../services/SceneStore.js';
|
|
2
|
+
export function findById(id) {
|
|
3
|
+
if (!id || !SceneStore.scene)
|
|
4
|
+
return null;
|
|
5
|
+
let found = null;
|
|
6
|
+
SceneStore.scene.traverse((obj) => {
|
|
7
|
+
if (!found && obj.userData.id === id) {
|
|
8
|
+
found = obj;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
return found;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Find a Three.js object in the live scene by its Three.js name (object.name).
|
|
15
|
+
* Uses the native Three.js getObjectByName for efficiency.
|
|
16
|
+
* Returns null if the scene is not yet initialised or the object is not found.
|
|
17
|
+
*/
|
|
18
|
+
export function findByName(name) {
|
|
19
|
+
if (!SceneStore.scene)
|
|
20
|
+
return null;
|
|
21
|
+
return SceneStore.scene.getObjectByName(name) ?? null;
|
|
22
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ShootingStarsSettings } from "../types/environment";
|
|
2
|
+
export interface ShootingStarData {
|
|
3
|
+
id: number;
|
|
4
|
+
position: [number, number, number];
|
|
5
|
+
direction: [number, number, number];
|
|
6
|
+
speed: number;
|
|
7
|
+
color: string;
|
|
8
|
+
trailLength: number;
|
|
9
|
+
length: number;
|
|
10
|
+
}
|
|
11
|
+
export declare const generateShootingStar: (id: number, settings: ShootingStarsSettings) => ShootingStarData;
|
|
12
|
+
export declare const generateShootingStars: (count: number, settings: ShootingStarsSettings) => ShootingStarData[];
|
|
13
|
+
//# sourceMappingURL=shootingStarHelpers.d.ts.map
|