diff --git a/data_only_viz/shaders/scene.metal b/data_only_viz/shaders/scene.metal index 2f3b514..675fdf4 100644 --- a/data_only_viz/shaders/scene.metal +++ b/data_only_viz/shaders/scene.metal @@ -426,6 +426,25 @@ float3 mode_hands3d(float2 p, constant SceneUniforms& U) { return col; } +// ---- 9 openpos : fond minimal radial pour faire ressortir le squelette ---- +// Le rendu des joints + bones se fait par le skel_pipeline rendu PAR-DESSUS +// (cf renderer.py). On laisse juste un degrade radial sombre pour le contraste. +float3 mode_openpos(float2 p, constant SceneUniforms& U) { + float r = length(p); + // Centre legerement plus clair, bords sombres. Touche de couleur + // chaude au centre selon rms pour reagir a la musique. + float3 inner = float3(0.05, 0.05, 0.10) + float3(0.30, 0.12, 0.18) * U.rms; + float3 outer = float3(0.01, 0.01, 0.02); + float3 col = mix(inner, outer, smoothstep(0.0, 1.4, r)); + // Grille de points discrete pour donner une ref de profondeur + float2 g = fmod(p * 12.0, 2.0) - 1.0; + float dot_grid = exp(-dot(g, g) * 6.0) * 0.04; + col += float3(dot_grid); + // Pulsation legere sur le kick / drop + col *= 1.0 + U.rms * 0.4; + return col; +} + // ===== Fragment dispatcher ========================================= fragment float4 bg_fragment(VsOut in [[stage_in]], @@ -444,6 +463,7 @@ fragment float4 bg_fragment(VsOut in [[stage_in]], else if (mode == 6) color = mode_starfield(p, U); else if (mode == 7) color = mode_bars(p, U); else if (mode == 8) color = mode_hands3d(p, U); + else if (mode == 9) color = mode_openpos(p, U); else color = mode_storm(p, U); // Flash global + vignette diff --git a/data_only_viz/state.py b/data_only_viz/state.py index 23440de..e921f78 100644 --- a/data_only_viz/state.py +++ b/data_only_viz/state.py @@ -116,6 +116,7 @@ class State: "storm", "tunnel", "plasma", "kaleido", "voronoi", "metaballs", "starfield", "bars", "hands3d", # mode 8 : voyage 3D pilote par les mains + "openpos", # mode 9 : skeleton multi-personne sur fond minimal ) # Preset open-data actif (USGS, Blitz, Wind, Kp/Bz, X-ray, OpenSky, # Bsky, Pose, Cosmos) — affiche dans le HUD. @@ -153,7 +154,7 @@ KEYMAP_VIDEO: tuple[tuple[str, str], ...] = ( ("u", "starfield"), ("i", "bars"), ("o", "hands3d"), # voyage 3D pilote par les mains MediaPipe - # p : libre + ("p", "openpos"), # skeleton multi-personne 3D-stylise ) KEYMAP_AUDIO: tuple[tuple[str, str], ...] = ( diff --git a/data_only_viz/web/public/control.html b/data_only_viz/web/public/control.html index 6e6a868..2e19fc8 100644 --- a/data_only_viz/web/public/control.html +++ b/data_only_viz/web/public/control.html @@ -179,6 +179,7 @@ +

Retour SC