@ntalmagor/3drize-viewer 0.1.2
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 +121 -0
- package/dist/components/CameraController.d.ts +16 -0
- package/dist/components/CameraController.d.ts.map +1 -0
- package/dist/components/CameraController.js +132 -0
- package/dist/components/Clouds.d.ts +14 -0
- package/dist/components/Clouds.d.ts.map +1 -0
- package/dist/components/Clouds.js +97 -0
- package/dist/components/CreatedObject.d.ts +12 -0
- package/dist/components/CreatedObject.d.ts.map +1 -0
- package/dist/components/CreatedObject.js +139 -0
- package/dist/components/CustomPrimitive.d.ts +12 -0
- package/dist/components/CustomPrimitive.d.ts.map +1 -0
- package/dist/components/CustomPrimitive.js +80 -0
- package/dist/components/EffectsGenerator.d.ts +10 -0
- package/dist/components/EffectsGenerator.d.ts.map +1 -0
- package/dist/components/EffectsGenerator.js +59 -0
- package/dist/components/EffectsGroup.d.ts +8 -0
- package/dist/components/EffectsGroup.d.ts.map +1 -0
- package/dist/components/EffectsGroup.js +8 -0
- package/dist/components/EnvironmentManager.d.ts +9 -0
- package/dist/components/EnvironmentManager.d.ts.map +1 -0
- package/dist/components/EnvironmentManager.js +47 -0
- package/dist/components/Frame.d.ts +26 -0
- package/dist/components/Frame.d.ts.map +1 -0
- package/dist/components/Frame.js +50 -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 +14 -0
- package/dist/components/FrameImage.d.ts.map +1 -0
- package/dist/components/FrameImage.js +15 -0
- package/dist/components/Galaxy.d.ts +8 -0
- package/dist/components/Galaxy.d.ts.map +1 -0
- package/dist/components/Galaxy.js +9 -0
- package/dist/components/GalleryLayout.d.ts +10 -0
- package/dist/components/GalleryLayout.d.ts.map +1 -0
- package/dist/components/GalleryLayout.js +18 -0
- package/dist/components/GridHelper.d.ts +23 -0
- package/dist/components/GridHelper.d.ts.map +1 -0
- package/dist/components/GridHelper.js +38 -0
- package/dist/components/ImageGeometry.d.ts +14 -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 +20 -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/LightsManager.d.ts +9 -0
- package/dist/components/LightsManager.d.ts.map +1 -0
- package/dist/components/LightsManager.js +121 -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 +143 -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 +52 -0
- package/dist/components/ObjectNode.d.ts +11 -0
- package/dist/components/ObjectNode.d.ts.map +1 -0
- package/dist/components/ObjectNode.js +61 -0
- package/dist/components/ObjectsRenderer.d.ts +11 -0
- package/dist/components/ObjectsRenderer.d.ts.map +1 -0
- package/dist/components/ObjectsRenderer.js +19 -0
- package/dist/components/Ocean.d.ts +8 -0
- package/dist/components/Ocean.d.ts.map +1 -0
- package/dist/components/Ocean.js +111 -0
- package/dist/components/ParticlesR3f.d.ts +16 -0
- package/dist/components/ParticlesR3f.d.ts.map +1 -0
- package/dist/components/ParticlesR3f.js +66 -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 +14 -0
- package/dist/components/PathRenderer.d.ts.map +1 -0
- package/dist/components/PathRenderer.js +33 -0
- package/dist/components/ProductionScene.d.ts +29 -0
- package/dist/components/ProductionScene.d.ts.map +1 -0
- package/dist/components/ProductionScene.js +18 -0
- package/dist/components/ProjectLoader.d.ts +14 -0
- package/dist/components/ProjectLoader.d.ts.map +1 -0
- package/dist/components/ProjectLoader.js +76 -0
- package/dist/components/Rain.d.ts +8 -0
- package/dist/components/Rain.d.ts.map +1 -0
- package/dist/components/Rain.js +133 -0
- package/dist/components/SceneBuilder.d.ts +5 -0
- package/dist/components/SceneBuilder.d.ts.map +1 -0
- package/dist/components/SceneBuilder.js +104 -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/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 +40 -0
- package/dist/components/SkyController.d.ts +10 -0
- package/dist/components/SkyController.d.ts.map +1 -0
- package/dist/components/SkyController.js +159 -0
- package/dist/components/SkyMesh.d.ts +11 -0
- package/dist/components/SkyMesh.d.ts.map +1 -0
- package/dist/components/SkyMesh.js +36 -0
- package/dist/components/SkySystem.d.ts +34 -0
- package/dist/components/SkySystem.d.ts.map +1 -0
- package/dist/components/SkySystem.js +47 -0
- package/dist/components/Skybox.d.ts +12 -0
- package/dist/components/Skybox.d.ts.map +1 -0
- package/dist/components/Skybox.js +79 -0
- package/dist/components/Stars.d.ts +14 -0
- package/dist/components/Stars.d.ts.map +1 -0
- package/dist/components/Stars.js +165 -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/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/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 +179 -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 +159 -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/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/constants.d.ts +2 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +1 -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/useAnimationEvents.d.ts +10 -0
- package/dist/hooks/useAnimationEvents.d.ts.map +1 -0
- package/dist/hooks/useAnimationEvents.js +28 -0
- package/dist/hooks/useCameraAnimation.d.ts +35 -0
- package/dist/hooks/useCameraAnimation.d.ts.map +1 -0
- package/dist/hooks/useCameraAnimation.js +268 -0
- package/dist/hooks/useContinuousEffects.d.ts +15 -0
- package/dist/hooks/useContinuousEffects.d.ts.map +1 -0
- package/dist/hooks/useContinuousEffects.js +173 -0
- package/dist/hooks/useCubeCamera.d.ts +19 -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/useFrameEffects.d.ts +6 -0
- package/dist/hooks/useFrameEffects.d.ts.map +1 -0
- package/dist/hooks/useFrameEffects.js +19 -0
- package/dist/hooks/useInteractionEffects.d.ts +11 -0
- package/dist/hooks/useInteractionEffects.d.ts.map +1 -0
- package/dist/hooks/useInteractionEffects.js +35 -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/useLightHandlers.d.ts +14 -0
- package/dist/hooks/useLightHandlers.d.ts.map +1 -0
- package/dist/hooks/useLightHandlers.js +116 -0
- package/dist/hooks/useMaterialApplication.d.ts +9 -0
- package/dist/hooks/useMaterialApplication.d.ts.map +1 -0
- package/dist/hooks/useMaterialApplication.js +113 -0
- package/dist/hooks/useMaterialOptions.d.ts +13 -0
- package/dist/hooks/useMaterialOptions.d.ts.map +1 -0
- package/dist/hooks/useMaterialOptions.js +110 -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 +152 -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/useObjectAnimation.d.ts +13 -0
- package/dist/hooks/useObjectAnimation.d.ts.map +1 -0
- package/dist/hooks/useObjectAnimation.js +11 -0
- package/dist/hooks/useObjectEdges.d.ts +4 -0
- package/dist/hooks/useObjectEdges.d.ts.map +1 -0
- package/dist/hooks/useObjectEdges.js +199 -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/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 +120 -0
- package/dist/hooks/useSkyAnimation.d.ts +14 -0
- package/dist/hooks/useSkyAnimation.d.ts.map +1 -0
- package/dist/hooks/useSkyAnimation.js +46 -0
- package/dist/hooks/useSkySystem.d.ts +26 -0
- package/dist/hooks/useSkySystem.d.ts.map +1 -0
- package/dist/hooks/useSkySystem.js +57 -0
- package/dist/hooks/useSkyUniforms.d.ts +18 -0
- package/dist/hooks/useSkyUniforms.d.ts.map +1 -0
- package/dist/hooks/useSkyUniforms.js +59 -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/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 +17 -0
- package/dist/hooks/useWaterReflections.d.ts.map +1 -0
- package/dist/hooks/useWaterReflections.js +77 -0
- package/dist/index.d.ts +140 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +109 -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 +279 -0
- package/dist/shaders/ShaderEffectsMaterial.d.ts.map +1 -0
- package/dist/shaders/ShaderEffectsMaterial.js +257 -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 +167 -0
- package/dist/utils/CameraSingleton.d.ts +35 -0
- package/dist/utils/CameraSingleton.d.ts.map +1 -0
- package/dist/utils/CameraSingleton.js +178 -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/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/particleAnimations.d.ts +3 -0
- package/dist/utils/particleAnimations.d.ts.map +1 -0
- package/dist/utils/particleAnimations.js +17 -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 +145 -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 +43 -0
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const effectsVertexGLSL = "\n // ============================================================================\n // UNIFORMS - All effect uniforms\n // ============================================================================\n uniform float u_time;\n uniform vec2 u_pointer;\n uniform float uPointerEffectRadius;\n \n // General vortex effects\n uniform bool uGeneralWaveEnabled;\n uniform float uGeneralWaveIntensity;\n uniform float uGeneralWaveFrequency;\n uniform float uGeneralWaveSpeed;\n uniform float uGeneralWaveDirection;\n uniform bool uGeneralVortexEnabled;\n uniform float uGeneralVortexIntensity;\n uniform float uGeneralVortexSpeed;\n uniform float uGeneralVortexCenterX;\n uniform float uGeneralVortexCenterY;\n uniform bool uGeneralRippleEnabled;\n uniform float uGeneralRippleIntensity;\n uniform float uGeneralRippleSpeed;\n uniform float uGeneralRippleFrequency;\n uniform float uGeneralRippleCenterX;\n uniform float uGeneralRippleCenterY;\n \n // Pointer vortex effects\n uniform bool uRippleEnabled;\n uniform float uRippleIntensity;\n uniform float uRippleSpeed;\n uniform bool uDisplacementEnabled;\n uniform float uDisplacementIntensity;\n uniform bool uVortexEnabled;\n uniform float uVortexIntensity;\n uniform float uVortexSpeed;\n uniform bool uWaveEnabled;\n uniform float uWaveIntensity;\n uniform float uWaveFrequency;\n \n // ============================================================================\n // HELPER FUNCTIONS\n // ============================================================================\n \n // Calculate smooth falloff from pointer position\n float getPointerFalloff(vec3 position, vec2 pointer) {\n float dist = distance(position.xy, pointer);\n return smoothstep(uPointerEffectRadius, 0.0, dist);\n }\n \n // ============================================================================\n // GENERAL EFFECTS (Always active when enabled)\n // ============================================================================\n \n vec3 applyGeneralWave(vec3 pos) {\n float waveInput = 0.0;\n if (uGeneralWaveDirection < 0.5) {\n // Horizontal\n waveInput = pos.x;\n } else if (uGeneralWaveDirection < 1.5) {\n // Vertical\n waveInput = pos.y;\n } else {\n // Diagonal\n waveInput = pos.x + pos.y;\n }\n pos.z += sin(waveInput * uGeneralWaveFrequency + u_time * uGeneralWaveSpeed) * uGeneralWaveIntensity;\n return pos;\n }\n \n vec3 applyGeneralVortex(vec3 pos) {\n vec2 center = vec2(uGeneralVortexCenterX, uGeneralVortexCenterY);\n vec2 toCenter = pos.xy - center;\n float angle = uGeneralVortexIntensity * u_time * uGeneralVortexSpeed;\n mat2 rotation = mat2(cos(angle), -sin(angle), sin(angle), cos(angle));\n pos.xy = center + rotation * toCenter;\n return pos;\n }\n \n vec3 applyGeneralRipple(vec3 pos) {\n vec2 center = vec2(uGeneralRippleCenterX, uGeneralRippleCenterY);\n float rippleDist = distance(pos.xy, center);\n float rippleWave = sin(rippleDist * uGeneralRippleFrequency - u_time * uGeneralRippleSpeed) * uGeneralRippleIntensity;\n pos.z += rippleWave;\n return pos;\n }\n \n // ============================================================================\n // POINTER EFFECTS (Interactive, based on pointer position)\n // ============================================================================\n \n vec3 applyPointerRipple(vec3 pos, vec2 pointer) {\n float falloff = getPointerFalloff(pos, pointer);\n if (falloff > 0.0) {\n float dist = distance(pos.xy, pointer);\n float wave = sin(dist * 5.0 - u_time * uRippleSpeed) * uRippleIntensity;\n pos.z += wave * falloff * 0.5;\n }\n return pos;\n }\n \n vec3 applyPointerDisplacement(vec3 pos, vec2 pointer) {\n float falloff = getPointerFalloff(pos, pointer);\n if (falloff > 0.0) {\n vec2 dir = normalize(pos.xy - pointer);\n pos.xy += dir * uDisplacementIntensity * falloff * 2.0;\n }\n return pos;\n }\n \n vec3 applyPointerVortex(vec3 pos, vec2 pointer) {\n float falloff = getPointerFalloff(pos, pointer);\n if (falloff > 0.0) {\n vec2 toPointer = pos.xy - pointer;\n float angle = uVortexIntensity * falloff * u_time * uVortexSpeed;\n mat2 rotation = mat2(cos(angle), -sin(angle), sin(angle), cos(angle));\n pos.xy = pointer + rotation * toPointer;\n }\n return pos;\n }\n \n vec3 applyPointerWave(vec3 pos, vec2 pointer) {\n float falloff = getPointerFalloff(pos, pointer);\n if (falloff > 0.0) {\n pos.z += sin(pos.x * uWaveFrequency + u_time) * uWaveIntensity * falloff * 0.5;\n }\n return pos;\n }\n \n // ============================================================================\n // APPLY ALL VERTEX EFFECTS\n // ============================================================================\n \n vec3 applyAllVertexEffects(vec3 pos, vec2 pointer) {\n // Apply general effects first (global, always active)\n if (uGeneralWaveEnabled) {\n pos = applyGeneralWave(pos);\n }\n \n if (uGeneralVortexEnabled) {\n pos = applyGeneralVortex(pos);\n }\n \n if (uGeneralRippleEnabled) {\n pos = applyGeneralRipple(pos);\n }\n \n // Apply pointer effects (interactive)\n if (uRippleEnabled) {\n pos = applyPointerRipple(pos, pointer);\n }\n \n if (uDisplacementEnabled) {\n pos = applyPointerDisplacement(pos, pointer);\n }\n \n if (uVortexEnabled) {\n pos = applyPointerVortex(pos, pointer);\n }\n \n if (uWaveEnabled) {\n pos = applyPointerWave(pos, pointer);\n }\n \n return pos;\n }\n";
|
|
2
|
+
//# sourceMappingURL=EffectsVertexFunctions.glsl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EffectsVertexFunctions.glsl.d.ts","sourceRoot":"","sources":["../../../src/shaders/effects/EffectsVertexFunctions.glsl.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,iBAAiB,kiLAqK7B,CAAC"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
// Shared vortex shader functions for all shader effects
|
|
2
|
+
export const effectsVertexGLSL = /*glsl*/ `
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// UNIFORMS - All effect uniforms
|
|
5
|
+
// ============================================================================
|
|
6
|
+
uniform float u_time;
|
|
7
|
+
uniform vec2 u_pointer;
|
|
8
|
+
uniform float uPointerEffectRadius;
|
|
9
|
+
|
|
10
|
+
// General vortex effects
|
|
11
|
+
uniform bool uGeneralWaveEnabled;
|
|
12
|
+
uniform float uGeneralWaveIntensity;
|
|
13
|
+
uniform float uGeneralWaveFrequency;
|
|
14
|
+
uniform float uGeneralWaveSpeed;
|
|
15
|
+
uniform float uGeneralWaveDirection;
|
|
16
|
+
uniform bool uGeneralVortexEnabled;
|
|
17
|
+
uniform float uGeneralVortexIntensity;
|
|
18
|
+
uniform float uGeneralVortexSpeed;
|
|
19
|
+
uniform float uGeneralVortexCenterX;
|
|
20
|
+
uniform float uGeneralVortexCenterY;
|
|
21
|
+
uniform bool uGeneralRippleEnabled;
|
|
22
|
+
uniform float uGeneralRippleIntensity;
|
|
23
|
+
uniform float uGeneralRippleSpeed;
|
|
24
|
+
uniform float uGeneralRippleFrequency;
|
|
25
|
+
uniform float uGeneralRippleCenterX;
|
|
26
|
+
uniform float uGeneralRippleCenterY;
|
|
27
|
+
|
|
28
|
+
// Pointer vortex effects
|
|
29
|
+
uniform bool uRippleEnabled;
|
|
30
|
+
uniform float uRippleIntensity;
|
|
31
|
+
uniform float uRippleSpeed;
|
|
32
|
+
uniform bool uDisplacementEnabled;
|
|
33
|
+
uniform float uDisplacementIntensity;
|
|
34
|
+
uniform bool uVortexEnabled;
|
|
35
|
+
uniform float uVortexIntensity;
|
|
36
|
+
uniform float uVortexSpeed;
|
|
37
|
+
uniform bool uWaveEnabled;
|
|
38
|
+
uniform float uWaveIntensity;
|
|
39
|
+
uniform float uWaveFrequency;
|
|
40
|
+
|
|
41
|
+
// ============================================================================
|
|
42
|
+
// HELPER FUNCTIONS
|
|
43
|
+
// ============================================================================
|
|
44
|
+
|
|
45
|
+
// Calculate smooth falloff from pointer position
|
|
46
|
+
float getPointerFalloff(vec3 position, vec2 pointer) {
|
|
47
|
+
float dist = distance(position.xy, pointer);
|
|
48
|
+
return smoothstep(uPointerEffectRadius, 0.0, dist);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// ============================================================================
|
|
52
|
+
// GENERAL EFFECTS (Always active when enabled)
|
|
53
|
+
// ============================================================================
|
|
54
|
+
|
|
55
|
+
vec3 applyGeneralWave(vec3 pos) {
|
|
56
|
+
float waveInput = 0.0;
|
|
57
|
+
if (uGeneralWaveDirection < 0.5) {
|
|
58
|
+
// Horizontal
|
|
59
|
+
waveInput = pos.x;
|
|
60
|
+
} else if (uGeneralWaveDirection < 1.5) {
|
|
61
|
+
// Vertical
|
|
62
|
+
waveInput = pos.y;
|
|
63
|
+
} else {
|
|
64
|
+
// Diagonal
|
|
65
|
+
waveInput = pos.x + pos.y;
|
|
66
|
+
}
|
|
67
|
+
pos.z += sin(waveInput * uGeneralWaveFrequency + u_time * uGeneralWaveSpeed) * uGeneralWaveIntensity;
|
|
68
|
+
return pos;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
vec3 applyGeneralVortex(vec3 pos) {
|
|
72
|
+
vec2 center = vec2(uGeneralVortexCenterX, uGeneralVortexCenterY);
|
|
73
|
+
vec2 toCenter = pos.xy - center;
|
|
74
|
+
float angle = uGeneralVortexIntensity * u_time * uGeneralVortexSpeed;
|
|
75
|
+
mat2 rotation = mat2(cos(angle), -sin(angle), sin(angle), cos(angle));
|
|
76
|
+
pos.xy = center + rotation * toCenter;
|
|
77
|
+
return pos;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
vec3 applyGeneralRipple(vec3 pos) {
|
|
81
|
+
vec2 center = vec2(uGeneralRippleCenterX, uGeneralRippleCenterY);
|
|
82
|
+
float rippleDist = distance(pos.xy, center);
|
|
83
|
+
float rippleWave = sin(rippleDist * uGeneralRippleFrequency - u_time * uGeneralRippleSpeed) * uGeneralRippleIntensity;
|
|
84
|
+
pos.z += rippleWave;
|
|
85
|
+
return pos;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// ============================================================================
|
|
89
|
+
// POINTER EFFECTS (Interactive, based on pointer position)
|
|
90
|
+
// ============================================================================
|
|
91
|
+
|
|
92
|
+
vec3 applyPointerRipple(vec3 pos, vec2 pointer) {
|
|
93
|
+
float falloff = getPointerFalloff(pos, pointer);
|
|
94
|
+
if (falloff > 0.0) {
|
|
95
|
+
float dist = distance(pos.xy, pointer);
|
|
96
|
+
float wave = sin(dist * 5.0 - u_time * uRippleSpeed) * uRippleIntensity;
|
|
97
|
+
pos.z += wave * falloff * 0.5;
|
|
98
|
+
}
|
|
99
|
+
return pos;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
vec3 applyPointerDisplacement(vec3 pos, vec2 pointer) {
|
|
103
|
+
float falloff = getPointerFalloff(pos, pointer);
|
|
104
|
+
if (falloff > 0.0) {
|
|
105
|
+
vec2 dir = normalize(pos.xy - pointer);
|
|
106
|
+
pos.xy += dir * uDisplacementIntensity * falloff * 2.0;
|
|
107
|
+
}
|
|
108
|
+
return pos;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
vec3 applyPointerVortex(vec3 pos, vec2 pointer) {
|
|
112
|
+
float falloff = getPointerFalloff(pos, pointer);
|
|
113
|
+
if (falloff > 0.0) {
|
|
114
|
+
vec2 toPointer = pos.xy - pointer;
|
|
115
|
+
float angle = uVortexIntensity * falloff * u_time * uVortexSpeed;
|
|
116
|
+
mat2 rotation = mat2(cos(angle), -sin(angle), sin(angle), cos(angle));
|
|
117
|
+
pos.xy = pointer + rotation * toPointer;
|
|
118
|
+
}
|
|
119
|
+
return pos;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
vec3 applyPointerWave(vec3 pos, vec2 pointer) {
|
|
123
|
+
float falloff = getPointerFalloff(pos, pointer);
|
|
124
|
+
if (falloff > 0.0) {
|
|
125
|
+
pos.z += sin(pos.x * uWaveFrequency + u_time) * uWaveIntensity * falloff * 0.5;
|
|
126
|
+
}
|
|
127
|
+
return pos;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// ============================================================================
|
|
131
|
+
// APPLY ALL VERTEX EFFECTS
|
|
132
|
+
// ============================================================================
|
|
133
|
+
|
|
134
|
+
vec3 applyAllVertexEffects(vec3 pos, vec2 pointer) {
|
|
135
|
+
// Apply general effects first (global, always active)
|
|
136
|
+
if (uGeneralWaveEnabled) {
|
|
137
|
+
pos = applyGeneralWave(pos);
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (uGeneralVortexEnabled) {
|
|
141
|
+
pos = applyGeneralVortex(pos);
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
if (uGeneralRippleEnabled) {
|
|
145
|
+
pos = applyGeneralRipple(pos);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// Apply pointer effects (interactive)
|
|
149
|
+
if (uRippleEnabled) {
|
|
150
|
+
pos = applyPointerRipple(pos, pointer);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
if (uDisplacementEnabled) {
|
|
154
|
+
pos = applyPointerDisplacement(pos, pointer);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
if (uVortexEnabled) {
|
|
158
|
+
pos = applyPointerVortex(pos, pointer);
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
if (uWaveEnabled) {
|
|
162
|
+
pos = applyPointerWave(pos, pointer);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
return pos;
|
|
166
|
+
}
|
|
167
|
+
`;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { PerspectiveCamera, Camera, Vector3, Euler } from 'three';
|
|
2
|
+
import type { Vector3Array, AnchorPosition, AnchorOffset } from '@ntalmagor/3drize-core';
|
|
3
|
+
declare class CameraSingleton {
|
|
4
|
+
private static instance;
|
|
5
|
+
private camera;
|
|
6
|
+
private callbacks;
|
|
7
|
+
private cameraMoveCallbacks;
|
|
8
|
+
private lastPosition;
|
|
9
|
+
private lastRotation;
|
|
10
|
+
private constructor();
|
|
11
|
+
static getInstance(): CameraSingleton;
|
|
12
|
+
animateCameraPosition(position: Vector3Array): Promise<void>;
|
|
13
|
+
setCamera(camera: PerspectiveCamera): void;
|
|
14
|
+
getCamera(): PerspectiveCamera | null;
|
|
15
|
+
getPosition(): Vector3;
|
|
16
|
+
getRotation(): Euler;
|
|
17
|
+
isSynced(position: Vector3Array, orientation: Vector3Array | [number, number, number, number]): boolean;
|
|
18
|
+
getWorldDirection(): Vector3;
|
|
19
|
+
getFOV(): number;
|
|
20
|
+
subscribe(callback: () => void): () => void;
|
|
21
|
+
private notifyCallbacks;
|
|
22
|
+
isAvailable(): boolean;
|
|
23
|
+
getDistanceToTarget(target: Vector3): number;
|
|
24
|
+
lookAt(target: Vector3): void;
|
|
25
|
+
calculateVisibleSize(targetDepth: number, cam?: Camera): {
|
|
26
|
+
width: number;
|
|
27
|
+
height: number;
|
|
28
|
+
};
|
|
29
|
+
getAnchorPosition(anchor: AnchorPosition, targetDepth?: number, offset?: AnchorOffset, padding?: number): Vector3;
|
|
30
|
+
onCameraMove(callback: (position: Vector3, rotation: Euler) => void): () => void;
|
|
31
|
+
checkCameraMovement(epsilon?: number): boolean;
|
|
32
|
+
}
|
|
33
|
+
export declare const cameraManager: CameraSingleton;
|
|
34
|
+
export default cameraManager;
|
|
35
|
+
//# sourceMappingURL=CameraSingleton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CameraSingleton.d.ts","sourceRoot":"","sources":["../../src/utils/CameraSingleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAsB,MAAM,EAAE,OAAO,EAAE,KAAK,EAAc,MAAM,OAAO,CAAC;AAClG,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEzF,cAAM,eAAe;IACnB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAkB;IACzC,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,SAAS,CAA8B;IAC/C,OAAO,CAAC,mBAAmB,CAAgE;IAC3F,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,YAAY,CAAsB;IAE1C,OAAO;WAEO,WAAW,IAAI,eAAe;IAOrC,qBAAqB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAmB5D,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAO1C,SAAS,IAAI,iBAAiB,GAAG,IAAI;IACrC,WAAW,IAAI,OAAO;IACtB,WAAW,IAAI,KAAK;IAEpB,QAAQ,CAAC,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO;IAyBvG,iBAAiB,IAAI,OAAO;IAK5B,MAAM,IAAI,MAAM;IAEhB,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAKlD,OAAO,CAAC,eAAe;IAIhB,WAAW,IAAI,OAAO;IAEtB,mBAAmB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM;IAI5C,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI;IAI7B,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAc1F,iBAAiB,CACtB,MAAM,EAAE,cAAc,EACtB,WAAW,GAAE,MAAU,EACvB,MAAM,CAAC,EAAE,YAAY,EACrB,OAAO,GAAE,MAAU,GAClB,OAAO;IA0BH,YAAY,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,KAAK,IAAI,GAAG,MAAM,IAAI;IAKhF,mBAAmB,CAAC,OAAO,GAAE,MAAc,GAAG,OAAO;CAkB7D;AAED,eAAO,MAAM,aAAa,iBAAgC,CAAC;AAC3D,eAAe,aAAa,CAAC"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { PerspectiveCamera, OrthographicCamera, Vector3, Euler, Quaternion } from 'three';
|
|
2
|
+
class CameraSingleton {
|
|
3
|
+
static instance;
|
|
4
|
+
camera = null;
|
|
5
|
+
callbacks = new Set();
|
|
6
|
+
cameraMoveCallbacks = new Set();
|
|
7
|
+
lastPosition = new Vector3();
|
|
8
|
+
lastRotation = new Euler();
|
|
9
|
+
constructor() { }
|
|
10
|
+
static getInstance() {
|
|
11
|
+
if (!CameraSingleton.instance) {
|
|
12
|
+
CameraSingleton.instance = new CameraSingleton();
|
|
13
|
+
}
|
|
14
|
+
return CameraSingleton.instance;
|
|
15
|
+
}
|
|
16
|
+
animateCameraPosition(position) {
|
|
17
|
+
return new Promise((resolve) => {
|
|
18
|
+
if (!this.camera) {
|
|
19
|
+
resolve();
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const targetPosition = new Vector3(...position);
|
|
23
|
+
const duration = 1;
|
|
24
|
+
const startPosition = this.camera.position.clone();
|
|
25
|
+
const startTime = performance.now();
|
|
26
|
+
const animate = () => {
|
|
27
|
+
const elapsed = (performance.now() - startTime) / 1000;
|
|
28
|
+
const t = Math.min(elapsed / duration, 1);
|
|
29
|
+
this.camera.position.lerpVectors(startPosition, targetPosition, t);
|
|
30
|
+
this.notifyCallbacks();
|
|
31
|
+
if (t < 1)
|
|
32
|
+
requestAnimationFrame(animate);
|
|
33
|
+
else
|
|
34
|
+
resolve();
|
|
35
|
+
};
|
|
36
|
+
animate();
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
setCamera(camera) {
|
|
40
|
+
this.camera = camera;
|
|
41
|
+
this.lastPosition.copy(camera.position);
|
|
42
|
+
this.lastRotation.copy(camera.rotation);
|
|
43
|
+
this.notifyCallbacks();
|
|
44
|
+
}
|
|
45
|
+
getCamera() { return this.camera; }
|
|
46
|
+
getPosition() { return this.camera ? this.camera.position.clone() : new Vector3(); }
|
|
47
|
+
getRotation() { return this.camera ? this.camera.rotation.clone() : new Euler(); }
|
|
48
|
+
isSynced(position, orientation) {
|
|
49
|
+
if (!this.camera)
|
|
50
|
+
return true;
|
|
51
|
+
const camPos = this.camera.position;
|
|
52
|
+
const camRot = this.camera.rotation;
|
|
53
|
+
const posMatch = Math.abs(position[0] - camPos.x) < 0.001 &&
|
|
54
|
+
Math.abs(position[1] - camPos.y) < 0.001 &&
|
|
55
|
+
Math.abs(position[2] - camPos.z) < 0.001;
|
|
56
|
+
let rotMatch = false;
|
|
57
|
+
if (orientation.length === 3) {
|
|
58
|
+
rotMatch =
|
|
59
|
+
Math.abs(orientation[0] - camRot.x) < 0.001 &&
|
|
60
|
+
Math.abs(orientation[1] - camRot.y) < 0.001 &&
|
|
61
|
+
Math.abs(orientation[2] - camRot.z) < 0.001;
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
const camQuat = new Quaternion().setFromEuler(camRot);
|
|
65
|
+
rotMatch =
|
|
66
|
+
Math.abs(orientation[0] - camQuat.x) < 0.001 &&
|
|
67
|
+
Math.abs(orientation[1] - camQuat.y) < 0.001 &&
|
|
68
|
+
Math.abs(orientation[2] - camQuat.z) < 0.001 &&
|
|
69
|
+
Math.abs(orientation[3] - camQuat.w) < 0.001;
|
|
70
|
+
}
|
|
71
|
+
return posMatch && rotMatch;
|
|
72
|
+
}
|
|
73
|
+
getWorldDirection() {
|
|
74
|
+
const direction = new Vector3();
|
|
75
|
+
return this.camera ? this.camera.getWorldDirection(direction) : direction;
|
|
76
|
+
}
|
|
77
|
+
getFOV() { return this.camera ? this.camera.fov : 75; }
|
|
78
|
+
subscribe(callback) {
|
|
79
|
+
this.callbacks.add(callback);
|
|
80
|
+
return () => this.callbacks.delete(callback);
|
|
81
|
+
}
|
|
82
|
+
notifyCallbacks() {
|
|
83
|
+
this.callbacks.forEach((cb) => cb());
|
|
84
|
+
}
|
|
85
|
+
isAvailable() { return this.camera !== null; }
|
|
86
|
+
getDistanceToTarget(target) {
|
|
87
|
+
return this.camera ? this.camera.position.distanceTo(target) : 0;
|
|
88
|
+
}
|
|
89
|
+
lookAt(target) {
|
|
90
|
+
if (this.camera) {
|
|
91
|
+
this.camera.lookAt(target);
|
|
92
|
+
this.notifyCallbacks();
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
calculateVisibleSize(targetDepth, cam) {
|
|
96
|
+
const camera = cam || this.camera;
|
|
97
|
+
if (!camera)
|
|
98
|
+
return { width: 0, height: 0 };
|
|
99
|
+
if (camera instanceof PerspectiveCamera) {
|
|
100
|
+
const distance = Math.abs(targetDepth - camera.position.z);
|
|
101
|
+
const vFov = (camera.fov * Math.PI) / 180;
|
|
102
|
+
const height = 2 * Math.tan(vFov / 2) * distance;
|
|
103
|
+
return { width: height * camera.aspect, height };
|
|
104
|
+
}
|
|
105
|
+
else if (camera instanceof OrthographicCamera) {
|
|
106
|
+
return { width: Math.abs(camera.right - camera.left), height: Math.abs(camera.top - camera.bottom) };
|
|
107
|
+
}
|
|
108
|
+
return { width: 0, height: 0 };
|
|
109
|
+
}
|
|
110
|
+
getAnchorPosition(anchor, targetDepth = 0, offset, padding = 0) {
|
|
111
|
+
if (!this.camera)
|
|
112
|
+
return new Vector3();
|
|
113
|
+
const { width, height } = this.calculateVisibleSize(targetDepth);
|
|
114
|
+
const halfWidth = width / 2;
|
|
115
|
+
const halfHeight = height / 2;
|
|
116
|
+
let localX = 0;
|
|
117
|
+
let localY = 0;
|
|
118
|
+
switch (anchor) {
|
|
119
|
+
case 'top-left':
|
|
120
|
+
case 'center-left':
|
|
121
|
+
case 'bottom-left':
|
|
122
|
+
localX = -halfWidth + padding;
|
|
123
|
+
break;
|
|
124
|
+
case 'top-right':
|
|
125
|
+
case 'center-right':
|
|
126
|
+
case 'bottom-right':
|
|
127
|
+
localX = halfWidth - padding;
|
|
128
|
+
break;
|
|
129
|
+
}
|
|
130
|
+
switch (anchor) {
|
|
131
|
+
case 'top-left':
|
|
132
|
+
case 'top-center':
|
|
133
|
+
case 'top-right':
|
|
134
|
+
localY = halfHeight - padding;
|
|
135
|
+
break;
|
|
136
|
+
case 'bottom-left':
|
|
137
|
+
case 'bottom-center':
|
|
138
|
+
case 'bottom-right':
|
|
139
|
+
localY = -halfHeight + padding;
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
const localZ = -(Math.abs(targetDepth - this.camera.position.z));
|
|
143
|
+
const localPosition = new Vector3(localX, localY, localZ);
|
|
144
|
+
if (offset) {
|
|
145
|
+
if (offset.x !== undefined)
|
|
146
|
+
localPosition.x += offset.x;
|
|
147
|
+
if (offset.y !== undefined)
|
|
148
|
+
localPosition.y += offset.y;
|
|
149
|
+
if (offset.z !== undefined)
|
|
150
|
+
localPosition.z += offset.z;
|
|
151
|
+
}
|
|
152
|
+
this.camera.updateMatrixWorld();
|
|
153
|
+
return localPosition.applyMatrix4(this.camera.matrixWorld);
|
|
154
|
+
}
|
|
155
|
+
onCameraMove(callback) {
|
|
156
|
+
this.cameraMoveCallbacks.add(callback);
|
|
157
|
+
return () => this.cameraMoveCallbacks.delete(callback);
|
|
158
|
+
}
|
|
159
|
+
checkCameraMovement(epsilon = 0.001) {
|
|
160
|
+
if (!this.camera)
|
|
161
|
+
return false;
|
|
162
|
+
const positionChanged = Math.abs(this.lastPosition.x - this.camera.position.x) > epsilon ||
|
|
163
|
+
Math.abs(this.lastPosition.y - this.camera.position.y) > epsilon ||
|
|
164
|
+
Math.abs(this.lastPosition.z - this.camera.position.z) > epsilon;
|
|
165
|
+
const rotationChanged = Math.abs(this.lastRotation.x - this.camera.rotation.x) > epsilon ||
|
|
166
|
+
Math.abs(this.lastRotation.y - this.camera.rotation.y) > epsilon ||
|
|
167
|
+
Math.abs(this.lastRotation.z - this.camera.rotation.z) > epsilon;
|
|
168
|
+
if (positionChanged || rotationChanged) {
|
|
169
|
+
this.lastPosition.copy(this.camera.position);
|
|
170
|
+
this.lastRotation.copy(this.camera.rotation);
|
|
171
|
+
this.cameraMoveCallbacks.forEach((cb) => cb(this.camera.position.clone(), this.camera.rotation.clone()));
|
|
172
|
+
return true;
|
|
173
|
+
}
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
export const cameraManager = CameraSingleton.getInstance();
|
|
178
|
+
export default cameraManager;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AnchorSettings, Vector3Array } from '@ntalmagor/3drize-core';
|
|
2
|
+
export declare const applyAnchorSettings: (anchor: AnchorSettings | null | undefined, object: {
|
|
3
|
+
position: {
|
|
4
|
+
set: (x: number, y: number, z: number) => void;
|
|
5
|
+
};
|
|
6
|
+
rotation: {
|
|
7
|
+
set: (x: number, y: number, z: number) => void;
|
|
8
|
+
};
|
|
9
|
+
}, initialRotation?: Vector3Array) => void;
|
|
10
|
+
//# sourceMappingURL=anchorUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anchorUtils.d.ts","sourceRoot":"","sources":["../../src/utils/anchorUtils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3E,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,cAAc,GAAG,IAAI,GAAG,SAAS,EACzC,QAAQ;IAAE,QAAQ,EAAE;QAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAC;IAAC,QAAQ,EAAE;QAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAA;CAAE,EACtI,kBAAiB,YAAwB,KACxC,IAqBF,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { cameraManager } from './CameraSingleton';
|
|
2
|
+
export const applyAnchorSettings = (anchor, object, initialRotation = [0, 0, 0]) => {
|
|
3
|
+
if (!anchor || !anchor.enabled)
|
|
4
|
+
return;
|
|
5
|
+
if (anchor.fixedPosition) {
|
|
6
|
+
const p = cameraManager.getAnchorPosition(anchor.anchor || 'center', 0, anchor.offset || { y: 0, x: 0, z: 0 }, anchor.padding || 0);
|
|
7
|
+
object.position.set(p.x, p.y, p.z);
|
|
8
|
+
}
|
|
9
|
+
if (anchor.fixedRotation) {
|
|
10
|
+
const r = cameraManager.getRotation();
|
|
11
|
+
object.rotation.set(r.x + initialRotation[0], r.y + initialRotation[1], r.z + initialRotation[2]);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Object3D } from 'three';
|
|
2
|
+
import type { TransformEffect, ColorEffect, EffectState } from '@ntalmagor/3drize-core';
|
|
3
|
+
export declare function shouldEffectBeActive(effect: TransformEffect | ColorEffect, hovered: boolean, clicked: boolean): boolean;
|
|
4
|
+
export declare function getActiveEffects<T extends TransformEffect | ColorEffect>(effects: T[], hovered: boolean, clicked: boolean): T[];
|
|
5
|
+
export declare function applyWaveEffect(object: Object3D, effect: TransformEffect, time: number, originalY: number): void;
|
|
6
|
+
export declare function applyFloatEffect(object: Object3D, effect: TransformEffect, time: number, originalPosition: {
|
|
7
|
+
x: number;
|
|
8
|
+
y: number;
|
|
9
|
+
z: number;
|
|
10
|
+
}): void;
|
|
11
|
+
export declare function applyPulseEffect(object: Object3D, effect: TransformEffect, time: number, originalScale: {
|
|
12
|
+
x: number;
|
|
13
|
+
y: number;
|
|
14
|
+
z: number;
|
|
15
|
+
}): void;
|
|
16
|
+
export declare function applyShakeEffect(object: Object3D, effect: TransformEffect, originalPosition: {
|
|
17
|
+
x: number;
|
|
18
|
+
y: number;
|
|
19
|
+
}): void;
|
|
20
|
+
export declare function applyBounceEffect(object: Object3D, effect: TransformEffect, time: number, originalY: number): void;
|
|
21
|
+
export declare function applyRotate3DEffect(object: Object3D, effect: TransformEffect, time: number, originalRotation: {
|
|
22
|
+
x: number;
|
|
23
|
+
y: number;
|
|
24
|
+
z: number;
|
|
25
|
+
}): void;
|
|
26
|
+
export declare function applyFadeEffect(effect: TransformEffect, time: number): number;
|
|
27
|
+
export declare function applySpinEffect(object: Object3D, effect: TransformEffect, dt: number): void;
|
|
28
|
+
export declare function applySwayEffect(object: Object3D, effect: TransformEffect, time: number, originalRotation: {
|
|
29
|
+
x: number;
|
|
30
|
+
y: number;
|
|
31
|
+
z: number;
|
|
32
|
+
}): void;
|
|
33
|
+
export declare function applyFlipEffect(object: Object3D, effect: TransformEffect, isActive: boolean, dt: number, originalRotation: {
|
|
34
|
+
x: number;
|
|
35
|
+
y: number;
|
|
36
|
+
z: number;
|
|
37
|
+
}, sensitivity?: number): void;
|
|
38
|
+
export declare function applyScaleEffect(object: Object3D, effect: TransformEffect, isActive: boolean, dt: number, originalScale: {
|
|
39
|
+
x: number;
|
|
40
|
+
y: number;
|
|
41
|
+
z: number;
|
|
42
|
+
}, sensitivity?: number): void;
|
|
43
|
+
export declare function applyTransformEffects(object: Object3D, effects: TransformEffect[], time: number, dt: number, state: EffectState, hovered: boolean, clicked: boolean, sensitivity?: number): {
|
|
44
|
+
opacity?: number;
|
|
45
|
+
};
|
|
46
|
+
export declare function applyColorTransitionEffect(object: Object3D, effect: ColorEffect, isActive: boolean, dt: number, baseColors: Record<string, string>, applyToChildren?: boolean, sensitivity?: number): void;
|
|
47
|
+
export declare function applyPulseColorEffect(object: Object3D, effect: ColorEffect, time: number, baseColors: Record<string, string>, applyToChildren?: boolean): void;
|
|
48
|
+
export declare function applyAllColorEffects(object: Object3D, effects: ColorEffect[], time: number, dt: number, baseColors: Record<string, string>, hovered: boolean, clicked: boolean, applyToChildren?: boolean, sensitivity?: number): void;
|
|
49
|
+
//# sourceMappingURL=frameAnimations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frameAnimations.d.ts","sourceRoot":"","sources":["../../src/utils/frameAnimations.ts"],"names":[],"mappings":"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"}
|