Animation pipeline: AnimeScene engine, Ghibli-style compositions, audio energy tool, and README showcase

Add anime_scene rendering engine (AnimeScene + ParticleOverlay components) with multi-image
crossfade, 9 camera motion types, 5 particle systems, and cinematic lighting overlays.
Fix critical Remotion durationInFrames footgun by passing sceneDurationSeconds from parent.
Add audio offset/loop support in Explainer for skipping quiet music intros.

New tools: audio_energy.py analyzes per-second loudness via ebur128 to find optimal music
offset and detect when looping is needed.

Update all 6 animation pipeline skills (proposal, scene, asset, compose, executive-producer,
remotion.md) with battle-tested image_animation workflow including tool availability scan,
FLUX multi-image generation, composition JSON format, pre-render validation, and post-render
self-review.

Add 3 demo compositions (Candyland, Mori no Seishin, Deep Ocean) and anime-ghibli style
playbook. Update README with 3 anime video showcases and animation prompts. Add Animation
Pipeline section to PROMPT_GALLERY.md.
This commit is contained in:
calesthio
2026-03-31 17:40:50 -07:00
parent 249a6cb9dd
commit 237af7fb5c
18 changed files with 2061 additions and 56 deletions
@@ -0,0 +1,151 @@
{
"cuts": [
{
"id": "scene-1-candy-gate",
"source": "",
"in_seconds": 0,
"out_seconds": 5,
"type": "anime_scene",
"images": [
"candyland/scene1-candy-gate-a.png",
"candyland/scene1-candy-gate-b.png"
],
"animation": "zoom-in",
"particles": "sparkles",
"particleColor": "#FFE082",
"particleCount": 22,
"particleIntensity": 0.6,
"backgroundColor": "#0A0A1A",
"vignette": true,
"lightingFrom": "rgba(255,200,100,0.15)",
"lightingTo": "transparent"
},
{
"id": "scene-2-candy-forest",
"source": "",
"in_seconds": 5,
"out_seconds": 10,
"type": "anime_scene",
"images": [
"candyland/scene2-candy-forest-a.png",
"candyland/scene2-candy-forest-b.png"
],
"animation": "pan-right",
"particles": "petals",
"particleColor": "#FF6B9D",
"particleCount": 18,
"particleIntensity": 0.5,
"backgroundColor": "#0A0A1A",
"vignette": true,
"lightingFrom": "transparent",
"lightingTo": "rgba(255,107,157,0.1)"
},
{
"id": "scene-3-gumdrop-river",
"source": "",
"in_seconds": 10,
"out_seconds": 15,
"type": "anime_scene",
"images": [
"candyland/scene3-gumdrop-river-a.png",
"candyland/scene3-gumdrop-river-b.png"
],
"animation": "pan-left",
"particles": "sparkles",
"particleColor": "#87CEEB",
"particleCount": 15,
"particleIntensity": 0.4,
"backgroundColor": "#0A0A1A",
"vignette": true,
"lightingFrom": "rgba(100,200,255,0.1)",
"lightingTo": "transparent"
},
{
"id": "scene-4-lollipop-garden",
"source": "",
"in_seconds": 15,
"out_seconds": 20,
"type": "anime_scene",
"images": [
"candyland/scene4-lollipop-garden-a.png",
"candyland/scene4-lollipop-garden-b.png"
],
"animation": "drift-up",
"particles": "fireflies",
"particleColor": "#A8E6CF",
"particleCount": 20,
"particleIntensity": 0.55,
"backgroundColor": "#0A0A1A",
"vignette": true,
"lightingFrom": "transparent",
"lightingTo": "rgba(168,230,207,0.12)"
},
{
"id": "scene-5-chocolate-mountain",
"source": "",
"in_seconds": 20,
"out_seconds": 25,
"type": "anime_scene",
"images": [
"candyland/scene5-chocolate-mountain-a.png",
"candyland/scene5-chocolate-mountain-b.png"
],
"animation": "zoom-out",
"particles": "mist",
"particleColor": "#DDA0DD",
"particleCount": 5,
"particleIntensity": 0.35,
"backgroundColor": "#0A0A1A",
"vignette": true,
"lightingFrom": "rgba(160,100,200,0.08)",
"lightingTo": "transparent"
},
{
"id": "scene-6-sunset-farewell",
"source": "",
"in_seconds": 25,
"out_seconds": 30,
"type": "anime_scene",
"images": [
"candyland/scene6-sunset-farewell-a.png",
"candyland/scene6-sunset-farewell-b.png"
],
"animation": "ken-burns",
"particles": "sparkles",
"particleColor": "#FFB347",
"particleCount": 28,
"particleIntensity": 0.7,
"backgroundColor": "#0A0A1A",
"vignette": true,
"lightingFrom": "rgba(255,180,71,0.12)",
"lightingTo": "rgba(255,107,157,0.1)"
}
],
"overlays": [
{
"type": "hero_title",
"in_seconds": 0.5,
"out_seconds": 4.5,
"text": "Afternoon in Candyland",
"subtitle": "A whimsical journey"
},
{
"type": "section_title",
"in_seconds": 25.5,
"out_seconds": 29.5,
"text": "Every sweet dream begins here...",
"accentColor": "#FFB347",
"position": "bottom-center"
}
],
"audio": {
"music": {
"src": "candyland/ambient-music.mp3",
"volume": 0.15,
"fadeInSeconds": 2,
"fadeOutSeconds": 3,
"offsetSeconds": 43,
"loop": false
}
}
}
@@ -0,0 +1,154 @@
{
"cuts": [
{
"id": "scene-1-abyss-awakens",
"source": "",
"in_seconds": 0,
"out_seconds": 5,
"type": "anime_scene",
"images": [
"deep-ocean/test-scene1-abyss.png",
"deep-ocean/scene1-abyss-b.png"
],
"animation": "zoom-in",
"particles": "sparkles",
"particleColor": "#00E5FF",
"particleCount": 20,
"particleIntensity": 0.5,
"backgroundColor": "#020810",
"vignette": true,
"lightingFrom": "rgba(0,229,255,0.08)",
"lightingTo": "transparent"
},
{
"id": "scene-2-bioluminescent-garden",
"source": "",
"in_seconds": 5,
"out_seconds": 10,
"type": "anime_scene",
"images": [
"deep-ocean/scene2-garden-a.png",
"deep-ocean/scene2-garden-b.png"
],
"animation": "pan-right",
"particles": "fireflies",
"particleColor": "#A8E6CF",
"particleCount": 25,
"particleIntensity": 0.6,
"backgroundColor": "#020810",
"vignette": true
},
{
"id": "scene-3-coral-cathedral",
"source": "",
"in_seconds": 10,
"out_seconds": 15,
"type": "anime_scene",
"images": [
"deep-ocean/scene3-coral-a.png",
"deep-ocean/scene3-coral-b.png"
],
"animation": "drift-up",
"particles": "mist",
"particleColor": "#FFFFFF",
"particleCount": 5,
"particleIntensity": 0.4,
"backgroundColor": "#020810",
"vignette": true,
"lightingFrom": "transparent",
"lightingTo": "rgba(168,230,207,0.10)"
},
{
"id": "scene-4-creatures-of-light",
"source": "",
"in_seconds": 15,
"out_seconds": 20,
"type": "anime_scene",
"images": [
"deep-ocean/scene4-creatures-a.png",
"deep-ocean/scene4-creatures-b.png"
],
"animation": "pan-left",
"particles": "sparkles",
"particleColor": "#FFB347",
"particleCount": 18,
"particleIntensity": 0.5,
"backgroundColor": "#020810",
"vignette": true
},
{
"id": "scene-5-the-deep-trench",
"source": "",
"in_seconds": 20,
"out_seconds": 25,
"type": "anime_scene",
"images": [
"deep-ocean/scene5-trench-a.png",
"deep-ocean/scene5-trench-b.png"
],
"animation": "zoom-out",
"particles": "light-rays",
"particleColor": "#4FC3F7",
"particleCount": 3,
"particleIntensity": 0.35,
"backgroundColor": "#020810",
"vignette": true,
"lightingFrom": "rgba(79,195,247,0.08)",
"lightingTo": "rgba(0,0,0,0.2)"
},
{
"id": "scene-6-return-to-light",
"source": "",
"in_seconds": 25,
"out_seconds": 30,
"type": "anime_scene",
"images": [
"deep-ocean/scene6-ascent-a.png",
"deep-ocean/scene6-ascent-b.png"
],
"animation": "ken-burns",
"particles": "fireflies",
"particleColor": "#FFE082",
"particleCount": 22,
"particleIntensity": 0.65,
"backgroundColor": "#020810",
"vignette": true,
"lightingFrom": "rgba(0,100,200,0.08)",
"lightingTo": "rgba(255,224,130,0.12)"
}
],
"overlays": [
{
"type": "hero_title",
"in_seconds": 0.5,
"out_seconds": 4.5,
"text": "Into the Abyss",
"subtitle": "Where Light Is Born from Darkness"
},
{
"type": "section_title",
"in_seconds": 10.5,
"out_seconds": 14.0,
"text": "Ancient Beyond Measure",
"accentColor": "#A8E6CF",
"position": "bottom-center"
},
{
"type": "section_title",
"in_seconds": 25.5,
"out_seconds": 29.5,
"text": "The deep remembers.",
"accentColor": "#FFE082",
"position": "bottom-center"
}
],
"audio": {
"music": {
"src": "deep-ocean/ambient-ocean.mp3",
"volume": 0.15,
"fadeInSeconds": 2,
"fadeOutSeconds": 3,
"offsetSeconds": 55
}
}
}
@@ -0,0 +1,146 @@
{
"cuts": [
{
"id": "scene-1-awakening",
"source": "",
"in_seconds": 0,
"out_seconds": 5,
"type": "anime_scene",
"images": [
"mori-no-seishin/test-scene1-awakening.png",
"mori-no-seishin/scene1-awakening-b.png"
],
"animation": "zoom-in",
"particles": "fireflies",
"particleColor": "#FFE082",
"particleCount": 18,
"particleIntensity": 0.5,
"backgroundColor": "#0A0A1A",
"vignette": true
},
{
"id": "scene-2-gate",
"source": "",
"in_seconds": 5,
"out_seconds": 10,
"type": "anime_scene",
"images": [
"mori-no-seishin/scene2-gate-a.png",
"mori-no-seishin/scene2-gate-b.png"
],
"animation": "pan-right",
"particles": "mist",
"particleColor": "#FFFFFF",
"particleCount": 4,
"particleIntensity": 0.5,
"backgroundColor": "#0A0A1A",
"vignette": true,
"lightingFrom": "rgba(255,200,100,0.15)",
"lightingTo": "transparent"
},
{
"id": "scene-3-stream",
"source": "",
"in_seconds": 10,
"out_seconds": 15,
"type": "anime_scene",
"images": [
"mori-no-seishin/scene3-stream-a.png",
"mori-no-seishin/scene3-stream-b.png"
],
"animation": "pan-left",
"particles": "sparkles",
"particleColor": "#87CEEB",
"particleCount": 15,
"particleIntensity": 0.4,
"backgroundColor": "#0A0A1A",
"vignette": true
},
{
"id": "scene-4-canopy",
"source": "",
"in_seconds": 15,
"out_seconds": 20,
"type": "anime_scene",
"images": [
"mori-no-seishin/scene4-canopy-a.png",
"mori-no-seishin/scene4-canopy-b.png"
],
"animation": "drift-up",
"particles": "fireflies",
"particleColor": "#FFF3B0",
"particleCount": 25,
"particleIntensity": 0.6,
"backgroundColor": "#0A0A1A",
"vignette": true,
"lightingFrom": "transparent",
"lightingTo": "rgba(255,243,176,0.12)"
},
{
"id": "scene-5-overlook",
"source": "",
"in_seconds": 20,
"out_seconds": 25,
"type": "anime_scene",
"images": [
"mori-no-seishin/scene5-overlook-a.png",
"mori-no-seishin/scene5-overlook-b.png"
],
"animation": "zoom-out",
"particles": "light-rays",
"particleColor": "#FFE082",
"particleCount": 3,
"particleIntensity": 0.35,
"backgroundColor": "#0A0A1A",
"vignette": true,
"lightingFrom": "rgba(255,180,71,0.1)",
"lightingTo": "rgba(255,107,157,0.08)"
},
{
"id": "scene-6-dance",
"source": "",
"in_seconds": 25,
"out_seconds": 30,
"type": "anime_scene",
"images": [
"mori-no-seishin/scene6-dance-a.png",
"mori-no-seishin/scene6-dance-b.png"
],
"animation": "ken-burns",
"particles": "sparkles",
"particleColor": "#FFB347",
"particleCount": 30,
"particleIntensity": 0.7,
"backgroundColor": "#0A0A1A",
"vignette": true,
"lightingFrom": "rgba(255,180,71,0.08)",
"lightingTo": "rgba(100,80,200,0.1)"
}
],
"overlays": [
{
"type": "hero_title",
"in_seconds": 0.5,
"out_seconds": 4.5,
"text": "Mori no Seishin",
"subtitle": "Spirit of the Forest"
},
{
"type": "section_title",
"in_seconds": 25.5,
"out_seconds": 29.5,
"text": "They were never alone.",
"accentColor": "#FFB347",
"position": "bottom-center"
}
],
"audio": {
"music": {
"src": "mori-no-seishin/ambient-piano.mp3",
"volume": 0.18,
"fadeInSeconds": 2,
"fadeOutSeconds": 3,
"offsetSeconds": 56
}
}
}