====== Možnosti propojení AI s Blenderem ======
//Vytvořeno: **22.7.2026** | Aktualizováno: **~~LASTMOD~~**//
> **⚠ ROZPRACOVÁNO:** Tento článek zatím nebyl prakticky otestován. Ověřené jsou níže označené principy vycházející z dokumentace a citovaných příspěvků; konkrétní spolehlivost, rychlost a kvalitu jednotlivých variant má teprve zjistit testovací plán. Uvedené ukázky proto nejdřív zkoušej na kopii souboru bez přístupu k citlivým datům.
Propojení AI s Blenderem lze řešit ovládáním běžného grafického rozhraní nebo integrační vrstvou nad Blender Python API. Pracovní hypotézou je hybrid: běžné změny provádět strukturovanými nástroji s přesně definovanými parametry a vizuální kontrolu zapojovat tam, kde samotná data nepopisují výsledný vzhled.
===== Stav ověření =====
**Ověřené principy:**
* CUA neboli computer-using agent pracuje s grafickým rozhraním a vizuálním stavem obrazovky.
* ''bpy'' je in-process řídicí API uvnitř Blenderu, nikoli samostatný integrační kanál pro AI. AI potřebuje způsob, jak kód do Blenderu předat a spustit, například add-on, launcher, socket, API, MCP nebo zadání přes GUI.
* MCP nebo vlastní bridge obvykle stojí nad ''bpy'' a může AI zpřístupnit strukturované operace a stav scény bez klikání podle souřadnic.
* Dlouhý blokující skript může zadržet obsluhu událostí a překreslení viewportu až do svého dokončení. Krátké samostatné kroky nebo krátké callbacky plánované timerem mohou mezi změnami vracet řízení Blenderu.
**Zatím neověřeno:**
* která varianta je v konkrétním prostředí nejrychlejší a nejspolehlivější;
* jak často bude pro daný typ práce potřeba vizuální preview;
* zda zvolený MCP server, model a verze Blenderu vytvoří očekávaný výsledek bez ručních oprav.
===== Co skutečně dokládá původní ukázka =====
[[https://x.com/evayzh/status/2075374512401711203|Originální příspěvek Evy Zhang]] uvádí ''GPT-Sol'', CUA a nezrychlené video. V klipu je vidět Blender ''4.5.4 LTS'', soubor ''Slop_Zoo_Cannon.blend'' a již rozpracovaná scéna, takže nejde o důkaz vytvoření celé scény od nuly.
[[https://x.com/kimmonismus/status/2075482486901969066|Navazující příspěvek uživatele Chubby]] spekuloval o rychlosti ''750 TPS''. [[https://x.com/mckbrando/status/2075442660047814761|Brandon McKinzie]] údaj opravil a uvedl ''GPT-5.6 Sol'' v režimech ''Ultra'' a ''Fast mode'', GUI přes CUA a žádné MCP ani ''bpy''. [[https://developers.openai.com/codex/agent-configuration/speed|Dokumentace Fast mode]] hodnotu ''750 TPS'' pro ukázku nepotvrzuje a [[https://developers.openai.com/codex/models|přehled modelů Codex]] popisuje ''Ultra'' jako režim využívající subagenty, ne jako samostatný model.
===== Stručné srovnání možností =====
^ Varianta ^ Jak ovládá Blender ^ Zpětná vazba pro AI ^ Silná stránka ^ Hlavní omezení ^
| CUA / Computer Use | Computer-use runtime provádí myš, klávesnici a běžné GUI | Screenshoty a stav rozhraní | Nevyžaduje integraci specifickou pro Blender | Citlivost na rozložení oken, kontext, výběr a režim editoru |
| Jednorázový ''bpy'' skript – deterministický baseline | Launcher spustí v Blenderu jeden vygenerovaný skript | Výstup skriptu, data scény a log | Přesně definované parametry a přímé řízení scény | ''bpy'' samo neřeší předání kódu; skript může blokovat Blender |
| MCP / API / socket bridge | Server překládá strukturované nástroje obvykle na ''bpy'' | Strukturovaný stav, chyby a volitelné náhledy | Atomické operace a přesně definované parametry | Vlastnosti závisí na konkrétní implementaci serveru |
| Hybridní pracovní hypotéza | Strukturované kroky doplněné cíleným preview nebo CUA | Data scény i cílené obrázky | Kombinuje strojovou kontrolu s kontrolou vzhledu | Přínos musí potvrdit test; složitější orchestrace |
===== 1. CUA / Computer Use přes GUI =====
[[https://developers.openai.com/codex/computer-use|Computer Use v Codexu]] umožňuje computer-using agentovi vidět a ovládat grafickou aplikaci. Nevyžaduje integraci specifickou pro Blender, ale vyžaduje computer-use runtime, pořizování screenshotů a vykonávání vrácených akcí myši nebo klávesnice. Agent proto pracuje se stejnými okny, panely, výběry, režimy a zkratkami jako člověk.
Také [[https://developers.openai.com/api/docs/guides/tools-computer-use|OpenAI Computer Use API]] zůstává CUA. Model dostane screenshot, vrátí akce pro myš nebo klávesnici, prostředí je provede a pošle nový screenshot. Použití API tedy screenshoty neodstraňuje a nevytváří z Blenderu strukturované doménové API; pouze programově řídí vizuální smyčku.
CUA dává smysl, když:
* chybí jiné rozhraní nebo je potřeba ověřit skutečný stav GUI;
* operace závisí na konkrétním editoru, dialogu či add-onu;
* cílem je otestovat uživatelský workflow stejně jako člověk.
Nevýhodou je křehkost vůči změně rozlišení, layoutu, aktivního okna, výběru objektu a režimu ''Object/Edit''. Každý screenshot navíc přenáší mnoho informací, které by strukturovaný dotaz na scénu vyjádřil přesněji.
===== 2. Přímé Blender Python API bpy =====
[[https://docs.blender.org/api/current/|Blender Python API]] zpřístupňuje data přes ''bpy.data'', aktuální kontext přes ''bpy.context'' a operace přes ''bpy.ops''. Jde o in-process API běžící uvnitř Blenderu, nikoli o síťové nebo agentní rozhraní. AI proto potřebuje integrační kanál, který kód do Blenderu předá a spustí: například pevný launcher, add-on, socket, API, MCP nebo práci přes Python Console či Text Editor pomocí GUI.
Skript může běžet v otevřeném Blenderu a měnit právě zobrazenou scénu; použití ''bpy'' tedy neznamená headless režim. MCP/API bridge obvykle používá ''bpy'' jako řídicí vrstvu uvnitř Blenderu a nad ním definuje transport, nástroje a návratové hodnoty.
Tady je minimální příklad změny scény. Jde o neotestovanou ukázku pro kopii pracovního souboru:
import bpy
bpy.ops.mesh.primitive_cube_add(location=(0, 0, 1))
obj = bpy.context.active_object
obj.name = "AI_Test_Cube"
obj.scale = (2, 1, 0.5)
bpy.context.view_layer.update()
Volání ''bpy.context.view_layer.update()'' aktualizuje dependency graph pro danou view layer, ale nevynutí překreslení viewportu. Pokud jeden dlouhý skript drží hlavní vlákno, Blender nemusí během jeho běhu zpracovat události a překreslit rozhraní. Změny dat už mohou být provedené, ale ve viewportu se projeví až po návratu skriptu.
Průběžný výsledek lze řešit dvěma způsoby:
* rozdělit práci na jednotlivá volání nástrojů, mezi nimiž Blender znovu obslouží události;
* registrovat krátký callback přes ''bpy.app.timers'', který provede jeden krok, vrátí řízení a naplánuje další běh.
Princip krokování timerem může vypadat takto:
import bpy
state = {"object": None}
def add_cube():
bpy.ops.mesh.primitive_cube_add(location=(0, 0, 0))
state["object"] = bpy.context.active_object
def move_cube():
obj = state["object"]
if obj is None:
raise RuntimeError("Cube was not created")
obj.location = (0, 0, 2)
steps = iter([add_cube, move_cube])
def run_next_step():
try:
next(steps)()
except StopIteration:
return None
return 0.5
bpy.app.timers.register(run_next_step)
Každý callback musí zůstat krátký. Timer není řešení pro dlouhou blokující operaci uvnitř jednoho callbacku a Blender Python API se nemá bez rozmyslu volat z vedlejších Python vláken.
===== 3. Blender MCP nebo vlastní API/socket bridge =====
[[https://github.com/ahujasid/blender-mcp|Komunitní BlenderMCP]] používá add-on se socket serverem a samostatný MCP server. Nabízí čtení stavu scény, manipulaci s objekty, screenshot viewportu a také spuštění Python kódu.
[[https://www.blender.org/lab/mcp-server/|Experimentální MCP Server z Blender Lab]] poskytuje rozhraní nad Blender Python API a aktuálně vyžaduje Blender ''5.1'' nebo novější. Nejde o vestavěné připojení Blenderu k LLM: je potřeba add-on, LLM klient a MCP server. Dokumentace zároveň varuje, že LLM generovaný kód se spouští bez ochranných guardů.
Vlastní bridge může být bezpečnější a předvídatelnější, pokud místo obecného ''execute_python'' nabídne malou sadu validovaných nástrojů, například:
list_scene()
get_object(name)
create_primitive(type, name, location)
set_transform(name, location, rotation, scale)
duplicate_object(source, target, offset)
render_preview(camera, width, height)
save_checkpoint(path)
Validace parametrů, auditní log, oprávnění ani bezpečné oddělení destruktivních akcí nejsou vlastností MCP samotného. Musí je implementovat konkrétní server. Nástroje mohou vracet strukturovaný stav, jednoznačné chyby a identifikátory změněných objektů, ale je potřeba ověřit skutečné chování vybraného serveru. Pokud nástroj pouze přijme libovolný Python a spustí ho, jde z hlediska řízení scény o ''bpy'' přenesené přes MCP, nikoli o omezenou nástrojovou vrstvu.
===== 4. Pracovní hypotéza: hybrid =====
Hypotéza pro testování je používat strukturované nástroje pro přesně popsané změny a cílené preview pro kontrolu vzhledu. Agent načte stav, provede atomický krok, ověří dotčená data a po změně kompozice, materiálu, světla nebo kamery vytvoří náhled. CUA zůstává fallbackem pro dialogy a operace dostupné jen přes GUI. Teprve benchmark a praktické úlohy mohou potvrdit, zda dodatečná orchestrace přináší výhodu.
===== Kdy AI potřebuje obraz a kdy stačí data =====
^ Úloha ^ Strukturovaný stav stačí? ^ Proč ^
| Názvy objektů, kolekce a hierarchie | Ano | Lze je porovnat přesně bez obrazu |
| Poloha, rotace, měřítko a rozměry | Ano | Číselné hodnoty jsou jednoznačné |
| Přiřazení materiálů a modifikátorů | Většinou ano | Datové vazby lze načíst přímo; vzhled je samostatná otázka |
| Počet objektů, polygonů nebo chybějící data | Ano | Jde o strojově kontrolovatelné vlastnosti |
| Silueta, proporce a vzájemné zakrytí | Ne | Kvalita závisí na pohledu a kompozici |
| Kamera, světlo, stíny a výsledný materiál | Ne | Rozhodující je výsledný obraz nebo render |
| Čitelnost uzlového grafu v editoru | Částečně | Zapojení lze číst z dat, ale layout a překryvy vyžadují obraz |
| Stav dialogu, aktivní panel nebo problém GUI | Ne | Jde o vizuální stav aplikace, ne pouze o scénu |
Vizuální kontrola nemá znamenat screenshot po každém číselném posunu. Praktické kontrolní body jsou po vytvoření hlavních objemů, nastavení kamery, materiálů, osvětlení a před finálním uložením nebo renderem.
===== Praktické zkratky Blenderu pro CUA =====
Zkratky jsou kontextové. Před jejich použitím musí být aktivní správný editor, typicky ''3D Viewport'', správný objekt a správný režim.
* ''Shift+A'' — otevře nabídku pro přidání objektu.
* ''G'' — přesun vybraného objektu nebo prvků.
* ''R'' — rotace.
* ''S'' — změna měřítka.
* ''X'', ''Y'', ''Z'' — omezení transformace na zvolenou osu.
* číselná hodnota a ''Enter'' — přesná hodnota a potvrzení transformace.
* ''Shift+D'' — duplikace výběru a okamžitý přesun kopie.
* ''Tab'' — přepnutí mezi ''Object Mode'' a ''Edit Mode''.
* ''Esc'' — zrušení právě probíhající operace; nenahrazuje vrácení již potvrzené změny.
Krátké sekvence:
G Z 2 Enter # posun o 2 jednotky po ose Z
R Z 90 Enter # rotace o 90 stupňů kolem osy Z
S X 2 Enter # dvojnásobné měřítko jen po ose X
Shift+D X 3 Enter # duplikace a posun kopie o 3 jednotky po ose X
Tab # vstup do Edit Mode; další Tab návrat do Object Mode
G Z Esc # zahájený posun zrušit před potvrzením
Pro přidání objektu lze začít sekvencí ''Shift+A'' a následně z nabídky vybrat typ objektu. CUA musí po otevření nabídky zkontrolovat screenshot, protože další volba závisí na aktivním editoru, verzi Blenderu a keymapě.
===== Testovací plán: CUA vs. bpy baseline vs. krokové nástroje =====
Cílem je férové end-to-end porovnání tří agentních cest. U všech metod se měření spustí těsně před předáním stejného uživatelského promptu a skončí až po dokončení a uložení úkolu. Správnost následně určí stejný neměřený inspektor.
==== Společný prompt a očekávaný výsledek ====
Každý běh začne z nové kopie stejného výchozího souboru s objekty ''Cube'', ''Camera'' a ''Light''. Všem metodám se předá stejný prompt:
Přejmenuj Cube na AI_Test_Cube_A. Nastav polohu na (0, 0, 1),
rotaci kolem osy Z na 30 stupňů a měřítko na (2, 1, 0.5).
Objekt duplikuj jako AI_Test_Cube_B a kopii umísti na (3, 0, 1).
Camera a Light ponech beze změny. Pořiď finální preview viewportu
a výsledek ulož pod názvem určeným pro tento běh.
Metodické rozdíly se nastaví v dostupných nástrojích a pevném systémovém zadání, ne změnou uživatelského promptu.
==== Fixní prostředí a pořadí běhů ====
Pro všechny metody zůstanou stejné:
* počítač, operační systém, verze Blenderu a výchozí ''.blend'' soubor;
* model, reasoning režim, nastavení ''Fast mode'' a kontext předaný modelu;
* workspace, keymapa, aktivní editor ''3D Viewport'', poloha a přiblížení viewportu;
* shading, velikost okna a rozlišení screenshotů i finálního preview;
* počáteční režim ''Object Mode'', aktivní a jediný vybraný objekt ''Cube''.
Před měřením proběhne pro každou metodu jeden nezapočítaný zahřívací běh. Potom každá metoda absolvuje pět nezávislých měřených běhů a jejich pořadí se pro každé opakování náhodně promíchá.
==== Hranice měření ====
- Připravit čistou kopii výchozího souboru a fixní prostředí.
- Spustit časomíru bezprostředně před předáním společného promptu modelu.
- Zahrnout plánování modelu, generování výstupu, všechny akce nebo tool calls, preview a uložení.
- Zastavit časomíru, když metoda oznámí dokončení a vytvoří výstupní soubor.
- Teprve potom spustit nezávislý inspektor; jeho čas se do výkonu metody nezapočítá.
==== Metoda A: CUA ====
* Povolit pouze computer-use runtime, screenshoty a provádění akcí myši nebo klávesnice.
* Zakázat MCP, Python Console, Text Editor a spuštění ''bpy'' kódu.
* Použít běžné GUI a stejné fixní rozlišení screenshotů v každém běhu.
==== Metoda B: jednorázový bpy skript – deterministický baseline ====
* Během měřeného běhu model na základě společného promptu vygeneruje právě jeden ''bpy'' skript.
* Pevně daný launcher beze změn převezme výstup modelu a spustí skript v otevřeném Blenderu.
* Launcher nesmí doplňovat plán, opravovat kód ani provádět další sémantické kroky.
* Generování skriptu i jeho spuštění patří do měřeného end-to-end času.
==== Metoda C: krokové MCP/API nástroje ====
* Model dostane atomické nástroje pro přejmenování, transformaci, duplikaci, preview a uložení.
* Zakázat obecné spuštění libovolného Python kódu; jinak by metoda měřila jednorázový ''bpy'' skript přes jiný transport.
* Počet a obsah návratových hodnot musí zůstat ve všech bězích stejné verze serveru neměnný.
==== Nezávislý inspektor správnosti ====
Po každém měřeném běhu se spustí přesně stejný neměřený ''bpy'' validační skript. Není dostupný agentovi během práce a jeho čas ani tokeny se nepřičítají k testované metodě. Inspektor načte uložený soubor a vrátí ''PASS/FAIL'' s konkrétními odchylkami.
Inspektor ověří:
* existenci právě objektů ''AI_Test_Cube_A'', ''AI_Test_Cube_B'', ''Camera'' a ''Light'' bez dalších objektů;
* výslednou transformační matici obou kostek proti očekávané matici po složení polohy, rotace a měřítka;
* shodu každého prvku matice s absolutní tolerancí ''1e-6'';
* polohu ''AI_Test_Cube_A'' rovnou ''(0, 0, 1)'' a ''AI_Test_Cube_B'' rovnou ''(3, 0, 1)'';
* nezměněnou transformační matici a datablock hodnoty objektů ''Camera'' a ''Light'' proti výchozímu souboru;
* existenci výstupního souboru a finálního preview.
==== Metriky ====
^ Metrika ^ Jak ji zaznamenat ^
| Správnost výsledku | Výhradně výsledek stejného neměřeného ''bpy'' inspektoru |
| End-to-end čas | Od předání společného promptu po oznámení dokončení a uložení |
| Úspěch bez zásahu člověka | ''PASS/FAIL''; ruční zásah znamená neúspěšný běh |
| Interakce | Modelové tahy, tool calls, GUI akce, retry a chybové stavy |
| Textové využití | Vstupní a výstupní tokeny, pokud je poskytovatel zpřístupňuje |
| Obrazové vstupy | Počet, rozlišení a případně účtované obrazové tokeny screenshotů a preview |
| Náklady | Spotřebované kredity nebo API cena konkrétního běhu bez dosazování ceníku před měřením |
| Nezamýšlené změny | Odchylky objektů a souborů hlášené inspektorem nebo sandboxem |
| Opakovatelnost | Úspěšnost a rozptyl času, interakcí, tokenů a nákladů mezi pěti běhy |
| Průběžná viditelnost | Samostatné pozorování, zda a kdy se viewport překresloval během běhu |
Průběžná viditelnost změn se zaznamená odděleně a nebude součástí rychlostního pořadí. ''view_layer.update()'' aktualizuje dependency graph, takže samo o sobě nedokazuje průběžné překreslení viewportu.
==== Kritéria vyhodnocení ====
- Běh je úspěšný pouze při výsledku ''PASS'' bez ručního zásahu.
- Za prakticky spolehlivou se v tomto malém testu považuje metoda s alespoň čtyřmi úspěšnými běhy z pěti.
- Čas, tokeny a náklady se porovnají mediánem pouze úspěšných běhů.
- Chybné výběry, retry a nadbytečné screenshoty nebo tool calls se vyhodnotí z logu interakcí.
- Hybrid se otestuje až jako samostatná pracovní hypotéza se stejným promptem, prostředím, měřením a inspektorem.
Do článku se výsledky doplní až po provedení testu. Bez naměřených dat nelze určit vítěze.
===== Bezpečnost a provozní doporučení =====
* Testovat na kopii ''.blend'' souboru a před destruktivními kroky ukládat checkpoint.
* CUA provozovat v omezeném uživatelském účtu nebo izolovaném prostředí a nenechávat na obrazovce citlivá data.
* U bridge ověřit skutečnou implementaci oprávnění, validace a auditu; samotný protokol MCP tyto vlastnosti nezajišťuje.
===== Zdroje =====
* [[https://x.com/evayzh/status/2075374512401711203|Eva Zhang – GPT-Sol, CUA a nezrychlené video z Blenderu]]
* [[https://x.com/kimmonismus/status/2075482486901969066|Chubby – příspěvek se spekulací o 750 TPS]]
* [[https://x.com/mckbrando/status/2075442660047814761|Brandon McKinzie – upřesnění konfigurace a způsobu ovládání]]
* [[https://developers.openai.com/codex/computer-use|OpenAI Codex – Computer Use]]
* [[https://developers.openai.com/api/docs/guides/tools-computer-use|OpenAI API – Computer use]]
* [[https://developers.openai.com/codex/agent-configuration/speed|OpenAI Codex – Fast mode]]
* [[https://developers.openai.com/codex/models|OpenAI Codex – modely a režim Ultra]]
* [[https://docs.blender.org/api/current/|Blender Python API]]
* [[https://github.com/ahujasid/blender-mcp|Komunitní BlenderMCP]]
* [[https://www.blender.org/lab/mcp-server/|Blender Lab – MCP Server]]