12. 3d grafika - pedagogická fakulta mu · pdf file(částe čně p řevzato z )...
TRANSCRIPT
127
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.
128
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
129
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ů
130
• interface je stejný na všech platformách
12.3.2 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
• možnost doprogramovat si pomocí Pythonu modelační nástroje dle potřeby
12.3.3 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
131
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
• UV editor s několika metodami pro unwrap (např velmi efektivní LSCM)
12.3.5 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
132
• 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í
133
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.
134
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…
135
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.
136
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)
137
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:
138
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:
139
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
140
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?
141
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.