Obrázek prý řekne víc než tisíc slov. A co se pohyblivých obrázků týče, ty občas vydají za celou knihu. Proto si ukážeme, jakým způsobem je možné v OpenSCADu naprogramovaný model rozhýbat a vytvořit z něj animaci. To je praktické v případě, že chceme vytvořený model ukázat někomu, kdo nemá program, v němž by si ho mohl sám prohlédnout. Místo série obrázků lze vytvořit animaci, v níž se bude model například otáčet.

Ještě než se pustíme do konkrétního postupu, rádi bychom připomenuli, že v našem PrusaLabu pořádáme pravidelné přednášky o nejrůznějších tématech – mezi ně patří právě OpenSCAD. Pokud vás tento program zaujal, a chcete se naučit více, podívejte se na předchozí publikované články (Základy OpenSCADu a Parametrické modelování) nebo na web PrusaLabu, kde se dozvíte termíny budoucích přednášek. A nyní zpět k návodu.

Základní postup je následující:

  1. V OpenSCADu vytvoříme požadovaný model.
  2. Využijeme vestavěné schopnosti animace, abychom modelem automaticky otáčeli.
  3. Vyexportujeme z OpenSCADu jednotlivé snímky (frames) animace.
  4. Pomocí webové služby ezgif.com z řady snímků uděláme animovaný GIF nebo video.

Vytvoření a příprava modelu

Následující postup je možné použít pro jakýkoliv model. Já jsem pro tento příklad použil ukázkový model domečku, který si můžete stáhnout na mém GitHubu. Kompletní model vytvoří po zavolání modulu house() a vypadá takto:

Chceme-li vytvořit animaci spočívající v otáčení modelu kolem osy Z, je praktické model umístit tak, aby byl na ose Z centrovaný. Není to nezbytné, lze změnit střed otáčení, ale je to výrazně jednodušší. Upravíme tedy kód tak, aby model byl na středu souřadnicového systému:

offset = [-base_width / 2 - grass_offset, -base_depth / 2 - grass_offset];

translate(offset) house();

Vizuálně to bude vypadat takto:

Nyní si povšimněte stavového řádku OpenSCADu:

Viewport: translate = [4.10 2.57 15.25], rotate = [64.80 0.00 23.60], distance = 172.84

Tyto tři parametry se mění s tím, jak model přibližujeme, otáčíme s ním a celkově měníme pohled. Tyto hodnoty lze nastavit z OpenSCAD kódu jako speciální proměnné $vpr (viewport rotation) $vpt (viewport translate) a $vpd (viewport distance).

Přidejte do kódu tyto tři proměnné s hodnotami, které na vašem počítači (s ohledem na rozlišení a velikost okna OpenSCADu) vypadají dobře. Například:

$vpt = [4, 3, 15];

$vpr = [60, 0, 35];

$vpd = 180;

 

offset = [-base_width / 2 - grass_offset, -base_depth / 2 - grass_offset];

translate(offset) house();

Když vyrenderujete náhled, nastaví se zobrazení do takto určené polohy. Se zobrazením můžete hýbat jako obvykle, ale jakmile stisknete F5, vrátí se zpět do nastavené polohy.

Nyní zkuste měnit poslední hodnotu vektoru $vpr – v kódu výše má hodnotu 30. Jde o úhel natočení v ose Z a může nabývat hodnoty 0-360.

Animace v OpenSCADu

V menu OpenSCADu zvolte View > Animate. Nad panelem nástrojů ve spodní části se objeví nový panel, s textovými poli označenými Time, FPS a Steps. Pole Time nás nezajímá – to v průběhu animace ukazuje čas. Pole FPS určuje počet snímků za sekundu a určuje rychlost animace v náhledu. Pole Steps určuje počet kroků animace.

Animace v OpenSCADu probíhá tak, že se FPS-krát za sekundu aktualizuje náhled a hodnota speciální proměnné $t se postupně zvyšuje od 0 k 1 s krokem 1/Steps.

Modifikujte vektor $vpr tak, aby poslední prvek (hodnota rotace v ose Z) postupně nabýval hodnoty od 0 do 360 po násobení koeficientem $t:

$vpt = [4, 3, 15];

$vpr = [60, 0, 360 * $t];

$vpd = 180;

 

offset = [-base_width / 2 - grass_offset, -base_depth / 2 - grass_offset];

translate(offset) house();

 

Do pole FPS zadejte 30 a do pole Steps zadejte 360. Tím zařídíte, že model bude rotovat po kroku jeden stupeň a to rychlostí 30 polí za sekundu – jedna kompletní otáčka tedy bude trvat 12 sekund.

Export do GIFu nebo videa

Rotaci nyní vidíte v náhledu v okně OpenSCADu. Ale naším cílem bylo přinést pohled na 3D model někomu, kdo OpenSCAD vůbec nemá, jako animovaný GIF nebo video. Máte-li k tomu patřičné vybavení, můžete video jednoduše vytvořit pomocí programu pro záznam obsahu obrazovky Gifcam a článek pro vás končí.

Nemáte-li takový program k dispozici, můžete jednotlivá pole animace vyexportovat. Stačí zaškrtnout pole Dump Pictures vedle textových polí. Rotace se zpomalí, protože OpenSCAD začne ukládat obrázky na disk. Vyčkejte, dokud neproběhne jedna úplná otáčka. Pak se zaškrtnutí pole samo zruší. Ve složce, v níž je uložen .scad soubor vám program vytvoří soubory frame00000.png až frame00359.png. Ty tvoří naši animaci.

Vytvořit z nich video nebo animovaný GIF můžete mnoha různými programy nebo službami. Já používám službu ezgif.com, protože je jednoduchá, zdarma a nevyžaduje instalaci žádného software, vše běží ve webovém prohlížeči.

Na adrese https://ezgif.com/maker nahrajte PNG soubory. Pokud si chcete usnadnit život, můžete PNG soubory před uploadem zazipovat a místo 360 souborů nahrát jeden ZIP archiv. Vyberte jej (nebo jednotlivá pole) a klepněte na tlačítko Upload and make a GIF!

Na následující stránce můžete upravit pořadí snímků a rychlost animace. Ta se zde zadává jako prodleva mezi jednotlivými rámci v setinách sekundy. Chcete-li zachovat přibližně rychlost 30 fps, zadejte v sekci „GIF options“ do pole Delay time číslo 3. Když už budete v tom, zaškrtněte use global colormap – u obrázků z OpenSCADu to obvykle vede k menší velikosti souboru. Poté klepněte na Make a GIF! a chvíli vyčkejte. Za chvíli se pod tlačítkem objeví váš animovaný GIF.

Služba EZGIF nabízí možnosti vytvořený GIF dále upravovat, oříznout, optimalizovat atd. Výsledek se vždy objeví pod stávajícím obrázkem (původní není nijak modifikován), na což pamatujte zejména na menších rozlišeních.

Místo animovaného GIFu lze vytvořit i video, které má tu výhodu, že je vzhledem k použitému typu komprese objemově menší. Pokud chcete vytvořit z animovaného GIFu video, klepněte ve stavovém řádku služby EZGIF na modré tlačítko Convert a pak zvolte to Video. Budete si moci stáhnout animaci jako MP4 (H.264) video.

Možnost animace 3D modelu se hodí, když jej chcete zahrnout do videa, nebo třeba sdílet na sociálních sítích. V článku popsaný postup je jednoduchý a snadno realizovatelný bez nutnosti instalovat speciální software.

Použitý mechanismus můžete využít i k mnohem složitějším animacím, než jenom k prosté rotaci. Proměnnou $t můžete využít zcela libovolně a místo změny pohledu můžete měnit přímo model samotný.