Gemini 4 : vibe-coder une cinématique 3D dans Blender à partir d'un seul prompt
D'un seul prompt à une cinématique Blender en quatre plans
Une séquence de douze secondes, ça paraît peu. Dans Blender, c'est beaucoup de travail : mise en scène, images clés, mouvements de caméra, profondeur de champ, et une feuille de papier qui doit plier comme du papier, pas comme du tissu. L'essentiel se fait clic après clic dans le viewport.
Nous avons donc confié tout le travail à un agent. Avec Gemini 4 dans Eigent, un seul prompt a transformé la scène Cozy Kitchen en une cinématique de quatre plans. Un courant d'air soulève une page de recette de son support, la fait traverser la cuisine et la dépose, drapée, sur une tartelette aux fraises. Gemini 4 n'a jamais ouvert la fenêtre de Blender. Il a écrit du Python pour Blender, l'a exécuté en mode headless, a vérifié son propre travail et a corrigé ce qu'il a trouvé.
Le workflow complet en un coup d'œil
Vous apportez la scène et le brief. Gemini 4 fait le reste en ligne de commande. Chaque étape laisse un fichier derrière elle, pour que vous puissiez vérifier le travail à tout moment.
| Étape | Ce qui se passe | Ce que vous obtenez |
|---|---|---|
| Lire | Ouvrir la scène en headless et charger les données de la tâche | Un rendu test du point de départ de la page |
| Mettre en scène | Ajouter un support à recette, une tringle à rideau et des indices de vent | Un décor où le courant d'air a une source visible |
| Construire | Modéliser et texturer la page de recette | RecipePage, une feuille fine imprimée des deux côtés avec une fiche recette peinte |
| Animer | Tracer une trajectoire dans le couloir et un drapé sur la tartelette | Un vol fluide et un pli de repos bien soutenu |
| Filmer | Placer quatre caméras et les lier aux coupes | Un montage en quatre plans avec profondeur de champ dans les plans 2 et 3 |
| Vérifier | Mesurer chaque règle du brief et corriger ce qui échoue | Un script de vérification réexécutable dans work/ |
| Livrer | Rendre les images fixes et le storyboard, écrire la liste de plans | sequence.blend, shotlist.csv, storyboard.png et neuf images fixes |
Voici comment le faire vous-même, étape par étape - y compris une chose que nous configurerions autrement la prochaine fois.
Ce que vous obtiendrez
- Un projet Blender modifiable -
sequence.blend, 13 Mo, avec toutes les images empaquetées et aucune bibliothèque liée. Ouvrez-le et continuez à travailler. - Une liste de plans -
shotlist.csv, une ligne par plan, avec la plage d'images, la caméra et l'action. - Un storyboard -
storyboard.png, neuf vignettes annotées de 640×480 dans une grille 3×3. - Neuf images fixes - images 1, 48, 73, 120, 145, 192, 217, 264 et 288.
- Une vidéo et une page d'aperçu -
sequence.mp4etpreview.html, à partir d'une courte demande de suivi.
Avant de commencer
- Eigent installé sur votre machine.
- Gemini 4 - via Eigent Cloud, ou avec votre propre clé API Gemini.
- Blender sur la même machine. Gemini 4 le pilote en ligne de commande, il n'a donc jamais besoin de la fenêtre. Nous avions Blender 5.2 LTS installé. La tâche fournit aussi une image Docker qui fixe
bpy5.2.2, si vous préférez l'isoler dans un sandbox. - Le paquet de la tâche. Le nôtre est le « recipe-page mishap » de nos environnements de code 3D :
| Fichier | Ce qu'il apporte à l'agent |
|---|---|
PROMPT.md | Le brief - le seul message que vous envoyez |
agent_environment/input/kitchen.blend | La scène Cozy Kitchen préparée |
agent_environment/input/subjects.json | Les objets qui composent la tartelette aux fraises |
agent_environment/input/action.json | Le point de départ de la page et son couloir de vol aux images 120, 168 et 192 |
agent_environment/input/presentation.json | Les réglages des images fixes et du storyboard |
agent_environment/input/source_overview.png | Un aperçu de la scène d'origine |
agent_environment/scripts/ | presentation.py (rend les images fixes et le storyboard) et review.py |
Sélectionner Gemini 4
Sur Eigent Cloud - aucune clé API nécessaire :
- Sur l'écran d'accueil, ouvrez le sélecteur de modèle sous la zone de saisie.
- Sous Eigent, choisissez Gemini 4 Argon.
Avec votre propre clé API Gemini :
- Ouvrez Settings → Models.
- Trouvez Gemini et ouvrez ses réglages.
- Collez votre API key.
- Réglez le model type sur
gemini-4-argon. - Cliquez sur Save, puis choisissez-le sous Gemini dans le sélecteur de modèle.
L'effort de réflexion par défaut convient. Nous l'avons lancé en Single Agent avec Full access, pour qu'il puisse exécuter Blender et écrire des fichiers sans s'arrêter pour demander.
Préparer le dossier du projet
Créez un projet dans Eigent et pointez-le vers un dossier qui contient deux choses :
showcase-kitchen-draught/
PROMPT.md
agent_environment/
input/ # kitchen.blend, subjects.json, action.json, presentation.json, source_overview.png
scripts/ # presentation.py, review.py
Laissez tout le reste dehors - surtout un éventuel correcteur, des exécutions de référence ou des notes sur des résultats passés. Nous expliquons pourquoi plus bas.
Coller le prompt
Copiez le brief ci-dessous dans la zone de saisie Cowork with et envoyez-le tel quel.
Animate the recipe-page mishap
Create a twelve-second cinematic in /app/input/kitchen.blend: a draught lifts a recipe page, carries it across the work area and leaves it draped on the strawberry tartlet identified in /app/input/subjects.json. Preserve the warm illustrated kitchen. Show the calm setup, motivated lift, flight, contact and settling through four connected shots, with visible, consistent wind clues and readable page motion.
## Action and photography
- Scene Sequence runs at 24 fps, frames 1–288, with camera-bound cuts at 1, 73, 145 and 217. Preserve visible source surfaces, material identity and world transforms within 2 mm; keep existing set pieces visible. Add the page, wind clues and staging as needed.
- RecipePage is an editable thin two-sided sheet, 0.13–0.17 m long and 0.09–0.12 m wide, with 100–12,000 native vertices, finite UVs and readable recipe marks.
- Use /app/input/action.json for the start plane and flight corridor. At frame 1, the page is within 10 mm of the start plane and its centroid within 20 mm of the start point. Through frame 48 the centroid stays within 8 mm of its initial pose; by 120 it moves at least 0.10 m. At frames 120, 168 and 192 it follows the corridor within 35 mm.
- Page centroid motion is at most 16 mm per frame, with successive displacement changes at most 5 mm. After best rigid alignment with frame 1, shape deformation is at least 4 mm RMS at one flight frame and 2 mm RMS at rest. Show convincing paper flutter, stiffness and supported contact folds, without penetration or stretched print.
- Throughout frames 241–288, at least 15% of page surface samples are within 8 mm of the actual selected strawberry-tartlet surface. Centroid variation over 264–288 is at most 3 mm; surface motion from 276 to 288 is at most 4 mm.
- Use four distinct cameras. Shot 1 may be orthographic; shots 2–4 use 35–85 mm perspective lenses. Shots 2 and 3 use depth of field focused within 25 mm of the page centroid at each shot's start, midpoint and end.
- At frames 120, 168, 192 and 264, frame the page in front of the active camera within the central 80%, with projected height 8–65% of the image. Within shots, camera motion is at most 25 mm and 4° per frame, with translation changes at most 8 mm; cuts are exempt.
- Compose purposeful shots with coherent screen direction, controlled focus, anticipation and a clear final reveal. Avoid disconnected poses, arbitrary camera moves or unreadable action.
## Handoff
Save sequence.blend, shotlist.csv, storyboard.png and stills/frame_NNN.png for frames 1, 48, 73, 120, 145, 192, 217, 264 and 288 in /app/output. The CSV columns are shot,start,end,camera,action, matching the native four-shot edit. Use labelled 640×480 panels in a 3×3 storyboard. Stills and storyboard match the saved scene under /app/scripts/presentation.py CPU settings with luminance SSIM ≥0.93; use that helper or equivalent images.
Keep the native project editable and below 192 MiB, with finite nondegenerate geometry, all used material/world images packed and no linked libraries. It must replay with Python auto-execution disabled; native constraints and ordinary driver expressions are allowed. Keep /app/input unchanged; use /app/work for work files. Blender Python, headless rendering and command-line tools are available.
Le prompt a été écrit pour un conteneur Docker, ses chemins commencent donc par /app. Sur notre Mac, Gemini 4 les a associés de lui-même au dossier du projet - agent_environment/input, work/ et output/.
Quelques éléments de ce brief font l'essentiel du travail :
- Des chiffres plutôt que des adjectifs. « Rends-le cinématographique » est une ambiance. « À moins de 35 mm du couloir à l'image 168 » est une cible que l'agent peut mesurer - et atteindre.
- Des temps forts narratifs, pas seulement des règles. Mise en place calme, envol motivé, vol, contact, retombée. Les chiffres gardent le mouvement honnête - les temps forts en font une histoire.
- Préserver la cuisine. Les objets d'origine restent à moins de 2 mm, avec leurs matériaux intacts. L'agent ajoute à la scène - il ne la reconstruit pas.
- Une vraie livraison. Un
.blendempaqueté et modifiable, qui se rejoue avec l'exécution automatique de Python désactivée. Un fichier que vous pouvez ouvrir demain pour continuer à animer.
Laisser votre agent travailler
Envoyez le prompt. Gemini 4 planifie la tâche, puis la traite en Python pour Blender. Notre exécution a pris environ 50 minutes, de la première lecture de fichier au dernier auto-audit. Voici ce qu'il a construit, dans l'ordre :
- Lire la scène. Il a ouvert
kitchen.blenden headless, chargé les données de la tartelette et du couloir, et rendu une vue test du point de départ. - Mettre en place le décor. Un petit support à recette en bois sous le point de départ, et une tringle à rideau en travers de la fenêtre de la cuisine.
- Ajouter des indices de vent. Une embrasse de rideau, des rubans de satin et une étiquette sur le support - tous gonflés dans le même sens, pour que le courant d'air ait une source visible.
- Créer la page.
RecipePagemesure 0,136 × 0,094 m avec 1 218 sommets, imprimée des deux côtés, avec une fiche recette qu'il a peinte lui-même - « Recipe No. 14, Strawberry Tartlet ». Les notes du chef se terminent par une ligne que nous n'avions pas demandée : « Keep recipe cards away from open kitchen window draughts! » - Planifier le mouvement. Une trajectoire fluide passant par les points de contrôle du couloir, puis un drapé de repos ajusté à la surface réelle de la tartelette.
- Placer quatre caméras. 42 mm pour la mise en place calme, 48 mm avec une profondeur de champ à f/5.6 pour l'envol, un plan de suivi en 52 mm pour le vol et un plan héros en 58 mm pour l'atterrissage. Des marqueurs de timeline lient chaque caméra à sa coupe aux images 1, 73, 145 et 217.
- Vérifier son propre travail. Il a écrit un script de vérification pour chaque règle mesurable du brief, l'a exécuté et a corrigé ce qu'il a trouvé. La face imprimée de la page s'inclinait à l'opposé de la caméra, il a donc inversé le tangage. Il a ajouté des plis au rideau, écarté la page au repos des tartelettes voisines et relevé la dernière caméra pour une révélation plus nette.
- Livrer. Il a rendu les images fixes et le storyboard avec
presentation.py, écritshotlist.csvet lancé un audit final - chaque objet d'origine présent, immobile et avec ses matériaux d'origine.
Lire la liste de plans
Ouvrez output/shotlist.csv - quatre plans, un par caméra :
| Plan | Images | Caméra | Action |
|---|---|---|---|
| 1 | 1–72 | Cam_Shot1 | Mise en place calme sur le support à recette en bois, tandis que les rubans de la fenêtre gonflent dans le courant d'air et soulèvent la page |
| 2 | 73–144 | Cam_Shot2 | Le courant d'air emporte la page qui volette, du support jusqu'au couloir de vol en hauteur |
| 3 | 145–216 | Cam_Shot3 | La page fond sur le plan de travail et plane vers le présentoir à pâtisseries à deux étages |
| 4 | 217–288 | Cam_Shot4 | La page se pose et se stabilise en une arche rigide et soutenue, drapée sur la tartelette aux fraises |
Ouvrez ensuite storyboard.png. Neuf images racontent toute l'histoire d'un coup d'œil - la page au repos, qui s'envole, traverse la cuisine et se pose sur la tartelette.
Vérifier les chiffres
Le script de vérification de Gemini 4 reste dans work/, vous pouvez donc le relancer sur le projet enregistré à tout moment. Voici ce qu'il a mesuré sur notre sequence.blend final :
| Vérification | Exigence du brief | Résultat |
|---|---|---|
| Point de départ à l'image 1 | à moins de 20 mm | 1,03 mm |
| Immobilité jusqu'à l'image 48 | dérive de 8 mm au plus | 6,69 mm |
| Distance parcourue à l'image 120 | au moins 0,10 m | 0,152 m |
| Couloir de vol aux images 120, 168, 192 | à moins de 35 mm | 0,00 mm |
| Vitesse de la page | 16 mm par image au plus | 9,35 mm |
| Battement pendant le vol | au moins 4 mm RMS | 11,07 mm |
| Contact avec la tartelette, images 241–288 | au moins 15 % de la page | 22,9 % |
| Page traversant la tartelette | aucune | 0 triangle en intersection |
| Stabilisation, images 264–288 | 3 mm au plus | 0,37 mm |
| Mise au point, plans 2 et 3 | à moins de 25 mm de la page | 0,19 mm ou moins |
| Rotation de caméra la plus rapide | 4° par image au plus | 0,71° |
Ce sont les propres vérifications de l'agent par rapport au brief. Le paquet de la tâche inclut aussi un correcteur distinct - 23 règles mesurées plus un juge visuel qui note l'histoire, le savoir-faire et le rendu du papier. Si vous voulez un score officiel, lancez vous-même grader/grade.sh sur le résultat une fois l'exécution terminée - en dehors du dossier de l'agent.
Regarder le résultat
Le brief demande un projet Blender, pas une vidéo. Nous avons donc envoyé un message de suivi dans le même projet, demandant à Gemini 4 d'exporter la séquence en MP4 avec un aperçu dans le navigateur.
Il a rendu sequence.mp4 - 288 images, 640×480 en H.264, 3 Mo - et preview.html. La page d'aperçu lit la cinématique avec un compteur d'images en direct, des sauts en un clic vers chacun des quatre plans et le storyboard complet en dessous.
Ce que nous configurerions autrement
Notre dossier de projet contenait plus que ce dont l'agent avait besoin. À côté de PROMPT.md et d'agent_environment/, il y avait aussi le README.md de la tâche, son grader/ et ses reference_runs/ issus de modèles précédents.
Cela compte. Le script de vérification de Gemini 4 teste l'impression de la page contre une limite d'étirement de 5 %. Ce chiffre ne figure pas dans le prompt - il est dans le README, à côté de notes sur les échecs des exécutions précédentes. Les scripts de Gemini 4 n'ont jamais lu le correcteur ni les exécutions de référence, mais on peut raisonnablement supposer que le README a influencé ses cibles.
Considérez donc notre exécution comme une démonstration, pas comme un score de benchmark. Pour un test équitable, donnez à votre agent exactement deux choses - PROMPT.md et agent_environment/ - et gardez le correcteur hors de sa vue.
À vous de jouer
Le même schéma fonctionne pour n'importe quelle scène Blender :
- Transformez le goût en chiffres. Cadrage, vitesses, distances de mise au point, contact. Des cibles mesurables permettent à votre agent de se vérifier avant même que vous appuyiez sur lecture.
- Donnez-lui un couloir. Quelques points de contrôle dans un fichier JSON guident l'action sans poser une seule image clé à la main.
- Demandez une vraie livraison. Un
.blendempaqueté et modifiable, une liste de plans et un storyboard. Vous obtenez un projet sur lequel continuer à travailler - pas seulement un rendu. - Laissez-le vérifier. Le meilleur moment de notre exécution : Gemini 4 a remarqué que la face imprimée de sa page était tournée à l'opposé de la caméra - et l'a corrigé avant même que nous le voyions.
Douze secondes d'animation, c'était autrefois un après-midi dans le viewport. Aujourd'hui, c'est un seul prompt - et un projet que vous pouvez ouvrir, ajuster et vous approprier.
Crédits : réalisé avec Gemini 4 et Eigent. Scène : « Cozy Kitchen » (écran de démarrage de Blender 3.5) par Nicole Morena, CC-BY-SA - la scène dérivée et les rendus conservent l'attribution et les conditions ShareAlike. Brief et données de la tâche : création originale d'Eigent. Musique : « Quirk n Twerk » de The Soundlings (YouTube Audio Library).



