Gemini 4: vibe-coding filmowej sekwencji 3D w Blenderze z jednego promptu
Od jednego promptu do sekwencji w Blenderze w czterech ujęciach
Dwunastosekundowa sekwencja brzmi niepozornie. W Blenderze to sporo pracy: inscenizacja, klatki kluczowe, ruchy kamery, głębia ostrości i kartka papieru, która ma zginać się jak papier, a nie jak tkanina. Większość z tego robi się klik po kliku w viewporcie.
Dlatego całe zadanie oddaliśmy agentowi. Z Gemini 4 w Eigent jeden prompt zamienił scenę Cozy Kitchen w sekwencję filmową z czterech ujęć. Przeciąg podrywa kartkę z przepisem ze stojaka, niesie ją przez kuchnię i układa na tartaletce truskawkowej. Gemini 4 ani razu nie otworzył okna Blendera. Napisał kod w Blender Pythonie, uruchomił go w trybie headless, sprawdził własną pracę i poprawił to, co znalazł.
Cały workflow w skrócie
Ty dostarczasz scenę i brief. Gemini 4 robi resztę z wiersza poleceń. Każdy etap zostawia plik, więc możesz sprawdzić pracę w dowolnym momencie.
| Etap | Co się dzieje | Co dostajesz |
|---|---|---|
| Odczyt | Otwarcie sceny w trybie headless i wczytanie danych zadania | Testowy render punktu startowego kartki |
| Inscenizacja | Dodanie stojaka na przepisy, karnisza i oznak wiatru | Scenografia, w której przeciąg ma widoczne źródło |
| Budowa | Modelowanie i teksturowanie kartki z przepisem | RecipePage, cienka dwustronna kartka z namalowanym przepisem |
| Animacja | Wyznaczenie toru przez korytarz i ułożenie kartki na tartaletce | Płynny lot i podparte zagięcie w spoczynku |
| Zdjęcia | Ustawienie czterech kamer i przypisanie ich do cięć | Montaż z czterech ujęć z głębią ostrości w 2 i 3 |
| Weryfikacja | Pomiar każdej reguły briefu i poprawa tego, co nie przechodzi | Skrypt kontrolny w work/, który można uruchomić ponownie |
| Przekazanie | Render kadrów i storyboardu, zapis listy ujęć | sequence.blend, shotlist.csv, storyboard.png i dziewięć kadrów |
Oto jak zrobić to samemu, krok po kroku – łącznie z jedną rzeczą, którą następnym razem ustawilibyśmy inaczej.
Co otrzymasz
- Edytowalny projekt Blendera –
sequence.blend, 13 MB, ze wszystkimi obrazami spakowanymi i bez podlinkowanych bibliotek. Otwórz go i pracuj dalej. - Listę ujęć –
shotlist.csv, jeden wiersz na ujęcie, z zakresem klatek, kamerą i akcją. - Storyboard –
storyboard.png, dziewięć opisanych paneli 640×480 w siatce 3×3. - Dziewięć kadrów – klatki 1, 48, 73, 120, 145, 192, 217, 264 i 288.
- Wideo i stronę podglądu –
sequence.mp4ipreview.html, po jednej krótkiej prośbie uzupełniającej.
Zanim zaczniesz
- Eigent zainstalowany na twoim komputerze.
- Gemini 4 – przez Eigent Cloud albo z własnym kluczem API Gemini.
- Blender na tym samym komputerze. Gemini 4 steruje nim z wiersza poleceń, więc nigdy nie potrzebuje okna. My mieliśmy zainstalowany Blender 5.2 LTS. Zadanie zawiera też obraz Dockera z przypiętym
bpy5.2.2, jeśli wolisz pracować w sandboksie. - Paczka zadania. Nasza to „recipe-page mishap” z naszych środowisk programowania 3D:
| Plik | Co daje agentowi |
|---|---|
PROMPT.md | Brief – jedyna wiadomość, którą wysyłasz |
agent_environment/input/kitchen.blend | Przygotowana scena Cozy Kitchen |
agent_environment/input/subjects.json | Które obiekty tworzą tartaletkę truskawkową |
agent_environment/input/action.json | Punkt startowy kartki i jej korytarz lotu w klatkach 120, 168 i 192 |
agent_environment/input/presentation.json | Ustawienia kadrów i storyboardu |
agent_environment/input/source_overview.png | Podgląd nietkniętej sceny |
agent_environment/scripts/ | presentation.py (renderuje kadry i storyboard) oraz review.py |
Wybierz Gemini 4
W Eigent Cloud – bez klucza API:
- Na ekranie głównym otwórz selektor modelu pod polem wprowadzania.
- W sekcji Eigent wybierz Gemini 4 Argon.
Z własnym kluczem API Gemini:
- Otwórz Settings → Models.
- Znajdź Gemini i otwórz jego ustawienia.
- Wklej swój API key.
- Ustaw model type na
gemini-4-argon. - Kliknij Save, a potem wybierz model w sekcji Gemini w selektorze modelu.
Domyślny poziom rozumowania wystarcza. Uruchomiliśmy go jako Single Agent z Full access, żeby mógł uruchamiać Blendera i zapisywać pliki bez pytania o zgodę.
Przygotuj folder projektu
Utwórz projekt w Eigent i wskaż folder, który zawiera dwie rzeczy:
showcase-kitchen-draught/
PROMPT.md
agent_environment/
input/ # kitchen.blend, subjects.json, action.json, presentation.json, source_overview.png
scripts/ # presentation.py, review.py
Wszystko inne zostaw poza nim – zwłaszcza grader, przebiegi referencyjne czy notatki o wcześniejszych wynikach. Dlaczego, wyjaśniamy niżej.
Wklej prompt
Skopiuj poniższy brief do pola Cowork with i wyślij go bez zmian.
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.
Prompt został napisany dla kontenera Dockera, więc jego ścieżki zaczynają się od /app. Na naszym Macu Gemini 4 sam przypisał je do folderu projektu – agent_environment/input, work/ i output/.
Kilka elementów briefu wykonuje najcięższą pracę:
- Liczby zamiast przymiotników. „Zrób to filmowo” to nastrój. „W odległości 35 mm od korytarza w klatce 168” to cel, który agent może zmierzyć – i osiągnąć.
- Momenty fabularne, nie tylko reguły. Spokojny początek, umotywowane uniesienie, lot, kontakt, opadnięcie. Liczby utrzymują ruch w ryzach – momenty robią z niego historię.
- Zachowaj kuchnię. Obiekty źródłowe pozostają w granicach 2 mm, z nienaruszonymi materiałami. Agent dodaje do sceny – nie buduje jej od nowa.
- Prawdziwe przekazanie. Spakowany, edytowalny
.blend, który odtwarza się przy wyłączonym automatycznym wykonywaniu Pythona. Plik, który możesz jutro otworzyć i dalej animować.
Pozwól agentowi działać
Wyślij prompt. Gemini 4 planuje zadanie, a potem realizuje je w Blender Pythonie. Nasz przebieg trwał około 50 minut, od pierwszego odczytu pliku do końcowego audytu. Oto co zbudował, po kolei:
- Odczytał scenę. Otworzył
kitchen.blendw trybie headless, wczytał dane tartaletki i korytarza oraz wyrenderował testowy widok punktu startowego. - Przygotował scenografię. Mały drewniany stojak na przepisy pod punktem startowym i karnisz w poprzek kuchennego okna.
- Dodał oznaki wiatru. Szarfę zasłony, satynowe wstążki i zawieszkę na stojaku – wszystko łopocze w tę samą stronę, więc przeciąg ma widoczne źródło.
- Stworzył kartkę.
RecipePagema 0,136 × 0,094 m i 1218 wierzchołków, jest dwustronna, z samodzielnie namalowanym przepisem – „Recipe No. 14, Strawberry Tartlet”. Notatki szefa kuchni kończą się linijką, o którą nie prosiliśmy: „Keep recipe cards away from open kitchen window draughts!” - Zaplanował ruch. Płynny tor przez punkty kontrolne korytarza, a następnie ułożenie w spoczynku dopasowane do rzeczywistej powierzchni tartaletki.
- Ustawił cztery kamery. 42 mm na spokojny początek, 48 mm z głębią ostrości przy f/5.6 na uniesienie, ujęcie śledzące 52 mm na lot i ujęcie główne 58 mm na lądowanie. Znaczniki na osi czasu przypisują każdą kamerę do jej cięcia w klatkach 1, 73, 145 i 217.
- Sprawdził własną pracę. Napisał skrypt weryfikacyjny dla każdej mierzalnej reguły briefu, uruchomił go i poprawił to, co znalazł. Zadrukowana strona kartki odchylała się od kamery, więc odwrócił jej pochylenie. Dodał fałdy zasłonie, odsunął leżącą kartkę od sąsiednich tartaletek i podniósł ostatnią kamerę, by finał był czytelniejszy.
- Przekazał wyniki. Wyrenderował kadry i storyboard za pomocą
presentation.py, zapisałshotlist.csvi przeprowadził końcowy audyt – każdy obiekt źródłowy obecny, nieprzesunięty i z oryginalnymi materiałami.
Przeczytaj listę ujęć
Otwórz output/shotlist.csv – cztery ujęcia, jedno na kamerę:
| Ujęcie | Klatki | Kamera | Akcja |
|---|---|---|---|
| 1 | 1–72 | Cam_Shot1 | Spokojny początek przy drewnianym stojaku, gdy wstążki w oknie łopoczą w nadciągającym przeciągu i unoszą kartkę z przepisem |
| 2 | 73–144 | Cam_Shot2 | Przeciąg niesie trzepoczącą kartkę ze stojaka w górę, do wysokiego korytarza lotu |
| 3 | 145–216 | Cam_Shot3 | Kartka przelatuje nad kuchennym blatem i szybuje w stronę dwupiętrowej patery na ciastka |
| 4 | 217–288 | Cam_Shot4 | Kartka opada i układa się w sztywny, podparty łuk przewieszony przez tartaletkę truskawkową |
Potem otwórz storyboard.png. Dziewięć kadrów opowiada całą historię na jeden rzut oka – kartka w spoczynku, unosząca się, przelatująca przez kuchnię i opadająca na tartaletkę.
Sprawdź liczby
Skrypt weryfikacyjny Gemini 4 zostaje w work/, więc możesz go w każdej chwili uruchomić ponownie na zapisanym projekcie. Oto co zmierzył w naszym końcowym sequence.blend:
| Kontrola | Wymóg briefu | Wynik |
|---|---|---|
| Punkt startowy w klatce 1 | do 20 mm | 1,03 mm |
| Spokój do klatki 48 | dryf najwyżej 8 mm | 6,69 mm |
| Przebyta odległość do klatki 120 | co najmniej 0,10 m | 0,152 m |
| Korytarz lotu w klatkach 120, 168, 192 | do 35 mm | 0,00 mm |
| Prędkość kartki | najwyżej 16 mm na klatkę | 9,35 mm |
| Trzepotanie w locie | co najmniej 4 mm RMS | 11,07 mm |
| Kontakt z tartaletką, klatki 241–288 | co najmniej 15% kartki | 22,9% |
| Kartka przenikająca tartaletkę | wcale | 0 nakładających się trójkątów |
| Opadnięcie, klatki 264–288 | najwyżej 3 mm | 0,37 mm |
| Ostrość głębi ostrości, ujęcia 2 i 3 | do 25 mm od kartki | 0,19 mm lub mniej |
| Najszybszy obrót kamery | najwyżej 4° na klatkę | 0,71° |
To własne kontrole agenta względem briefu. Paczka zadania zawiera też osobny grader – 23 mierzone reguły plus wizualnego sędziego, który ocenia historię, warsztat i wykończenie papieru. Jeśli chcesz oficjalną ocenę, po zakończeniu przebiegu sam uruchom grader/grade.sh na wynikach – poza folderem agenta.
Obejrzyj efekt
Brief prosi o projekt Blendera, nie o wideo. Dlatego w tym samym projekcie wysłaliśmy jedną wiadomość uzupełniającą z prośbą, by Gemini 4 wyeksportował sekwencję do MP4 z podglądem w przeglądarce.
Wrócił z sequence.mp4 – 288 klatek, 640×480 H.264, 3 MB – oraz preview.html. Strona podglądu odtwarza sekwencję z licznikiem klatek na żywo, przeskokami jednym kliknięciem do każdego z czterech ujęć i pełnym storyboardem pod spodem.
Co ustawilibyśmy inaczej
Nasz folder projektu zawierał więcej, niż agent potrzebował. Obok PROMPT.md i agent_environment/ znalazły się też README.md zadania, jego grader/ oraz reference_runs/ z wcześniejszych modeli.
To ma znaczenie. Skrypt kontrolny Gemini 4 sprawdza nadruk kartki pod kątem limitu rozciągnięcia 5%. Tej liczby nie ma w prompcie – jest w README, obok notatek o tym, jak zawodziły wcześniejsze przebiegi. Skrypty Gemini 4 nigdy nie czytały gradera ani przebiegów referencyjnych, ale można rozsądnie założyć, że README wpłynęło na jego cele.
Traktuj więc nasz przebieg jako pokaz, a nie wynik benchmarku. Dla uczciwego testu daj agentowi dokładnie dwie rzeczy – PROMPT.md i agent_environment/ – a grader trzymaj tam, gdzie go nie zobaczy.
Dopasuj to do siebie
Ten sam schemat działa dla każdej sceny w Blenderze:
- Zamień gust na liczby. Kadrowanie, prędkości, odległości ostrzenia, kontakt. Mierzalne cele pozwalają agentowi sprawdzić się, zanim w ogóle naciśniesz play.
- Wyznacz mu korytarz. Kilka punktów kontrolnych w pliku JSON steruje akcją bez ręcznego ustawiania choćby jednej klatki kluczowej.
- Wymagaj prawdziwego przekazania. Spakowany, edytowalny
.blend, lista ujęć i storyboard. Dostajesz projekt, nad którym możesz dalej pracować – nie tylko render. - Pozwól mu weryfikować. Najlepszy moment naszego przebiegu: Gemini 4 zauważył, że zadrukowana strona kartki jest odwrócona od kamery – i poprawił to, zanim w ogóle to zobaczyliśmy.
Dwanaście sekund animacji oznaczało kiedyś całe popołudnie w viewporcie. Teraz to jeden prompt – i projekt, który możesz otworzyć, dopracować i uczynić swoim.
Podziękowania: stworzone z Gemini 4 i Eigent. Scena: „Cozy Kitchen” (ekran startowy Blendera 3.5) autorstwa Nicole Moreny, CC-BY-SA – scena pochodna i rendery zachowują uznanie autorstwa i warunki ShareAlike. Brief i dane zadania: oryginalna praca Eigent. Muzyka: „Quirk n Twerk” – The Soundlings (YouTube Audio Library).



