12. 3D grafika 12.1
TROJROZMĚRNÁ GRAFIKA
Už i žáci na základní škole zvládnou práci s modelováním trojrozměrných objektů. Pro normální hodiny, kterých se účastní všechny typy žáků, je to poměrně obtížné téma. Nicméně v odpoledním kroužku máme s tímto tématem velmi dobré zkušenosti. Kroužek je určen jednak pro počítačové fanatiky, kteří jsou ochotni chopit se takové výzvy, a jednak pro děti, které se věnují výtvarným činnostem. V podstatě platí, že během tří měsíců vykrystalizují dvě skupiny. Jedni budou do trojrozměrné grafiky fandové, a druzí s tímto tématem skončí. Na základní škole se skutečně nejedná o téma „pro všechny“. Na druhou stranu – ti, kteří vytrvají, vám budou dostatečně velkou odměnou. Po půlroce vaší trpělivé práce se dostanete do fáze, kdy nebudete stačit zírat na to, co je schopen vytvořit žák sedmé třídy.
Poznámka: I když jsme právě uvedli, že nepovažujeme za dobré zařadit tohle téma do normální výuky, jako několikahodinovou ukázku bychom to v hodinách doporučovali. Důvod je prostý. V ostatních hodinách výuky máme poměrně málo příležitostí rozvíjet prostorovou představivost. Pro děti je zpočátku velmi obtížné pracovat „v prostoru“, určit, co je před a co za, rozhodnout, jak bude objekt vypadat v pohledu shora, když takto vypadá v bočním pohledu… Pár cvičení typu „Sestavte robota z těchto dílů“ jim dá v tomto směru obrovskou zkušenost. Podmínkou pro náročnější práci je malý počet dětí ve skupině. Zvláště zpočátku je například 10 dětí maximum. Při větším počtu dětí se stává, že všichni čekají na jednoho, který musí něco spravit, udělat, vymodelovat, aby mohl pokračovat dále.
127
12.2
Programy pro 3D grafiku
Aplikací pro tvorbu 3D tedy trojrozměrné grafiky na PC je poměrně hodně. Některé byly zmíněny již výše. Mnoho profesionálních aplikací jako třeba 3D studio MAX mají ale také velmi vysokou pořizovací cenu. Ale i v tomto sektoru lze nalézt vhodnější zástupce. Při používání 3D grafiky postupujeme obecně tímto způsobem. Nejprve scénu vymodelujeme na základě různých modelovacích technik ze základních tvarů. Objektům ve scéně nastavíme materiál – tedy barvu a vlastnosti povrchu jako je odrazivost, hrubost, průhlednost apod. Případně přiřadíme textury. Texturování je nanesení na povrch určitého vzoru aby objekt vypadal reálně jako kdyby byl ze dřeva, mramoru, nebo jiného materiálu. V další fázi je pro dosažení realističnosti scénu osvětlit vhodným množstvím světel s parametry a postavením jaké nám vyhovuje. Ve scéně je pak většinou umístěna kamera ze které bude obraz snímán. Finálním krokem je tzv. vyrenderování výsledného obrazu. Tedy teprve pak vidíme scénu podle nastavení v co možná nejfotorealističtější grafice. Grafické programy často umožňují vytvořit renderováním nejen obrázek, ale i film. Můžeme objekty animovat a ukládat sekvenci snímků v podobě videosouboru a tak si vytvořit vlastní 3D animované video. Navíc některé aplikace umožňují práci i s některým ze skriptovacích či programovacích jazyků a je tak možné vytvořit třeba v jedné aplikaci i celou počítačovou hru. To jsou však již pokročilejší funkce a nejprve je nutné zvládnout základy modelování. Důležitou poznámkou je že 3D aplikace a renderování je náročné na výkon počítače a HW vybavení. Je tedy možné že složitější scény se budou vytvářet na slabších strojích poměrně složitě.
12.3
BLENDER
(částečně převzato z www.blender3d.cz) Blender je multiplatformní open source aplikace zaměřená na vytváření 3D modelů, animací, rendering, postprodukční činnost a v neposlední řadě interaktivních aplikací. Multiplatformní znamená, že Blender spustíte nejen v systému Windows, ale i pod Linuxem, na Mac OS X a mnoha dalších. Open source znamená, že je program nejen zcela zdarma a to i pro komerční využití, ale také že si můžete stáhnout kompletní zdrojové kódy, zkompilovat je
128
na vlastní sestavě pro optimalizaci výkonu, libovolně je upravovat a případně se aktivně podílet na dalším vývoji Blenderu. Nové verze jsou veřejnosti přestavovány většinou v horizontu 3-4 měsíců a kromě řady drobných vylepšení uvádí také nové nástroje a funkce sledující aktuální vývoj potřeb svých uživatelů i uživatelů 3D software obecně. Kromě nástrojů pro modelovaní, animaci a renderování obsahuje Blender také GameEngine, ve kterém je možné vytvářet interaktivní prezentace, průchozí vizualizace např. interiérů domů a počítačové hry, vše přímo v Blenderu pomocí interního grafického editoru s možností doplnění kódem v objektově orientovaném programovacím jazyce Python (www.python.org). Vedle interního hybridního scanline/raytrace rendereru nabízí Blender také přímý výstup v externím rendereru Yafray, který je rovněž k dispozici zcela zdarma. Blender lze doplnit celou řadou rozšíření ve formě Python skriptů, v nichž existují i velmi složité pluginy např. pro generování stromů, trávy, zvířecí srsti apod., či importní a exportní filtry pro komunikaci s jinými aplikacemi. Další rozšíření jsou možná použitím materiálových či sekvenčních (postprodukčních) pluginů, dodávaných ve formě knihovních souborů (např. .dll) 12.3.1 Interface Interface Blenderu je poměrně originálně řešené a zejména pro uživatele přecházející z jiných 3D aplikací může působit poněkud zmateně. Velmi rychle však proniknete do jeho filosofie a zjistíte, že je neuvěřitelně efektivní, intuitivní a umožní vám tvořit vaše modely a animace rychle, přirozeně a bez nutnosti intenzivně přemýšlet, kde najít jakou funkci skrytou v několikátém submenu. Hlavní atributy interface Blenderu jsou: •
plně přenastavitelná pracovní plocha
•
rozdělení do oken pro modelování, animační křivky, outliner, nelineární videostřih, editování UV map, animování postav (pose editor, NLA editor), souborový manažer atd.
•
databázový systém umožňující optimální management scény, instance a dynamické propojování projektů v různých souborech
•
lokalizace do několika jazyků, včetně možnosti zapnout co vše má být lokalizováno a co ponecháno v angličtině (např. tlačítko anglicky, vysvětlující popisek v jiném jazyce) a možnosti vytvářet si vlastní jazykové sady
•
zabudovaný textový editor sloužící k poznámkám a programování Python skriptů
129
•
12.3.2 •
interface je stejný na všech platformách Modelování práce s polygony, Nurbs plochami, bezier a B-spline křivkami, metabally, vektorové fonty (TrueType, PostScript, OpenType)
•
Catmull-Clark povrchy (ekvivalent meshsmooth) s editovatelnou ostrostí/oblostí hran
•
editování polygonálního meshe s volitelnou selekcí vertexů, hran nebo faců
•
boolens operace pro mesh
•
editovací funkce jako extrude, bevel, cut, spin, screw, warp, subdivide, noise, smooth…seznam pokračuje a s novými verzemi se rozšiřuje
•
12.3.3 •
možnost doprogramovat si pomocí Pythonu modelační nástroje dle potřeby Animace deformační armatury (kosti- skeletony) s dopřednou i inverzní kinematikou (FK, IK), autoskining a interaktivní nastavování vah deformačních skupin pomocí nástroje WeightPaint
•
několik typů constraints pro rigging
•
pose editor
•
editor nelineární animace (NLA) , automatizace posunu postavy ze zacyklenou animací chůze (walkcycle) podél definované cesty (path)
•
animace vertex keys a relative vertex keys (obdoba morph targets )s ovládacími posuvníky
•
particle efekty s deformátory podle větru, gravitace, mag. Přitažlivosti/odpuzování a detekcí kolizí
•
SoftBodies (např. simulace látek) s detekcí kolizí
•
animovatelná deformace lattice
•
podpora "motion curve" i tradičního key-frame editování
•
podpora zvuku a nástrojů pro synchronizaci zvuku a obrazu
•
možnost doprogramovat si pomocí Pythonu animační nástroje případně „řízené animace“ dle potřeby
130
12.3.4 •
Render možnost výběru z 2 renderovacích enginů- interní Blender renderer (hybridní scanline/raytrace) a přímý přístup k externímu raytraceru Yafray
•
oversampling, motion blur, postprodukční efekty (glow, zblur…) fields, nečtvercové pixely
•
environment mapy, halo, lens flare, mlha…
•
několik materiálových shaderů pro difusní a specularitní kanál- Lambert, Phong, Orean-nayar, Blinn, Toon, Minnaert, Wardlso
•
Edge rendering pro efekt vytažených okrajů (cartoon)
•
Procedurální textury
•
Ambient Occlusion
•
Radiosita
•
Množství exportních skriptů do dalších raytracerů, např. pro
Povray,
Renderman(RIB) Virtualight •
12.3.5
UV editor s několika metodami pro unwrap (např velmi efektivní LSCM)
•
Interaktivní aplikace- realtime 3D/tvorba her grafický editor pro naprogramování logiky aplikace/hry bez nutnosti programovat
•
detekce kolizí a simulace dynamiky
•
přístup do enginu přes Python skripty pro složitější logiku, umělou inteligenci apod.
•
podpora všech povrchových módu OpenGL, včetně průhlednosti, animovatelných reflexních map apod.
•
přehrávání her a interaktivních 3D aplikací bez kompilování a předpočítání
•
audio využívající SDL toolkit
•
multi-layering scén pro plovoucí interface
12.3.6 •
Soubory a podporované formáty všechna data ve scéně se ukládají do jediného souboru s příponou „.blend“
•
.blend formát podporuje kompresi, digitální podpisy, zakódování, dopřednou i zpětnou kompatibilitu a může být použit jako knihovna, do níž přistupujete z jiného souboru.
•
čte/zapisuje TGA, JPG, PNG, Iris (+ Zbuffer), SGI Movie, IFF, AVI and Quicktime GIF, TIFF, PSD, MOV
131
•
nativní podpora importu a exportu DXF formátu, Inventor a VRML souborů, přes python skripty je umožněn import/export do množství dalších formátů (OBJ, LWO, COB…), ty hlavní skripty jsou již součástí staženého Blenderu
•
vytvoření samospustitelných souborů (.exe) s interaktivními 3D aplikacemi, hrami apod., nebo je můžete přehrávat ve webovském prohlížeči s příšluným pluginem
12.3.7 •
Podporované platformy Windows 98, ME, 2000, XP
•
Mac OS X
•
Linux (i386)
•
Linux (PPC)
•
FreeBSD 5.3 (i386)
•
SGI Irix 6.5
•
Sun Solaris 2.8 (sparc)
12.4
Některé základní příkazy BLENDERu
F5
- stínování
F6
- textury
F7
- objekt
F9
- editování (pod mesh tools je extudování/tažení a tlačítka Screw/Spin/Spin Dup...)
F10
- scéna
Pohledy: 0
- kamera
1
- zepředu
3
- zprava
5
- perspektiva
7
- shora
+/-
- přiblížení/oddálení
Enter
- normalizace přiblížení
132
shift+kolecko
- posun pohledu
ctrl+kolecko
- posun pohledu
mezernik
- vložení objektu na pozici kurzoru
tab
- přepínání object mode/edit mode
S
- změna velikosti
R
- rotace
G
- přesun
B
- vybírání bodů
A
- označení
E
- extrudování
P
- separace tělesa (rozdělení)
W
- boolovske operace
W
- nastroj bevel pro zaobleni ! special in edit mode
F
- spojeni vertexů (propojí dva označené body)
ctrl+LMB
- vložení bodu na křivku
V
- zalomení křívky v akt. bodě
Shift + S
- zarovnání k mřížce
shift + F
- uzavření tělesa
shift + D
- duplikace
alt+H
- historie
alt+C
- konvertování do meshe apod....
Za pomoci klávesy F12 se obrázek vyrendruje. Pokud si ho chcete uložit, tak skryjte obrázek klávesou F11 a klávesou F3 obrázek uložte.
133
12.5
Blender – příklad modelování scény
Pro modelování a výuku práce s blenderem existuje na internetu celá řada zdarma dostupných tutorialů (např. na http://www.3dscena.cz). Převzatý návod ukazuje modelování stolku s květináčem (David Střelák – www.3dscena.cz):
Začít bychom asi měli vysvětlením techniky extrude. Touto technikou se dá velice jednoduše vyrábět spousta zajímavých předmětů. Technika samotná spočívá v tom, že ty vertexy, které máte označené, se nakopírují a následně rozšiřují původní objekt. Extrudování samo má klávesovou zkratku E. Možná to bude lépe zřetelné z následujících obrázků:
Tak se pustíme do práce, ať to máme rychle za sebou. Nejprve vytvoříme podstavec stolku, který se nachází v popředí obrázku. Vložte si do prázdné scény objekt Plane (mezerník, Add, Mesh, Plane). Vkládejte ho v horním pohledu. Přepněte se do bočního pohledu a stiskem klávesy E extrudujte region (Region). Uděláme si tedy takový kvádr, jehož horní vertexy nástrojem Scale (S) poněkud zmenšete, aby vznikl podobný tvar:
Někteří mohou namítnout, že jde také vložit objekt Cube a pak zmenšit horní vertexy, ale pak bychom neextrudovali… 134
Nyní se přepněte do Object menu a přes F9 se dostanete do editování. Tam objekt nově centrujte (Centre New) a pak pomocí příkazu Shift + S zarovnejte kursor na střed (viz minulý článek). Znovu se hoďte do horního pohledu a vložte objekt Circle. Ten v bočním pohledu extrudujte směrem nahoru. Extrudovat musíte Vertex only.
Opět se vraťte do horního pohledu a horní vertexy vyplňte triangulárními facy. (posledně jsem to v článku omylem napsal špatně, správně se vyplňuje Shift + F). Přesuňte si kurzor do pozice jako na obrázku:
Kurzor zarovnejte ke mřížce V horním pohledu vložte objekt Plane a zvětšete ho asi na dvojnásobek stojanu (nebo v jiném rozumném poměru) a opět extrudujte nahoru. Tím nám vlastně vznikla deska stolu.
135
Jelikož ale vypadá taková deska až moc uměle (má moc přesné hrany), musíme ji nějak zaoblit. K tomu je v Blenderu určen nástroj Bevel, který se nachází pod klávesovou zkratkou W. Příkaz Bevel vlastně vezme označené vertexy, nakopíruje je a přesune tak, aby byl objekt zaoblený. Míru zaoblení můžete pochopitelně ovlivňovat.
Máme tedy stůl - přiřaďme mu materiál. Hlavní deska bude mít texturu dřeva (použít můžete třeba tu z prvního článku nebo tu níže uvedenou). Na tyčku, tvořící stojan nohy, použijte standardní šedou barvu nebo i jinou. To nechám na vás. A konečně na podstavec použijte také texturu dřeva- stejnou jako na desku. Nezapomeňte na nastavení textury (odkazuji na první článek)
136
Nyní
si
vytvoříme
květináč.
Ten
budeme
tvořit
metodou
rotace
z
křivky.
Začneme tím, že si v bočním pohledu vložíte křivku, kterou otočíte o 90° a upravíte do následujícího tvaru:
137
Spodní (rovnou část) uděláte tak, že označíte vertex na křivce a stisknete V. Tím se křivka v tomto bodě "zlomí". Křivku si převeďte do meshe a označte. Klávesovou zkratkou Shift + D si zkopírujte všechny vertexy kromě posledního a takto zkopírovanou křivku posuňte doprava. Mělo by to vypadat následovně:
Ještě musíme spojit oba horní vertexy, aby se budoucí objekt uzavřel. To provedeme tak, že si označíme oba vertexy a stiskneme F. Tímto zajistíme, že stěna bude taky trochu plastická. Označte si VŠECHNY vertexy a přepněte se do horního pohledu a do Editing. Povšimněte si těchto tlačítek:
138
Tato tlačítka slouží k automatickému extrudování a jsou to velice šikovní pomocníci. Jestli budete mít někdy čas, zkuste je použít do nějaké scény. Pod těmito tlačítky se nacházejí 3 posuvníky. 1. - Degr - ovlivňuje velikost extrudování v úhlech, 2. - Steps - ovlivňuje, v kolika krocích se bude 1. hodnota extrudovat a 3. - turns určuje počet otáček. My tedy nastavíme Degr 360 a Steps necháme na 9. To znamená, že se bude křivka extrudovat o 360° a po devíti krocích. Budoucí objekt se extruduje podél kurzoru, tudíž ten kurzor musíte přiřadit až k poslednímu vertexu na dně. (ideálně ho zarovnejte pomocí příkazu Shift + S) Stiskněte spin a kochejte se dokonalostí :-) Vypadat by to mělo přibližně takto:
Květináč teď přesuňte na stůl a náležitě ho usaďte. Já jsem mu přiřadil zelenou barvu, ale to opět ponechám na vás. Teď ještě něco k nasvětlení scény. Vložte si mezi kameru a stolek světlo a v jeho nastavení (F5) přepněte na spot. To znamená, že bude produkovat také stín. Přidejte také třeba pár světel typu Sun, podle toho, jak chcete 139
mít scénu nasvětlenou. Na podlahu jsem použil objekt Plane, který jsem adekvátně zvětšil a přidal mu následující texturu:
Ještě nezapomeňte na všechny objekty použít Smooth (objekty nebudou tak hranaté). Výsledek mé snahy máte před sebou.
12.6
Otázky
1. Co je to trojrozměrná grafika? 2. Které programy pracují s 3D grafikou? 3. Co víte o programu Blender a jak se v něm pracuje?
140
12.7
Doporučená literatura ke studiu
•
KRISTIÁN, P. Kouzlo digitální fotografie. ZME 8: Zonerpress, 2005.
•
GREGORY, G. 100 praktických návodů digitální fotografie. Brno: ComputerPress, 2004.
•
KADAVÝ, D. CorelDraw pro verze 10,11,12. Brno: ComputerPress, 2005.
•
KOLEKTIV AUTORŮ. Adobe Photoshop jednoduše a srozumitelně. Brno: ComputerPress, 2005.
•
KOLEKTIV AUTORŮ. Zoner Callisto 5 uživatelská příručka.
•
KOLEKTIV AUTORŮ. Zoner PhotoStudio 8 uživatelská příručka.
Studijní opory: •
E-learning KTeIV Pdf MU: DOSEDLA, M. - HORA, V. Aplikace počítačové grafiky.
141