threejs.md

$ cat threejs.md

Vibecoding Three.js v roce 2025: když AI narazila na zeď 3D

Na podzim 2025 jela AI vlna naplno, ale všichni v ní plavali stejným směrem. Vibecodily se CRUD aplikace, landing pages, skripty, co slepí dvě API dohromady. Samé vyřešené problémy, kterých model za trénink spolykal milion. Na co skoro nikdo AI nepouštěl, bylo 3D v prohlížeči. Three.js, WebGL, shadery. To se pořád bralo jako území specialistů, věc, která se v týmu hodí tomu jednomu, co „dělá grafiku".

Já do toho šel i tak. Někdy v říjnu 2025 jsem si postavil interaktivní 3D vizualizér LED stěn, nástroj, ve kterém rozložíš panely v prostoru a rovnou vidíš výsledek. Ten projekt má vlastní příběh a tenhle článek není o něm. Je o tom, jaké to bylo vibecodit 3D v době, kdy zrovna 3D šlo modelům ze všeho nejhůř.

V čem byly modely fakt dobré

Nejdřív férově, protože poctivý závěr nezní „AI neumí 3D". Uměla toho hodně a rychle.

Boilerplate byl dar. Scéna, kamera, renderer, resize handler, animační smyčka, orbit controls. Ten ceremoniál je pokaždé stejný a modely ho uměly nazpaměť. Popsal jsem, co chci, a za pár vteřin stál funkční základ. Totéž všechno okolo: UI panely, stav, import souborů, React okolo canvasu. Co není doopravdy 3D, ale jen obyčejný software, jelo stejně hladce jako každý jiný vibecoding.

A seděl jim i slovník. Zeptáš se, jak vykreslit pár tisíc stejných meshů, aniž ti klekne framerate, a dostaneš InstancedMesh i s rozumným vysvětlením. API Three.js je dobře zdokumentované a v trénovacích datech ho je dost, takže na otázky typu „kterou metodu mám zavolat" byl model rychlejší manuál než manuál.

Kde to padlo: matika nelže

A pak chceš něco, kde model musí doopravdy přemýšlet o prostoru. A je zle.

Takže ho vodíš

Režim, který doopravdy fungoval, nebyl „popiš to a vezmi, co vypadne". Bylo to vodění za ruku. Rutinu jsem nechal na modelu a u všeho prostorového jsem držel volant sám. Smyčka vypadala takhle: řekni si o malý kousek, spusť ho, podívej se na výsledek a vrať přesně to, co je špatně. Fyzikálně. „Panel je zády ke kameře." „Je natočený, horní hrana ukazuje doleva." Konkrétní vizuální opravy, žádné „oprav tu matiku".

Druhý trik na přežití: dávat modelu malé porce. Nechtít „rozložení zakřivené stěny", ale „pro tuhle pozici panelu vrať rotaci, která namíří jeho normálu do počátku". Tu jednu funkci ověřit izolovaně a jet dál. Čím menší prostorový krok, tím větší šance. Čím větší skok, tím sebevědoměji špatná odpověď.

A musel jsi toho umět dost, abys to poznal. Tuhle část hype přeskakuje. Model jsem mohl vodit jen proto, že umím scénu přečíst a vidím, když objekt sedí o fous vedle. Kdyby stejný nástroj v roce 2025 vibecodil někdo bez 3D intuice, vypustí do světa něco, co skoro sedí, potichu je to rozbité a on netuší proč. Já to poznám, protože jsem před skutečnými LED stěnami odstál na place dost hodin na to, abych věděl, kterým směrem má panel koukat.

Proč to stálo za to i tak

Bylo to drsné a šel bych do toho znovu. Protože i se vším voděním, přetahováním o matiku a shaderovou bídou zůstává čistý výsledek: jeden člověk postavil interaktivní 3D nástroj za zlomek času, který by na to potřeboval sám. Modely prostorové uvažování neuměly, ale smázly všechno okolo. A právě to „okolo" obvykle zabije side project dřív, než vůbec začne.

Hlubší pointa: dělat tohle na podzim 2025 znamenalo pracovat kousek za hranou, kde nářadí ještě nebylo pohodlné. Celá debata o AI kódování byla tehdy plochá, samý web a skripty. 3D byl kout, o kterém všichni předpokládali, že je na hraní moc těžký. Byl těžší. A přitom naprosto schůdný, pokud jsi byl ochotný dodat tu prostorovou představivost, která modelu chyběla.

Tam to zajímavé obvykle bývá: ne tam, kde už jsou modely dobré, ale o krok dál, kde ještě musíš přinést něco svého. Jestli ti v šuplíku leží 3D nápad, protože „tohle AI ještě pořádně neumí", tak přesně proto ho vytáhni.

zpět na blog