České vysoké učení technické v Praze Fakulta Elektrotechnická
Bakalářská práce
Pluginy do 3DStudia MAX Nástroje pro televizní grafiku Jan Charvát
vedoucí práce: Ing. Roman Berka, Ph.D.
Studijní program: Elektrotechnika a informatika, strukturovaný, bakalářský Obor: Výpočetní technika srpen 2007
ii
Poděkování: Velice rád bych poděkoval Ing. Romanu Berkovi, Ph.D., za odborné konzultace, které mi přinesly cenné rady pro vypracování této bakalářské práce. Rovněž děkuji TV Prima za to, že mi umožnila tuto práci vytvořit.
iii
iv
Prohlášení: Prohlašuji, že jsem bakalářskou práci vypracoval samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Nemám žádný důvod, proti užití tohoto díla ve smyslu §60 zákona č.121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon).
V Praze dne dne 22. 8. 2007
….........................................................................
v
vi
Abstrakt Televizní zpravodajství přináší každý den nové informace z domova i ze světa, které je často třeba doplnit o názorné grafické zobrazení. Každý reportér si proto objednává v oddělení televizní grafiky do reportáže zobrazení podle své potřeby. Tyto grafiky se tématicky opakují a aby byly pohledné, modelují se ve třetím rozměru. Používá se grafika pro telefonický rozhovor, pro výrok, textové vyjádření, sloupcovou grafiku, pro výsledky voleb, dále je například k dispozici virtuální sněmovna pro zobrazení rozložení sil stran v parlamentu, grafika pro zobrazení dopravních nehod a řada dalších. Nezřídka se ovšem stává, že reportéři objednají větší množství grafik najednou a nelze pak vyhovět všem požadavkům včas, čímž se dokončení reportáže zdržuje. Ukazuje se proto, že by bylo vhodné vytvořit nástroje, které by tuto práci zjednodušovaly a dovolovaly věnovat se práci, již automatizovat nelze. 3D Studio MAX tuto možnost v podobě skriptovacího jazyka nabízí, a proto jsem si vymyslel a zvolil toto téma, neboť je považuji nejen za zajímavé, ale především velmi praktické a vhodné pro každodenní použití.
Abstract The TV news brings new information every day from home and abroad, which is often needed to fill up with graphics. Each pressman orders graphics by necessity to his reportage. These graphics thematically repeat and are modelled in the third dimension for being sightly. In the TV-graphics department, we have a telephone graphics for phone conversation, a pronouncement for text pronouncement, a column graph for election returns, we have the virtual parliament for image of dispensation in the parliament or a restoration graphics of car accidents and more. But it happens very often that our mailbox is filled up with graphics ordered by the pressmen and we cannot catch up with them on time and thus obstruct finishing the reportage. Therefore, it would be obviously suitable to make tools that would make this work easier and allow us to concentrate on work, which cannot be automated. The 3D Studio MAX offers this possibility in its scripting language and that’s why I have thought up and chosen this theme. I consider it to be interesting, but above all very practical and useful for everyday utilization.
vii
viii
Obsah 1 Úvod
1
2 Popis grafik a specifikace cíle 2.1 Telefonát 2.2 Výrok 2.3 Sloupcová grafika 2.4 Koláčová grafika 2.5 Linková grafika 2.6 Sněmovní/Senátní grafika 2.7 Nehody 2.8 Obecné vlastnosti 2.9 Specifikace cíle
4 4 5 6 8 9 10 11 12 13
3 Analýza a návrh řešení 3.1 Výběr aplikace a programovacího jazyka 3.2 Scény 3.3 Uživatelské rozhraní 3.4 Grafiky 3.4.1 Telefonát 3.4.2 Výrok 3.4.3 Sloupcová grafika 3.4.4 Koláčová grafika 3.4.5 Linková grafika 3.4.6 Sněmovní/Senátní grafika 3.4.7 Nehody
14 14 15 16 18 18 20 22 25 27 30 32
4 Realizace 4.1 Scény 4.2 Skripty 4.3 Uživatelské rozhraní 4.4 Statické grafiky 4.4.1 Telefonát a výrok 4.5 Dynamické grafiky 4.5.1 Sloupcová grafika 4.5.2 Koláčová grafika 4.5.3 Linková grafika 4.5.4 Sněmovní/Senátní grafika 4.5.5 Nehody
34 34 34 34 36 36 38 40 41 41 42 42
5 Testování
43
6 Závěr
44
7 Seznam literatury
45
A Uživatelská příručka A.1 Seznam a popis součástí
46 46 ix
A.2 Požadavky A.3 Instalace A.4 Uživatelské rozhraní A.4.1 Telefonát A.4.2 Výrok A.4.3 Sloupcová grafika A.4.4 Koláčová grafika A.4.5 Linková grafika A.4.6 Sněmovní a senátní grafika A.4.7 Nehody
46 47 48 50 51 52 54 55 57 58
B Vzorová zadání B.1 Telefonát B.2 Výrok B.3 Sloupcová grafika B.4 Koláčová grafika B.5 Linková grafika B.6 Sněmovní/Senátní grafika B.7 Nehody
59 59 59 59 59 60 60 60
C Obsah přiloženého CD
61
x
xi
Seznam obrázků 2.1 Telefonát s pozadím 2.2 Výrok s pozadím 2.3 Sloupcová grafika s pozadím 2.4 Koláčová grafika s pozadím 2.5 Linková grafika s pozadím 2.6 Sněmovní/Senátní grafika s pozadím 2.7 Nehody 2.8 Topologie sítě v grafickém oddělení
4 5 7 8 9 10 11 12
3.1 Prvky UI 3.2 Render UI 3.3 Telefonát –UI 3.4 Telefonát – scéna 3.5 Výrok – UI 3.6 Výrok – scéna 3.7 Sloupcová grafika – UI 3.8 Sloupcová grafika – scéna 3.9 Koláčová grafika – UI 3.10 Koláčová grafika – scéna 3.11 Linková grafika – UI 3.12 Linková grafika – scéna 3.13 Sněmovní/Senátní grafika – UI 3.14 Sněmovní/Senátní grafika – scéna 3.15 Nehody – UI 3.16 Nehody – scéna
17 17 18 19 20 21 23 24 25 26 28 29 30 31 33 33
4.1 Cache 4.2 Uspořádání řádků na výšku 1 4.3 Uspořádání řádků na výšku 2 4.4 Uspořádání řádků na výšku 3
36 37 37 38
A.1 Prvky UI A.2 Úprava textů A.3 Render UI A.4 Telefonát –UI A.5 Výrok – UI A.6 Sloupcová grafika – UI 1.část A.7 Sloupcová grafika – UI 2.část A.9 Koláčová grafika – UI 1.část A.10 Koláčová grafika – UI 2.část A.11 Linková grafika – UI 1.část A.12 Linková grafika – UI 2.část A.13 Linková grafika – UI 3.část A.14 Sněmovní/Senátní grafika – UI 1.část A.15 Sněmovní/Senátní grafika – UI 2.část A.16 Nehody – UI 1.část
48 49 49 50 51 52 53 54 54 55 55 56 57 57 58
xii
xiii
Seznam tabulek 3.1 Sloupcová grafika – importovací tabulka 3.2 Koláčová grafika – importovací tabulka 3.3 Linková grafika – importovací tabulka 3.4 Sněmovní/Senátní grafika – importovací tabulka
xiv
24 26 29 31
xv
1
Úvod
Pracuji jako grafik zpravodajského oddělení jedné z českých televizí. Do práce jsem nastoupil na jaře roku 2006. Práce je to velmi zajímavá, každý den po celý rok graficky znázorňujeme představy redaktorů na 720x576 pixelech televizního rozlišení. Stejně jako denní zpravodajství je i toto práce na jediný den, to co bylo vytvořeno včera, není velké většiny již druhý den aktuální. Grafické oddělení je místnost ve zpravodajském patře hlavní budovy, v níž jsou dva speciálně pro tyto účely vybavené počítače. Mají velké monitory, výkonné grafické karty, dvoujádrové procesory, velkou operační paměť, RAID pole disků a další vybavení. Software je pro naši práci neméně důležitý, a tak nechybí programy jako Adobe Premiere, Photoshop, After Effects, Curious Maps a 3DStudio MAX. Jsme připojeni na internet i místní intranetovou síť, po níž komunikujeme s redaktory přes interní mail. Nezbytnou součástí je Betacam camcorder, což je zařízení, s jehož pomocí nahráváme redaktorům na kazetu hotové grafiky. Při nahrávání nám ke kontrole slouží speciální televize, která je na Betu připojena a je vidět, co je právě na kazetě nebo to, co na kazetu nahráváme. Je to vlastně analogová kontrola toho, co jsme vytvořili. Dává nám to jistotu, že to co jsme vyrobili je v televizi vidět správně. Poslední součástí je video diskové pole Accom, na které si nahráváme z Bety výjevy z reportáží, které jsou poté vidět za moderátory, nebo je používáme přímo do grafik. V našem oddělení pracují ve všední den dva grafici. První grafik přichází v půl druhé a druhý ve 4 hodiny odpoledne. Tyto časy jsou ověřené praxí, protože do čtyř hodin většinou není práce ani pro jednoho, ale po čtvrté hodině si redaktoři náhle vzpomenou, že potřebují grafiku a práce se hromadí. O víkendu pracuje již pouze jeden grafik, který chodí okolo třetí hodiny. Zprávy se vysílají každý den v 19:00. Aby mohl grafik správně vykonávat svoji práci, je nutné aby měl alespoň rámcové znalosti o aktuálně hraných reportážích. K tomu slouží o půl druhé porada s vedoucím vydání, redaktory a pomocníky. Na poradě se v krátkosti shrne každá z reportáží z bodového seznamu vysílání a domluví se, jaký obrázek bude vidět na obrazovce za moderátory. Redaktoři během dne kompletují své reportáže a objednávají si u nás grafiky přes interní mail. Tato komunikace je pro nás z několika důvodů klíčová. Zaprvé je to pro nás kontrola toho, co nám ještě zbývá a co už máme hotovo. Tato digitální forma zadání nám také ulehčuje práci v tom, že texty stačí pouze zkopírovat a není třeba je opisovat, čímž se vyhneme chybám při opisu. Také nám slouží jako důkaz pří hledání původu chyb. Ve výjimečných případech si mimopražští redaktoři objednávají grafiku i po telefonu. Požadavky redaktorů na grafiku jsou spojeny s procesem výroby jejich příspěvku. Vyvíjejí se podle toho, jakým způsobem dodávají do příspěvku informace o problematice a podle toho, co nám dovoluje technika vyrobit. Za dobu existence grafického oddělení v našem zpravodajství se vyvinuly specifické grafiky, které se ve svém principu stále opakují. Jejich 1
vzhled je vždy spojen s aktuálním grafickým prostředím zpráv a není možné ho měnit. Je to kvůli grafické ucelenosti zpráv a kvůli divákům. Zaměřil jsem se na trojrozměrné animace grafik, které jsou vytvářeny ve 3D Studiu MAX: –
Telefonát pro znázornění rozhovoru redaktora s osobou po telefonu
–
Výrok pro psaný výrok osoby nebo výrok bez hlasového materiálu
–
Sloupcová grafika pro výsledky voleb, referend, anket apod.
–
Koláčová grafika pro znázornění hodnot z celku, anket apod.
–
Linková grafika pro vyjádření trendu hodnot nebo pro srovnání vývoje
–
Sněmovní/Senátní grafika pro vyjádření rozložení sil v komorách parlamentu
–
Nehody pro rekonstrukce silničních a železničních nehod
Z těchto animací se počítají sekvence obrázků TGA s průhledností, které následně skládáme s příslušným pozadím ve střihacím programu Premiere a nahráváme redaktorům na kazetu. Kromě animací, kterými se ve své práci zabývám, vytváříme i jiné grafiky do příspěvků. Mezi nejobvyklejší patří tabulky, seznamy, fotografie a vysvětlující názorné animace. Všechny je spojuje program Premeire, ve kterém se kompletují. Od dodavatele nového grafického vzhledu jsme dostali předem vyhotovené pozadí, na které umisťujeme všechny tyto grafiky. Pro taková zobrazení žádné šablony udělat nelze, protože se od sebe provedením velmi liší. Navíc výroba není tak složitá, a lze je animovat ručně. Dalším druhem jsou mapy, které se používají jak v domácích tak i v zahraničních příspěvcích ve zpravodajství i do pořadu Svět 2007. Software Curious Maps má obsáhlou databázi států, měst, silnic, železnic, řek, jezer, moří, ostrovů, parků a dalších informací z celého světa, které se dají využít k přiblížení místa, o němž se v reportáži hovoří. Animuje se většinou ze vzdálenějšího místa od povrchu planety k podrobnějšímu detailu, aby si divák mohl zařadit alespoň kontinent, na kterém místo leží. Výsledkem je sekvence obrázků TGA nebo TIFF, která se opět ve střihacím programu kompletuje. Pokud to zadání vyžaduje, použijeme takto vyrobenou mapu jako podklad pro další animace v Premiere nebo ve 3D Studiu MAX. Během dne nám pomocník nosí na kazetách výjevy z reportáží, které se nahrávají na video diskové pole Accom. Tyto výjevy se často používají v telefonátech a výrocích, nebo se také hodí jako podklad do tabulky. Hlavní použití mají ale v obrázku nazývaném quantel, který se ve studiu objevuje za moderátorem a přibližuje obrazově divákovi, o čem reportáž bude. Ve virtuálním studiu, které se za moderátory promítá, jsou vytvořeny celkem 3 desky, dvě desky pro zprávy a jedna pro sport, na než se tyto obrázky promítají. Na všechny plochy se mapuje stejný obrázek z Accomu. Každý výjev je nutné nejdříve ve Photoshopu upravit. Obrázek se dává na podklad podobný pozadí studia. V některých případech přidávají další výřezy – někdy politici, jindy různé předměty nebo symboly. Výsledný obrázek se nahraje do Accomu na pozici, jakou má reportáž v bodovém seznamu vysílání. Po nahrání všech obrázků je nutné 2
donést bodový seznam do režie, aby režisér věděl, kde má jaký obrázek. Ten se pak orientuje podle čísel reportáží v seznamu. Po začátku vysílání přebírají kontrolu nad Accomem pracovníci režie. V této chvíli je ho možné ovládat z obou míst, ale grafik by již do procesu neměl zasahovat, protože vysílání je plně v rukou režiséra. Nejtvořivější prací pro televizního grafika je montáž obrazu, v našem případě vkládání 3D objektů do reportáže, a to přímo do záběrů pořízených štábem. Za těchto podmínek je nutné přepnout výstup Bety z Accomu do počítače. Pak je možné nahrát celou videosekvenci i se zvukem z Bety, která se pak použije jako podklad pro další práci. Vkládají se většinou různé objekty, které buď neexistují, nebo by bylo příliš složité je obstarat. Každou větu i slovo, které vložíme do grafik kontroluje korektor. Od února roku 2007 se v našem zpravodajství začalo mluvit o digitalizaci celého vysílání. Pro nás by to znamenalo velké ulehčení práce, protože čas, který strávíme nahráváním z/na kazetu, lze využít jinak. Ve výsledku to může být až několik minut, a to je pro nás zásadní zejména mezi 18 a 19 hodinou, tedy v době těsně před vysíláním. Zatím se na digitální vysílání přešlo bohužel pouze u pořadu Minuty Regionu, nás to stále ještě čeká.
3
2
Popis grafik a specifikace cíle
Nejdříve je třeba přesně určit, k čemu se každá grafika má používat a jaké má mít vlastnosti. 2.1 Telefonát Telefonát použije redaktor ve chvíli, kdy s někým při pořizování reportáže hovořil po telefonu. Je také možné využít jeho upravenou verzi pro materiály nahrané z rozhlasu. Součástí telefonátu musí být fotografie dotyčné osoby, případně výjev z reportáže nebo hrubého materiálu, pokud není možné fotografii nalézt nebo ji není možné použít. Dále obsahuje čtyřřádkové textové pole, ve kterém je uveden popis osoby. Většinou to bývá jméno, příjmení, funkce a místo, odkud se telefonát uskutečnil. V případě použití rozhlasové verze je třeba graficky, s pomocí obrázku nebo textově zobrazit logo, nebo název rozhlasové stanice, z jejíhož vysílání redaktor čerpal. V Telefonátu se animuje pouze kamera na 100 snímků, což jsou 4 vteřiny.
Obrázek 2.1 Telefonát s pozadím
4
2.2 Výrok Používá se v případech, kdy redaktor čerpal z písemného vyjádření dané osoby nebo z tiskovin, u kterých je nutné uvést zdroj. Výrok se skládá z fotografie osoby, která výrok pronesla, z čtyřřádkového textového pole s popisem osoby a druhého čtyřřádkového textového pole, kde je výrok napsán. V této grafice většinou není k dispozici záznam tohoto výroku a je tedy třeba jej doplnit ve střižně o zvukovou stopu, ve které některý z redaktorů tento výrok přečte.
Obrázek 2.2 Výrok s pozadím
5
2.3 Sloupcová grafika Sloupcová grafika se většinou používá pro znázornění výsledků voleb, ale je možné ji použít i pro různé výsledky anket či průzkumů veřejného mínění. Redaktoři většinou čerpají tyto informace z různých agentur a proto je nutné uvést i zdroj. Sloupcová grafika vždy obsahuje nadpis, zdroj a sloupce s popisem, umístěné vedle grafu. Sloupce jsou ve tvaru kvádru, který má šířku větší než hloubku. Mohou být lehce průhledné a mají různé barvy, většinou podle barev log politických stran, nebo čistě pro barevné odlišení. Tyto sloupce musí být animovatelné, tzn. že se musí dát měnit jejich výška s časem od prvního až do posledního sloupce. Jsou tři možnosti, jak tyto sloupce animovat: 1. Konstantní rychlost – Každý sloupec bude mít konstantní rychlost růstu. Určí se rychlost růstu v jednotkách osy/snímek a s tímto přírůstkem se každý sloupec naanimuje. Nevýhodou je, že sloupce s malou celkovou výškou narostou velmi rychle. Další nevýhodou je, že někdy není možné přesně se vejít do čteného komentáře. 2. Konstantní čas – celkový čas grafiky se vydělí počtem sloupců. Pak bude mít každý sloupec stejný čas na to, aby vyrostl do požadované výšky. Odstraní se tím problém růstu nízkých sloupců, ovšem problém komentáře zůstává. 3. Libovolné časování – v některých případech je možné si nejdříve nahrát komentář k této grafice a podle něj naanimovat růst sloupců. Je to ovšem časově náročnější jak pro grafiky, tak pro redaktora, neboť musí redaktor komentář nejprve načíst a vypsat si časy, kdy chce nechat který sloupec vyrůst. Tímto způsobem lze odstranit oba problémy a výsledek působí nejlépe. Ke každému sloupci patří také nadpis, fotografie (logo) a textové vyjádření hodnoty s jednotkami (většinou v %). Nadpis nebo fotografie jsou ve stejné výšce nad všemi sloupci, zatímco textová hodnota je těsně nad každým sloupcem. Logo se využívá při volbách, obrázek s nadpisem při průzkumu oblíbenosti politiků. Tato grafika má vždy různou délku dle potřeby redaktora většinou však kolem 10–20 sekund. Užitečným doplňkem takového pluginu může být načítání hodnot přímo ze zdrojového souboru Excelu, ve kterém bude vyplněno jednoduché zadání.
6
2.3 Sloupcová grafika s pozadím
7
2.4 Koláčová grafika Koláčová grafika se používá při podobných událostech jako sloupcová grafika, ale má užší zaměření. Nepoužívá se například tak často u voleb, kde je více stran, naopak použít ji lze tam, kde jsou pouze dvě strany (např. v USA), a výsledek je pak srozumitelnější. Také při různých průzkumech je možné takto znázornit podíl sledovaných objektů na celku a dále ho kombinovat. Tato grafika rovněž obsahuje nadpis. Pod ním je tzv. koláč, což je válec, který má všechny strany plné a je rozdělen do několika barevných a lehce průhledných částí, kde každá část představuje určitou část koláče. Nad každou z nich je umístěn nadpis s příslušnou hodnotou, opět většinou v procentech. Stejně jako u sloupcové grafiky jsou zde tři možnosti animace – konstantní rychlost, konstantní čas a čas určený pro každý výřez. Také u této grafiky lze s výhodou načítat z Excelu.
2.4 Koláčová grafika s pozadím
8
2.5 Linková grafika Linková grafika je znázorněním funkce f(x) = y. Reportér ji používá, když chce například znázornit časový vývoj sledovaného objektu, jako je cena/rok, množství/rok apod. V některých případech se pro srovnání hodí použít i více linek v jedné grafice. Součástí linkové grafiky je rovněž horní nadpis, dále mřížka vytažená tenkou, většinou bílou čárou s hodnotami a popisky na každé ose, a nakonec linka (čára), která prochází každou zadanou hodnotou. Pokud je linek více, je možné je doplnit k lince popisek, který ovšem vždy doplňujeme ručně. U linkové grafiky jsou také tři možnosti animace: 1. Najednou – všechny linky se animuji ve stejnou chvíli z levé strany na pravou, od začátku do konce animace. Je to vhodné pro krátké grafiky, kde je potřeba výsledek ukázat co nejdříve. 2. Za sebou – linky se animuji postupně jedna za druhou. 3. Libovolné časování – stejně jako u sloupců. Také u této grafiky lze s výhodou načítat z Excelu.
2.5 Linková grafika s pozadím
9
2.6 Sněmovní/Senátní grafika Předposlední a vlastně výhradně sezónní grafikou je Sněmovna/Senát. Slouží jako ukázka poměrů sil politických stran v dolní či horní komoře parlamentu a používá se především v době voleb. Sestává se z nadpisu, zdroje a obecného modelu sněmovny s určitým počtem křesel. Ten se skládá z N x M kvádrů, jejichž šířka je větší než výška a hloubka. Lze je obarvit podle politické strany, která tato křesla obsadila. Nad každou barevnou skupinou křesel je nadpis uvádějící název strany a její počet křesel. Oproti reálnému modelu, který by nebylo složité naanimovat, má obecný model tu výhodu, že lépe znázorňuje poměr sil, o který tu jde. V reálném modelu totiž sedí vláda a předseda sněmovny uprostřed a členové jejich stran mohou být kdekoli, těžko by se proto animovala barevná uskupení a různé koalice. Možnosti animace jsou zde shodné s linkovým grafem, tedy: všechny najednou, za sebou, nebo libovolně. U této grafiky je také možné využít načítání z Excelu
2.6 Sněmovní/Senátní grafika s pozadím
10
2.7 Nehody Stále častější grafikou bývá bohužel rekonstrukce nehod. Pokud je již v odpoledních hodinách známo, jak k nehodě došlo, je možné vytvořit trojrozměrnou rekonstrukci, kterou se doplní reportáž s výjevy po nehodě. Prostředí nehody se často mění, jednou se stane ve městě, jindy na dálnici, může být zima nebo léto, může se to přihodit na písku nebo na trávě. Součástí grafiky obvykle bývá silnice nebo – v případě vlakových nebo tramvajových nehod – železnice. Grafiku je dále třeba zasadit do prostředí, odpovídající nehodě, tedy přidat louku, stráň nebo město, okolní silnice, stromy, značky, případně domy. Možností, kde k nehodě došlo, je velmi mnoho. Bylo by však vhodné mít připravená různá prostředí a součásti nehody tak, aby grafik neztrácel čas modelováním prostředí a mohl se soustředit na samotný průběh nehody.
2.7 Nehody
11
2.8 Obecné vlastnosti Ve všech scénách je vždy přítomna jen jedna kamera, která se pomalu otáčí z levé na pravou stranu po dobu 4 sekund, což je pevně dohodnuto a nelze to měnit. Scéna musí také splňovat předem dané vlastnosti, dané typem právě používaného grafického prostředí celých zpráv. Tyto vlastnosti nelze v současné době měnit, neboť je třeba dodržet grafickou konzistenci zpráv a zajistit, aby grafiky působily jednotně. Na druhou stranu je žádoucí, aby bylo možné tyto vlastnosti jednoduše a bez většího zásahu do existujících nástrojů měnit, pokud se změní celé grafické prostředí zpráv. Toto prostředí se vždy po určitém časovém úseku mění, jak vlivem nových technických možností, tak především kvůli divákům. Změna televizi umožňuje upoutat diváky vždy novým prostředím a částečně tak zvýšit sledovanost. Jednou z vlastností grafického prostředí je typ a velikost písma. Všechny grafiky musí mít jednotné písmo. Výběr písma nespadá do mých kompetencí, vybírá je produkce pro celé grafické prostředí. V současné době se používá tenká verze (regular) bezpatkového proporcionálního písma Arial. Součástí je také pozadí, které je sladěno jak barevně, tak tématicky se znělkami a virtuálním studiem. Pozadí je rovněž součástí dodávky grafického prostředí a nemám na ně žádný vliv. Grafiky by se tedy měly barevně přizpůsobit. Dnes se využívá širokého rozpětí barev od žluté do červené až hnědé. Vzhledem k dlouho chystané změně v koncepci počítačové sítě na grafickém oddělení by každý nástroj měl také mít možnost renderovat (spočítat a vyobrazit) výsledek na jiném počítači než pouze u sebe. V případě složitějších scén by bylo nejvhodnější zapojit do renderování všechny počítače. dnešní topologie:
plánovaná topologie:
1. počítač data
renderovací server
2. počítač switch
datový server
switch 1. počítač
2. počítač
2.8 Topologie sítě v grafickém oddělení
12
2.9 Specifikace cíle Pro výše uvedené grafiky je tedy nutné navrhnout a napsat automatizované nástroje, jež usnadní a především zrychlí jejich výrobu. Musí být jednoduše ovladatelné a musí obsahovat taková nastavení, s nimiž by bylo možné bez dalšího zásahu do scény splnit všechny obvyklé požadavky. Měly by být vícekrát aplikovatelné, aby se daly využít i v budoucnosti. Některé grafiky by také měly mít možnost importu z tabulek. Tomuto úkolu se budu věnovat v následujících kapitolách.
13
3
Analýza a návrh řešení 3.1 Výběr aplikace a programovacího jazyka Prvním krokem je výběr aplikace nebo prostředí, v kterém se tyto nástroje naprogramují. V úvahu připadaly tři aplikace: 1. 3D Studio MAX 2. Maya 3. Blender Všechny tyto aplikace obsahují vhodné nástroje i přijatelné prostředí pro tvorbu výše zmíněných grafik. Do mého výběru ovšem zasáhlo prostředí, ve kterém pracuji, a především kolegové. Není v mých možnostech měnit programové vybavení našeho oddělení nebo nutit kolegy, aby se kvůli mé bakalářské práci učili pracovat v novém programu. Proto zůstalo jedinou reálnou možností 3D Studio MAX, které všichni ovládáme. 3D Studio MAX nabízí dvě možnosti, jak si vytvářet vlastní pluginy: 1. SDK (Software Development Kit) je velmi mocný a rozsáhlý nástroj pro tvorbu pluginů v C++, které se stanou pevnou součástí 3D Studia MAX. Plugin se tedy napíše v C++, přeloží se jako knihovna a přidá ke 3D Studiu MAX. K tomu byly přímo dodány nástroje s SDK. Používá se především v těch případech, kdy má rychlost přednost před interaktivitou. Pluginy z SDK jsou rychlejší a programátor má přístup k velké většině nástrojů z 3D Studia MAX. 2. MAXScript je skriptovací jazyk, který je omezenější a pomalejší než SDK, ale jednodušší a nabízí i několik možností, které nejsou v SDK dostupné. Nejvíce se podobá jazyku C++ a jeho překladač je integrován přímo v 3D Studiu MAX, kde je možné si hned vše vyzkoušet. Pracuje se s ním na vyšší úrovni než v SDK. Je možné s ním modelovat, animovat, renderovat, pracovat s materiály a provádět řadu dalších funkcí. Umožňuje přidávat prvky klasického uživatelského rozhraní jako nové okno, tlačítko, textové pole, výběr a další. Má funkce pro načítání ze souboru i tabulky Excelu. Po důkladném nastudování manuálů k Maxskriptu[2] a SDK[3] jsem je rozhodl pro MAXScript. Nábízí dostatečné možnosti k vytvoření všech požadovaných automatizovaných skriptů a obsahuje funkce pro tvrobu uživatelského rozhraní, což by v SDK zabralo hodně kódu a času navíc.
14
3.2 Scény Každý plugin má vlastní scénu, s níž pracuje. Nabízejí se dvě možnosti, jak scénu zpracovat: 1. Scény vygenerovat přímo skriptem. 2. Vytvořit samostatné soubory 3D Studia se scénami, které si skript otevře a pracuje s nimi. Výhodou prvního řešení je, že všechny scény budou uloženy přímo ve skriptech a nebude třeba přidávat další soubory. Naopak při změně grafického prostředí by se musely všechny skripty přepsat podle nové grafiky, což by musel provést člověk se znalostí MAXScriptu. Druhé řešení je operativnější, stačí pouze změnit scénu a uložit ji místo staré. Ta se ale musí řídit konvencemi pojmenovávání objektů tak, aby skript dokázal se scénou pracovat. Vybral jsem si druhou možnost, protože je nejen pro mě, ale hlavně pro kolegy z práce snadnější scény nejprve vytvořit, a pak s nimi manipulovat. Také z pohledu nynější nebo budoucí koncepce naší počítačové sítě nebude problém mít soubory se scénami na jednom místě. Všechny scény byly vytvořeny tak, aby nedošlo k velkým změnám oproti grafikám, které se do té doby používaly. V opačném případě by se musely nechat opět schválit vedoucím vydání a produkcí, a především diváci jsou již zvyklí na určité rozložení prvků v každé grafice. Každá scéna bude obsahovat objekty, s nimiž bude skript manipulovat a měnit je. Uživatel by je ovšem měnit neměl, protože vše je nastavené pro spolupráci se skriptem a nemuselo by vždy fungovat správně. Nejvíce se ve scénách objevuje text, který je třeba často měnit. Musí mít ovšem dané meze rozměrů, aby se texty nepřekrývaly nebo nepřesahovaly za obraz. S texty se pracuje ve dvou rozměrech, tak postačí pro vymezení plocha. Na tuto plochu se bude vázat vždy jeden nebo více textových objektů. Při změně textu, velikosti písma nebo viditelnosti se text musí ploše přizpůsobit tím, že se případně zmenší, což se projeví i změnou hodnoty velikosti v UI. Text se také bude zarovnávat na pravou nebo levou stranu plochy, případně na střed. Při seskupení více textů na jednu plochu se řádky musí správně rozmístit na svislé ose, a to buď na střed, nebo k horní či dolní stěně. U některých textů bude možné měnit průhlednost a velikost. Každá scéna by se měla uložit, protože některé grafiky se často opakují nebo mají jen lehce pozměněné údaje. Problémem je ukládání informací, které nejsou „vidět“, nebo takových, jejichž zjišťování by trvalo zbytečně dlouho, například typ animace, typ renderu (síťový, nesíťový), počet sloupců, řádků a stran ve sněmovní grafice, hodnoty všech bodů u linek v linkové grafice a další. Jediným řešením je přidání neviditelných (nerenderovatelných) objektů do scény, které by tyto informace uchovávaly. U většiny 15
číselných informací postačí kvádr, u něhož se mění počet segmentů na šířku, výšku nebo délku. Další možností je text, do kterého je možné uložit textové informace, nebo – jako třeba u linkové grafiky – x-ové a y-ové hodnoty všech bodů a maximum a minimum linky. 3.3 Uživatelské rozhraní Skripty budou napojeny na tlačítka v uživatelském rozhraní 3D Studia MAX, aby se při stisknutí otevřela příslušná scéna a také okno s uživatelským rozhraním pro změny prvků ve scéně. V některých případech je nutné opravit nebo upravit již existující scénu, a tam by se hodilo pouze otevřít okno s UI. V uživatelském rozhraní skriptu bude možné měnit texty, velikosti písma, barvy, průhlednost, počet objektů, fotografie, hodnoty, nastavit výstup, uložit scénu nebo spustit normální či síťový render a podobně. Důležitou součástí skriptu bude animační část, kde se grafikovi nejvíce usnadní práce, protože celá animace se nastaví podle zadání. Pro tyto změny budou v uživatelském rozhraní následující ovládací prvky, které MAXscript nabízí: –
checkbox - zaškrtávací pole – pro vypnutí nebo zapnutí prvku ve scéně
–
textarea - jednořádkové textové pole – pro veškeré texty ve scénách
–
spinner - číselné pole se šipkami nahoru a dolů – pro ovládání hodnot, velikostí (obecně čísel)
–
button - tlačítko – pro dialogové okna ukládání, vkládání obrázku, import a akce
–
bitmap - obrázek – pro náhled vkládaných obrázků
–
colorpicker - výběr barvy – pro zbarvení různých objektů
–
dropdownlist - výběr ze seznamu – pro rychlý výběr z omezeného počtu možností, například výběr barev stran
16
–
listbox - výběr ze seznamu v obdélníku – vytváření různých seznamů, např. seznam souborů a objektů při práci s nehodami
–
label - popisek – pro text přímo v rolloutu. Obrázek 3.1 Prvky UI
Součástí všech skriptů bude část pro nastavení výstupu, ukládání a výpočtu (renderu) scén jak na aktuálním počítači, tak na více počítačích síťově. Bude se skládat z tlačítka „Ulož...“ a k němu příslušejícího textového pole. Tlačítkem se otevře dialogové okno, kde se nastaví výstup. Nebo je možné nastavit výstup ručně v textovém poli. Pod nimi bude tlačítko „Ulož .max“ a textové pole pro uložení scény do souboru .max. Dále zde bude tlačítko „NetRender“, kterým bude možné spustit síťový render (výpočet jedné scény na více počítačích) scény na počítačích specifikovaných IP adresou v textovém poli vedle tlačítka. Zaškrtávacím polem multiRender je možné označit možnost počítání na počítači, na kterém je skript spuštěn současně s ostatními. Tedy kombinace renderu a síťového renderu. Poslední je ve spodní části tlačítko „Render“, kterým se spustí výpočet na počítači, na kterém je skript spuštěn
Obrázek 3.2 Render UI Síťový render je možné nastavit díky vestavěným funkcím MAXScriptu. Na všech počítačích, které by se měly účastnit síťového renderu je nutné, aby běžely aplikace Backburner Manager a Backburner Server.
17
3.4 Grafiky U každé grafiky je nutné specifikovat vstupní data, uživatelské rozhraní a rozložení objektů ve scéně, případně importovaná data. 3.4.1 Telefonát K této grafice je potřeba mít připravenou fotografii v předem dané velikosti, resp. poměru stran 3 : 4. Pro současné rozlišení pracujeme s fotografiemi 300px na výšku a 400px na šířku. Při přechodu na vyšší rozlišení HDTV by bylo nutné použít obrázky s rozlišením větším, ale není to obecně problém, protože obrázek je namapován na plochu. Dále je třeba mít k dispozici už jen text, který se grafiky vloží. Telefonát bude obsahovat 4 řádky textu pro popis volající osoby. Každý z těchto textů se bude ovládat samostatně a může mít vlastní velikost, text a viditelnost. Vpravo nahoře bude jako první checkbox s viditelností, dále pole pro text a nakonec spinner pro udání velikosti. Vše 4x pod sebou pro 4 řádky textu. Pod tím se nachází tlačítka a textové pole pro nastavení cesty výstupu, uložení scény a síťové adresy dalších počítačů, které se mohou na počítání snímků podílet. Nejníže na pravé straně je tlačítko „Render“, kterým se spustí počítání snímků do zadaného adresáře. Levá strana je vyhrazena obrázku. Tlačítkem „Obrázek“ se otevře dialogové okno s výběrem souboru s obrázkem. Vedle je textové pole pro ruční zadání adresy a pod ním náhled obrázku v rozlišení 320px na 240px.
Obrázek 3.3 Telefonát – UI
18
Text ve scéně bude v pravém dolním rohu a bude se zarovnávat na pravou stranu. Obrázek by měl být na ploše v levé horní části scény.
Obrázek 3.4 Telefonát – scéna
19
3.4.2 Výrok Pro tuto grafiku je nutné mít podobně jako u telefonátu připravenou fotografii, text k popisku autora výroku a jeho znění. Uživatelské rozhraní bude velmi podobné telefonátu, pouze v pravém dolním rohu přibude 5 řádků (4 řádky pro text výroku a 1 řádek pro zdroj); tím se zmenší náhled. Také přibude zaškrtávací políčko pro možnost volby stejné velikosti textů výroku.
Obrázek 3.5 Výrok – UI
20
Obrázek bude na stejném místě jako u telefonátu. Popis osoby, která výrok pronesla, bude po pravé straně obrázku, zarovnán na levou stranu. Text výroku bude v dolní části zarovnán na střed a zdroj bude v levé spodní části pod výrokem.
Obrázek 3.6 Výrok – scéna
21
3.4.3 Sloupcová grafika Pro sloupcovou grafiku je nutné mít připravený nadpis a zdroj, odkud redaktor čerpal. Dále jsou potřebné hodnoty a jejich jednotky, barvy, případně fotografie a nadpis ke každému sloupci. Také je nezbytné vědět na kolik vteřin a jakým stylem se budou sloupce animovat. Případně je možné nastavit průhlednost sloupců nebo jejich poměr výšky k maximu. Uživatelské rozhraní bude v tomto případě rozděleno do více částí. V první části se nastaví statické parametry jako nadpis, zdroj, počet sloupců, průhlednost sloupců, jednotky, délka animace a poměr sloupců k maximu. Součástí bude také tlačítko „Import“, které slouží ke vložení dat z tabulky z Excelu, a tlačítko „Aktualizuj sloupce“. Po stisknutí jednoho z těchto tlačítek se vytvoří další dvě části UI a podle zadaných dat z importu nebo ze statické části se sestaví sloupce. V další části je možné již přistupovat k jednotlivým sloupcům a měnit jejich vlastnosti. Každý sloupec má dva nadpisy, u nichž je opět možné měnit viditelnost, obsah textu a velikost. Stejné druhy nadpisů mají pevně vázanou velikost, tzn. že pokud se například horní titulek v jednom ze sloupců zmenší, zmenší se na stejnou velikost i všechny ostatní horní nadpisy. Dále je možné přidat nad sloupec fotografii s poměrem stran 1:1. Nastavit lze i barvu sloupce, a to buď výběrem z barevného vzorníku, nebo z výběrového menu, ve kterém jsou uloženy nejpoužívanější barvy. Předposlední možností je zadat velikost sloupce v daných jednotkách. Jako poslední je ne často používaná možnost nastavení, od kdy do kdy se bude sloupec animovat (používá se u zvláštních případů tzv. „chodících grafů“, což jsou grafiky, které se animují podle toho, jak redaktor mluví). Poslední, třetí částí je část s nastavením výstupu, uložením scény, síťovým renderem a tlačítkem pro spuštění renderu.
22
Obrázek 3.7 Sloupcová grafika – UI
23
Nadpis bude v horní části scény a zarovná se na střed. Pod ním již budou sloupce a nakonec ve spodní části scény zdroj zarovnaný k levé straně.
Obrázek 3.8 Sloupcová grafika – scéna U této scény lze ze statických informací importovat nadpis, zdroj a jednotky. U každého sloupce je možné importovat oba nadpisy, hodnotu, barvu a cestu k obrázku. ODS 32 D:\cutout\loga\ods.tga ČSSD 30 D:\cutout\loga\cssd.tga KSČM 12 D:\cutout\loga\kscm.tga SZ 7 D:\cutout\loga\sz.tga KDU-ČSL 5 D:\cutout\loga\kdu.tga Aktuální volební Zdroj: CVVM % preference Tabulka 3.1 Sloupcová grafika – importovací tabulka
24
3.4.4 Koláčová grafika Také u koláčové grafiky je nutné znát nadpis a zdroj, dále nadpisy, hodnoty, jejich jednotky, barvu každé z částí a nakonec délku a druh animace. Případně je možné nastavit průhlednost částí. Koláčová grafika se velmi podobá grafice sloupcové, ubyly zde pouze fotografie a jeden nadpis. Vstupní data jsou: nadpis, zdroj, počet dílů, průhlednost dílů, jednotky a délka animace. Hodnoty jdou vždy do maxima 100 jednotek. Zbytek UI je identický se sloupcovým grafiky, až na zmíněné fotky a jeden nadpis.
Obrázek 3.9 Koláčová grafika – UI
25
Nadpis bude opět v horní části scény zarovnán na střed. Pod ním budou části koláče a v levém dolním rohu bude umístěn zdroj.
Obrázek 3.10 Koláčová grafika – scéna Importuje se nadpis, zdroj a jednotky. U každé části se vkládá nadpis, hodnota a barva. ANO 40 NE 60 Chcete radar na území ČR Zdroj: Factum Invenio Tabulka 3.2 Koláčová grafika – importovací tabulka
26
3.4.5 Linková grafika K linkové grafice je rovněž potřeba nadpis a zdroj. Dále je nutné mít pozice bodů pro jednu nebo více linek, jejich barvu, typ a délku animace. Stejně jako u předchozích grafů je první věcí nadpis a zdroj. Následuje již pouze délka animace a typ animace. Tato grafika je trojrozměrným zobrazením dat z tabulkového procesoru, proto je zde ideální možnost importu tlačítkem „Import“. Další část se však musí od předchozích grafik lišit, protože pro každou linku je nutné zadat všechny body. Je zde seznam linek ve scéně a možnost jejich přidávání nebo výmazu pomocí tlačítek. Dále je možné měnit barvu, průhlednost linky a dobu, od kdy do kdy se bude animovat. Při vytváření linky je dále možné nastavit počáteční počet bodů a jejich hodnoty. Součástí je také možnost nastavit jiné minimum a maximum na ose Y grafu. Ve spodní části je již nastavení konkrétní linky. Základem je seznam bodů s jejich x-ovou a y-ovou hodnotou a možnost jejich přidání, úpravy nebo smazání pomocí tlačítek. Vedle seznamu je konfigurace mřížky, případně její vypnutí či zapnutí. Pod tím je tvorba popisků na osách. Pro jednoduchost je zde část na vytvoření popisků, tzn. počet a velikost a část, kde se zadá číslo popisku na ose a jeho text se zobrazí vedle v textovém poli, kde je možné ho upravovat. K tomuto manuálním nastavení mřížky a jejích popisků jsem přistoupil, protože ne vždy jsou výsledky automatického nastavení podle hodnot a jejich počtu vhodné, a tak jsem tuto volbu raději nechal na grafikovi. Poslední součástí je opět část věnovaná nastavení výstupu, uložení scény síťovým renderem a spuštění renderu.
27
Obrázek 3.11 Linková grafika – UI
28
V horní části linkové grafiky je opět nadpis zarovnaný na střed. Pod ním je prostor vymezený plátnem pro kreslení linek a mřížky. V levé spodní části je text zdroje zarovnaný doleva.
Obrázek 3.12 Linková grafika – scéna U linkové grafiky se opět importuje nadpis a zdroj. Ke každé lince se importuje barva a následně za sebou hodnoty Y. 26,7 26,3 27,2 27,5 28 27,5 28,3 30,1 29 28,7 28,3 29,1 29,5 29,9 29,5 30,3 32,1 31 29,3 29 29,4 29,9 31 30 30,6 32,7 31,5 Vývoj ceny Zdroj: Factum benzinu/nafty Invenio Tabulka 3.3 Linková grafika – importovací tabulka
29
3.4.6 Sněmovní/Senátní grafika K sněmovní/senátní grafice je třeba mít nadpis a zdroj, také počet sloupců a řad sněmovny a počet sedadel posledního sloupce, dále počet stran, jejich nadpisy, barvy a počet jim příslušejících křesel. U sněmovny se uživatelské rozhraní znovu rozděluje na několik částí. Nedílnou součástí je opět nadpis a zdroj. Dále se nastavuje počet sloupců, řad a sedadel posledního sloupce. Tím se dosáhne celkového počtu sedadel, který je pod tím informativně zobrazen. Pod nastavením počtu řad je možnost měnit průhlednost. Nalevo se pak nachází počet stran neboli barev, délka animace, její druh a tlačítko na aktualizaci scény. Po jeho stisknutí se podle zadání vytvoří odpovídající počet sedadel a stran s nadpisy. Druhá část se týká přímo stran, a to jejich názvu, barvy a počtu křesel. Každá strana musí mít alespoň jedno křeslo. Jako u minulých grafů je možné animovat strany na zadané časové údaje. Poslední část se opět zabývá nastavením výstupu, uložením scény, síťovým renderem a spuštěním renderu.
Obrázek 3.13 Sněmovní/Senátní grafika – UI
30
Nadpis je v horní části zarovnaný na střed a zdroj ve spodní levé části zarovnaný doleva. Mezi nimi je prostor vymezený kvádrem pro křesla sněmovny/senátu, které budou postaveny do řad jako v hledišti a do kruhového výřezu.
Obrázek 3.14 Sněmovní/Senátní grafika – scéna Importuje se nadpis, zdroj, počet sloupců, počet řádků a počet sedadel posledního sloupce. Ke každé straně se importuje nadpis, počet křesel a barva. ODS 81 ČSSD 67 KSČM 26 SZ 13 KDU-ČSL 13 Sněmovna podle volebních preferencí Zdroj: Factum Invenio 20 10 10 Tabulka 3.4 Sněmovní/Senátní grafika – importovací tabulka
31
3.4.7 Nehody Vytvoří se základní objekty nejpoužívanějších prostředí: –
silnice bez krajnice (2 pruhy, 3 pruhy, 4 pruhy, zatáčky 90°, 45°, 22,5°)
–
silnice s krajnicí (2 pruhy, 3 pruhy, 4 pruhy, zatáčky 90°, 45°, 22,5°)
–
silnice rozšíření 2 na 3, 3 na 4 pruhy
–
dálnice (2 pruhy, 3 pruhy, 4 pruhy, zatáčky 90°, 45°, 22,5°)
–
dálnice rozšíření 2 na 3, 3 na 4 pruhy
–
křižovatka T 90° bez krajnice (2 pruhy)
–
křižovatka T 90° s krajnicí (2 pruhy)
–
křižovatka T 45° bez krajnice (2 pruhy)
–
křižovatka T 45° s krajnicí (2 pruhy)
–
kruhový objezd bez krajnice (2 pruhy)
–
kruhový objezd s krajnicí (2 pruhy)
–
železnice (2 pruhy, 3 pruhy, 4 pruhy, zatáčky 90°, 45°, 22,5°)
–
tramvajové koleje (2 pruhy, 3 pruhy, 4 pruhy, zatáčky 90°, 45°, 22,5°)
–
semafor pro auta, pro chodce
–
přechod (2 pruhy)
–
chodník
–
značky (trojúhelníková, čtvercová, kruhová)
–
prostředí (zelené, kopce, rovné)
–
obloha (západ/východ slunce, den, noc – hvězdy)
Tento soubor se doplní o prvky z databáze objektů (auta, kamiony, autobusy, vlaky, letadla, helikoptéry, stíhačky, motorky, kola, domy aj. ) Prostředí bude podle druhu rozděleno do několika scén a objekty se budou vkládat do jiné pracovní scény. V té se pak z těchto dílů sestaví konkrétní prostředí nehody. K tomu postačuje poměrně jednoduché uživatelské rozhraní, kde budou dva výběry. V prvním se bude vybírat soubor a ve druhém objekt v souboru. Vlevo od druhé tabulky bude tlačítko „Vlož“, kterým se objekt do scény vloží. V dolní části bude možné změnit aktuální adresář, ve kterém se scény hledají. Ve spodní části je nastavení výstupu, uložení scény, síťový render a spuštění renderu.
32
Obrázek 3.15 Nehody – UI
Obrázek 3.16 Nehody – scéna
33
4 Realizace 4.1 Scény Scény jsem vytvořil ve 3D Studiu MAX podle vzoru aktuálně používaných scén. 4.2 Skripty Skripty jsem realizoval po sobě od jednodušších po těžší, výjimku tvoří nehody, které jsem si nechal nakonec. Jak jsem postupně vyvíjel skripty, učil jsem se i tento jazyk a využíval jeho možností. Psát skripty je možné v jakémkoli textovém editoru, ale 3D Studio MAX nabízí editor svůj, který plně dostačuje. Lze z něj také skripty přímo spouštět. Jeho velkou nevýhodou je pouze jeden krok zpět v Undo. 4.3 Uživatelské rozhraní Prvním krokem při realizaci skriptu je vytvoření tlačítka, kterým se skript vyvolá. Aby se dal použít jako tlačítko, 3D Studio MAX vyžaduje mít tento skript v adresáři ...\3ds Max 9\ui\macroscripts\ (adresář s makroscripty). Pro tyto účely jsem si vytvořil krátký skript s příkazem fileIn, kterým se vloží další soubor, což je vhodné zejména pro síťové prostředí. Skripty budou pouze na jednom počítači a budou se vždy vkládat. Tlačítko se navolí v uživatelském rozhraní 3D Studia MAX. Ukázka tlačítkového skriptu: macroScript TELEFONAT category:"TV_Graphics" ButtonText:"Telefonat" Icon:#("TV_Graphics",1) tooltip:"TV_Graphics - telefonat" ( fileIn "D:\\tvgraf\\telefonat.ms" )
V normálním případě by musela být tlačítka dvě, jedno na otevření nové scény a jedno na úpravu již hotové scény, protože když se prvním tlačítkem otevře nová scéna, staré informace se ztratí a nebylo by co upravovat. Problém jsem vyřešil vložením kvádru do scény, a to pokaždé s jiným jménem. Pokud kvádr s příslušným jménem ve scéně existuje, je jasné, že scénu můžeme upravovat. Pokud ne, tak je to zřejmě jiná scéna a otevře se ta správná. V případě, že by grafik chtěl vytvořit grafiku od začátku a měl by ji již rozpracovanou, musel by použít příkazu reset, který scénu uvede do výchozího nastavení, a pak kliknout na tlačítko.
34
Po stisknutí tlačítka a načtení souboru se skriptem se skript nejprve pokusí otevřít soubor se scénou. Pokud ji najde, pokračuje dál, jinak ohlásí, že scéna chybí. Uživatelské rozhraní, které tento skriptovací jazyk poskytuje, se vytváří pomocí příkazů s parametry. Základem uživatelského rozhraní je okno (rolloutFloater), do kterého se posléze přidávají další podčásti (rollout). Do rolloutu se již vkládají ovládací prvky. Každý ovládací prvek se uvádí v definici rolloutu spolu se základními parametry jako jméno, pozice, iniciální hodnota a další specifikace, jako je typ spinneru (integer, float) nebo jeho rozsah. Po definici všech ovládacích prvků se definuji jejich metody, které se zavolají po akci uživatele (událost), tedy například on change (změna pole), on entered (potvrzení pole) nebo on selected (výběr možnostií). V těchto metodách jsou přímo přístupné všechny ovládací prvky příslušného rolloutu a přes jméno rolloutu i ostatní ovládací prvky. V každém skriptu se proměnná, která uchovává odkaz na okno (rolloutFloater), musí jmenovat stejně, protože na začátku se skript pokusí toto okno zavřít a otevřít nové. To lze provést, jen pokud skript jméno této proměnnou zná. Je to proto, aby se stará okna nehromadila a aby se při přechodu z prostředí jednoho skriptu do druhého staré okno zavřelo. Jednoduchá ukázka rolloutu: global nf rolloutfloater rollout staticNfo "Ukazkovy rollout" ( button btnChangeText "Vytvor text" width:80 pos:[10, 10] edittext textField "text" fieldWidth:100 pos:[150, 10] on btnChangeText pressed do ( textObject = text() textObject.name = "textObject" ) on textField entered txt do ( if $textObject != undefined then $textObject.text = txt ) ) try ( closeRolloutFloater nf ) catch() nf = newRolloutFloater "Ukazkove okno" 300 100 addRollout staticNfo nf
35
4.4 Statické grafiky 4.4.1 Telefonát a výrok (telefonat.ms a vyrok.ms) Vzhledem k velké podobnosti prvních dvou skriptů jsem jejich vývoj spojil dohromady a vytvořil k tomuto účelu knihovnu lib.ms. Řešení těchto základních problémů s textem, obrázky, ukládáním scény, nastavením výstupu a renderem se nakonec využilo ve všech skriptech, do nichž se tato knihovna vždy na začátku vkládá. V samotném 3D Studiu MAX existuje funkce zarovnání (align), která objekt zarovná nebo vycentruje. Bohužel v MAXScriptu dostupná není. Lze jen otevřít stejné okno jako po stisknutí tlačítka, což není žádoucí. Proto jsem si napsal funkci vlastní. Řešil jsem, jak ve třetím rozměru získat maximální a minimální pozice objektu. Každému objektu se přidá modifikátor editmesh, který umožňuje přistupovat k bodům, spojnicím bodů, plochám apod. Pak je možné projít všechny body objektu a zjistit jeho maximum a minimum. Na konci je nutné editmesh odebrat, aby se objekt vrátil do stavu před provedením měření. Toto je ovšem pro MAXScript časově náročné a při větším počtu objektů neúnosné. Přistoupil jsem tedy ke kompromisnímu řešení. Každému objektu, s nímž se bude takto pracovat, bude editmesh přímo přiřazen. Odpadne tak nadbytečné přidávání a odebírání. Časová náročnost se tak sice sníží, ale stále ještě nedostatečně. Vytvořil jsem proto speciálně pro tyto účely mezipaměť (cache), která tyto maximální a minimální hodnoty uchovává. (funkce getObjPos) $objekt1
min X
max X
min Y max Y min Z 4.1 Cache
max Z
bit platnosti
Tato cache se skládá z odkazu na objekt, bitu platnosti a 6 pozic – pro každou osu minimum a maximum. Zarovnání se provádí na plochu. Vždy když se změní pozice objektu, je třeba bit platnosti nastavit na 0. Často se ale pozice nemění, a tím se účinnost cache zvyšuje. Při znalosti maxima a minima obou objektů již není problém zarovnat objekt k jednomu z okrajů plochy (funkce alignText) nebo ho vycentrovat na střed (funkce centerText) Dále je třeba zjistit, zda text nepřesahuje vytyčené meze plochy. Díky zjištění maxima a minima je možné určit vodorovnou velikost textu (funkce getObjAxisSize) a porovnat ji s velikostí plochy. Pokud je větší, musí se text zmenšit. Grafický vzhled má ovšem všude definováno písmo Arial, což je písmo proporcionální – jeho šířka není funkcí velikosti. Nelze proto přímo z velikosti určit, o kolik se má písmo zmenšit, aby se vešlo do dané plochy. Lze to ovšem zjistit poměrem.
36
poměr =
pozadovana velikost textu velikost platna na ose X ⋅ velikost textu velikost textu na ose X
[-]
(funkce updateTextXSize) Dalším krokem je vyřešit zarovnání textu na výšku. Zde je to opačně – výška je funkcí velikosti. Nastává ale jiný problém. Ve scénách se na různých místech objevují víceřádkové texty, které k sobě patří. Všechny leží na jedné ploše. Nejprve se musí spočítat, zda nejsou na výšku i s mezerami větší než plátno. Pokud ano, je třeba je zmenšit, což lze opět spočítat při odečtení mezer poměrem.
poměr =
pozadovana velikost textu velikost volneho mista na ose Z ⋅ velikost textu velikost textu na ose Z
[-]
(funkce updateTextZSize) Za předpokladu, že se každý z těchto řádků může vypnout či zapnout, je nutné vyřešit pozici na výšku všech viditelných řádků tak, aby se vždy stejný počet různých řádků choval stejně. Výsledkem je funkce, do níž vstupuje pole odkazů na řádky a velikost mezery mezi nimi. (různé funkce locateText...) Funkce pak spočítá podle velikosti písma a mezery viditelných řádků, kolik místa zbývá. Následně rozestaví řádky nad sebe po přesně spočítaných hodnotách. První je od spodního okraje plátna vzdálen o část volného místa + polovinu své velikosti. Pozice druhého je polovina velikosti předcházejícího řádku + polovina vlastní velikosti + část volného místa + mezera. Poslední řádek tímto způsobem vyjde přesně a není třeba ho řešit individuálně jako první řádek. plátno plátno řádek 1 řádek 1 řádek 2 řádek 3
řádek 2
řádek 4 Obrázek 4.2 Uspořádání řádků na výšku 1 Další možnost je velmi podobná, ovšem je zde pevná velikost mezery mezi řádky. První je odspodu vzdálen polovinu volného místa + polovinu vlastní velikosti. Pozice druhého je pak o polovinu předcházející velikosti + polovina vlastní velikosti + o mezeru výš. plátno plátno řádek 1 řádek 2
řádek 1
řádek 3
řádek 2
řádek 4 Obrázek 4.3 Uspořádání řádků na výšku 2
37
Modifikací tohoto způsobu zarovnání je výpočet s maximální velikostí mezery. Pokud mezera mezi řádky překročí určitou velikost danou poměrem k velikosti písma, mezera se zmenší. Dosáhneme tím pouze lepšího grafického vzhledu. Poslední možností je zarovnání k hornímu maximu plátna. Jde o velmi podobnou funkci. Texty se skládají odshora, tedy první o polovinu své velikosti, druhý o polovinu velikosti předcházejícího řádku + polovinu vlastní velikosti + o mezeru výš. Další řádky analogicky. plátno řádek 1 řádek 2 řádek 3
Obrázek 4.4 Uspořádání řádků na výšku 3 Pro všechny obrázky ve scénách se použije plátno, na které se vloží materiál, kde je v diffuse map bitmapa (rastrová grafika, ne bitová mapa) vkládaného obrázku. (funkce changeImageMaterial) 4.5 Dynamické grafiky Po vytvoření telefonátu a výroku, tedy scén, kde se počet objektů dynamicky nemění, jsem zjistil, že u zbývajících grafik (kromě nehody) bude třeba změnit způsob vytváření skriptů tak, aby bylo možné přidávat a ubírat objekty ve scéně a v uživatelském rozhraní. Naskytlo se několik možností: 1. Pevný počet objektů – měnila by se pouze jejich viditelnost a rozmístění ve scéně. 2. Využití příkazu execute, který vykoná to, co má napsané v argumentu jako řetězec. První možnost je jednodušší z pohledu programování, ale je pracnější, protože pro každou součást uživatelského rozhraní je třeba napsat jednu funkci. Druhá možnost je mnohem elegantnější, protože každou funkci stačí napsat pouze jednou a na vhodná místa doplnit číslo objektu, například s pomocí cyklu s pevným počtem opakování (for cyklus).
38
Ukázka využití spustitelného příkazu execute boxCount = 5 updateTxt = "" for I = 1 to boxCount do ( updateTxt = "$box"+I as string+".height = 100 \n" ) execute updateTxt
Import Ve sloupcové, koláčové, linkové a sněmovní grafice je také možné načítat data z externího souboru – tabulky programu Excel. MAXScript má v sobě zakomponovanou podporu prvků Active X. Díky tomu je možné využívat různé rozšířené možnosti, jakož i přístupu do souboru Excelu. Ke každé grafice, kde je tato možnost importu vhodná, jsou připraveny vzorové tabulky, podle kterých se vytvoří konkrétní požadavek. Tyto šablony bohužel nelze upravit a znovu použít, protože Excel pracuje jinak s počtem řádků a sloupců, než by se čekalo, a proto je jednodušší vytvořit podle vzoru tabulku novou. Po stisku tlačítka „Import“ se funkce pokusí načíst všechna data v souboru obsažená, pokud se někde objeví prázdné nebo špatně vyplněné pole, upozorní na to v informačním poli prvního rolloutu. (funkce on btnImport pressed ve skriptech sloupce.ms, kolac.ms, linka.ms, snemovna_senat.ms) Animace V těchto skriptech je již také možné ovládat animaci ve scéně. U sloupcové a koláčové grafiky lze animovat sloupce třemi způsoby: 1. Konstantní rychlost – celková velikost sloupců/částí se vydělí počtem snímků. Tím se získá hodnota růstu za snímek. Tímto růstem se vydělí velikost každého sloupce/části a dostaneme počet snímků, během nichž dosáhne své velikosti s danou rychlostí růstu. Klíčové snímky se pak vytvářejí na těchto časech + čas minulého počítaného sloupce/části. 2. Stejný čas – zde se pouze vydělí celkový čas počtem sloupců/částí. Získá se tím časový úsek, za který má sloupec vyrůst. Klíčové snímky se pak vytvářejí na násobkách těchto časů. 3. Libovolné časování – klíčové snímky se kladou podle zadaných hodnot v rolloutu. U linkové a sněmovní grafiky jsou také tři možnosti: 1. Najednou – první klíčový snímek se vytvoří na začátku animace a poslední na konci. 2. Za sebou – celkový počet snímků se vydělí počtem prvků a klíčové snímky se kladou na násobky této hodnoty. 3. Libovolné časování – klíčové snímky se kladou podle zadaných hodnot v rolloutu.
39
Ukázka skriptové animace: animate on ( at time 0 ( $box1.hieght = 0 ) at time 100 ( $box1.height = 100 ) )
U grafiky koláčové a ze sněmovny/senátu bude v některých případech nutné, aby grafik upravil pozici titulků podle svého grafického cítění, není totiž možné přesně spočítat, kde má titulek být, protože pozice je nejasná a závisí na mnoha objektech ve scéně, a také oblast určená titulku je v takových případech mnohem větší než prostor, který zabírá příslušná část koláče, resp. počet sedadel. Je proto i z časových důvodů jednodušší nechat tuto poslední úpravu na grafikovi. Jsou to scény s větším počtem menších hodnot. Titulky pak do sebe zasahují a je třeba je posouvat. 4.5.1 Sloupcová grafika (sloupce.ms) Třetí skript sloupcový již musel být postaven jinak. Proměnný počet sloupců znamená změny nejenom ve scéně, ale i v rolloutech. Bylo tedy nutné rozložit rollout do více částí. První část je statická, kde se nic nemění, druhá a třetí část se generuje po stisknutí tlačítka „Aktualizuj sloupce“. Tady lze využít velké výhody skriptovacího jazyka, kdy je možné spustit jakýkoli text jako příkaz. Díky tomu si stačí napsat šablonu toho, jak má rollout vypadat, a doplňovat do ní čísla v cyklu for. Na konci se takto složený text spustí a rollout je připravený na přidání. Generaci a přidání rolloutu je možné provést víckrát za sebou. Starý rollout není nutné mazat z paměti, protože definice nového ho přepíše. Jako třetí se přidá rollout s renderem, který je opět statický. Změna scény se provádí také postupně v cyklu. Tedy nejdříve se smažou přebývající sloupce, poté, pokud se jich nedostává, se sloupce naklonují a přejmenují tak, aby se s nimi dobře manipulovalo. 3D Studio MAX používá zvláštní pojmenování při klonování a všem objektům přidává číslo. To by ani nevadilo, ale prvních devět klonů má čísla 01 – 09 a ne 1 – 9, jak by se očekávalo, což by způsobovalo problémy při procházení for cyklem. Pokud je sloupců příliš mnoho a nevešly by se do prostoru plátna, zmenší se jejich měřítko po ose X. Sloupce se poté zarovnají do prostoru podle plátna. Spočítá se zbývající prostor a rovnoměrně se rozdělí mezi plátna a po krajích. (funkce on btnCreateColumns pressed) Po vytvoření rolloutů a upravení scény je možné začít upravovat jednotlivé sloupce. Každý sloupec má dva nadpisy, které nejsou svázané velikostí mezi sebou, nýbrž se 40
stejnými nadpisy ostatních sloupců. Pokud se tedy změní velikost 1. titulku jednoho sloupce, změní se také velikost 1. nadpisů ostatních sloupců. K tomu je napsaná funkce, která nejdříve postupně zvětší všechny titulky na požadovanou velikost, a pokud alespoň jeden z nich přesahuje svoji plochu, najde minimální velikost a zmenší na ni všechny titulky.(funkce updateColTitleSize) Dále je možné načíst obrázek, což je funkce v podstatě identická s funkcí načítání obrázku v telefonátu a výroku. Každý sloupec má svůj materiál, který je standardní. Mění se pouze diffuse color na barvu vybranou v rolloutu, nebo průhlednost. Podstatnou funkcí je změna hodnoty, kterou sloupec vyjadřuje. Všechny sloupce jsou v tomto ohledu spolu svázány, při změně velikosti jednoho sloupce se všechny sloupce znovu dopočítávají. Nejvyššímu sloupci zůstává počáteční velikost, tedy 100% měřítka (scale) na ose Z. Ostatní sloupce se podle něj přizpůsobí a měřítko na ose Z se zmenšuje. Tuto hodnotu je možné zobrazovat jako text nad sloupcem. Ke každé hodnotě se podle zadaného textu v prvním rolloutu přidají na konec jednotky. Poslední možností je ruční nastavení začátku a konce animace sloupce. Sloupec se vždy animuje odspodu. Takto nastavené časy sloupců spolu nesouvisejí a nemusí na sebe navazovat. Dává se grafikovi možnost nastavit je přes sebe nebo dát mezi animace mezeru. 4.5.2 Koláčová grafika (kolac.ms) Koláčová grafika je velmi podobná sloupcové grafice a funguje na stejném principu aktualizace. Je zde pouze jeden nadpis, chybí obrázek a celková hodnota částí koláče je omezena 100 jednotkami. Je tedy nutné po každém přidání hodnoty části upravit maximum každého spinneru ve druhém rolloutu a zkontrolovat, zda nepřesáhl maximální hodnotu. Místo změny měřítka na svislé ose se zde mění stupně výřezu části koláče. 4.5.3 Linková grafika (linka.ms) Grafika linková je sice rozdělena do více částí, ale již nefunguje na principu aktualizace. První část se od minulých neliší. V druhé části se sestavuje linka a její vlastnosti. Linka je reprezentovaná objektem Editable spline, na který se přidá modifikátor Renderable spline, který ji zviditelní a dodá tloušťku. Posledním modifikátorem je Slice, kterým se linka animuje od levého konce k pravému. Při vytváření linky se hranice odečítají z plátna, které není vidět. Body se pak v prostoru dopočítávají. Problém byl ovšem s následným opětným nahráním linky do rolloutu. V případě, že je maximum a minimum v prostoru volitelné, není možné zpětně odečíst hodnoty z pozic bodů. Ukládá se proto maximum, minimum a pro jednoduchost i všechny pozice bodů do textu ve scéně. Díky tomu je možné bez dalšího dopočítání rekonstruovat hodnoty linek v rolloutu. (funkce saveLine, loadLine)
41
4.5.4 Sněmovní/Senátní grafika (snemovna_senat.ms) Sněmovní/Senátní grafika se opět vrátila k principu aktualizace. Statická část se od minulých provedení neliší. Muselo se opět přistoupit k vytvoření textu pro ukládání informací. Do textu se tentokrát ukládají informace o tom, od kolikátého křesla má strana svá křesla. (funkce saveColorSeats, saveCSArr) Tím se předejde zdlouhavému zjišťování příslušnosti křesla při nahrávání a usnadní se tím i další procesy. Při tvorbě scény dochází jako u sloupcové a koláčové grafiky nejdříve k vymazání přebytečných křesel. Zde ovšem nastal problém s „nositelem“ materiálu. Pokud se uživatel rozhodne, že chce mít méně křesel, ale stejný počet stran, mohou zmizet ze scény materiály, které byly na přebytečných křeslech, což je nežádoucí. Bylo tedy nutné zavést přenos materiálů. Ještě před tím, než se křesla smažou, se zkontroluje, zda přitom některé materiály nezmizí, a pokud ano, přiřadí se této straně jedno křeslo od konce. Tímto nositelem se tedy stanoví, že na rozdíl od ostatních grafik je zde nutné, aby strana měla alespoň 1 křeslo. Dalším problémem se ukázala změna počtu stran. Pokud se počet zmenší, stačí odstranit materiál z křesel, které příslušely této straně. Pokud se ovšem zvětší, je nutné vyhradit pro tyto nové strany místo a najít křesla z již obsazených křesel. Prostorově se křesla umisťují do neviditelného kvádru podle zadání z 1. rolloutu. Tento kvádr křeslům udává hranice pro všechny tři osy. Jsou totiž umístěna každou řadou výš a hlouběji, tak jako v hledišti. Nakonec je na všechny aplikován modifikátor Bend, který jejich pozici a natočení upraví tak, jako by byly postaveny v kruhové výseči. Na začátek jsem přidal animaci vynoření křesel v prostoru od levého kraje do pravého. (funkce on btnCreate pressed) 4.5.5 Nehody (nehody.ms) U grafiky nehod jsem využil vestavěných funkcí MAXScriptu na zjištění souborů v adresáři, pro výpis scén, pro zjištění objektů ve scéně a pro vložení objektu z externího souboru do scény. (funkce loadDir, loadObjects)
42
5 Testování První fáze testování probíhala vždy přímo v praxi nasazením do našeho pracovního prostředí. Díky tomu se odstranily nejhrubší chyby, které vznikaly při běžném postupu zadávání – netestovaly se žádné vedlejší funkce ani opakované načítání ani nestandardní chování uživatele. Stačilo, že výsledkem je použitelná grafika. Druhá fáze se již zaměřila na komplexní funkčnost. Prvotní test prověřil očekávané chování. Následoval test kritických chyb. Jsou to chyby v implementaci a vyústí vždy ve výjimku MAXScriptu, po níž přestane skript pracovat a je třeba ho spustit znovu. Tyto chyby by se určitě neměly objevovat, protože znemožňují další práci skriptu. Předposledním testem je test chybného nebo nestandardního zadání. Týká se nejenom všech UI, ale také importovaných tabulek. Skript by opět nikdy neměl skončit výjimkou MAXScriptu. Třetí fáze byla celkový test na uživatelích. Vybral jsem 6 osob, kterým jsem vysvětlil základní principy práce s televizní grafikou 3D Studiem MAX a jeho UI a zadal jim typické úlohy k vypracování (příloha C). Osoby se vyjadřovaly nahlas k tomu, co právě dělají a proč to dělají, což by mělo odhalit chyby v uživatelském rozhraní i samotné funkčnosti. Prvním problémem se ukázala orientace v UI. Vzhledem k tomu, že jsem potřeboval ušetřit co nejvíc místa, jsem mnoho polí nenadepsal. To vedlo k tomu, že účastníci nevěděli, kam co patří. Tento problém jsem vyřešil tím, že jsem doplnil manuál o obrázky a barevné popisky ke každému poli. Všichni testující se totiž shodli na tom, že stačí, když se jim jednou ukáže, kam co mají napsat. Následně jsou již schopní se obejít při vyplňování bez nápovědy. Další velmi častou chybou testujících bylo odškrtávání právě vložených textů. Zaškrtávací políčka fungují tak, že pokud se text vloží do příslušného pole, tak se sama zaškrtnou, naopak pokud se smaže, sama se odškrtnou. Testující ovšem vložili text a klikli na zaškrtávací pole, čímž ho opět odškrtli. Informaci o této vlastnosti jsem doplnil do manuálu. Při testování linkové grafiky testujícím vždy delší dobu trvalo, než objevili princip funkce. Je to dané tím, že linková grafika je ze všech nejsložitější a má odlišný postup tvorby od ostatních grafik. Po chvíli se ale testovaní s tímto postupem seznámili a postupovali správně. Při testu se podařilo odhalit jednu chybu v implementaci, která způsobila výjimku MAXScriptu. Šlo se o kontrolu mezí u nastavení popisků u linkové grafiky. Výhodou uživatelského rozhraní 3D Studia MAX je to, že si samo hlídá hodnoty zadávané do prvků UI. Nelze tedy například vložit písmeno do číselného prvku. Dovoluje také nastavit hranice zadávaných čísel.
43
6 Závěr Tato práce splňuje veškeré běžné požadavky na trojrozměrné grafiky, zadávané našemu grafickému oddělení. Dle zadání byly vytvořeny následující skripty a scény: − Telefonát − Výrok − Sloupcová − Koláčová − Linková
grafika
grafika
grafika
− Sněmovní/Senátní
grafika
− Nehody
Všechny skripty a uživatelská rozhraní byly otestovány jak grafiky, tak osobami graficky nevzdělanými. Testování probíhalo i přímo v praxi. Při současné koncepci zpracování grafiky v televizním zpravodajství je možné předpokládat, že výsledky této práce se budou využívat delší dobu. Grafické prostředí se může měnit, ale principy zůstávají stejné. Tuto práci by bylo možné v budoucnu rozšířit o nové objekty ve scénách s nehodami. Výsledky této práce je možné vidět každý den od 19:00 do 19:20 v 1.zprávách televize Prima.
44
7
Seznam literatury [1] Manuál k 3D Studiu MAX 9 menu 3DStudia MAX Help → User Reference... (http://images.autodesk.com/adsk/files/3ds_max_9_user_reference.exe) [2] Manuál k MAXScriptu, 3D Studio MAX 9 menu 3DStudia MAX Help → MAXScript Reference... (http://images.autodesk.com/adsk/files/maxscript.exe) [3] Manuál k SDK (http://images.autodesk.com/adsk/files/3dsmax9sdkhelp.chm) [4] Tutoriály k MAXScriptu na 3dbuzz.com (http://www.3dbuzz.com/vbforum/showthread.php?t=106481) datum stažení: 10.12.2006 [5] Příspěvek na fóru Autodesk (http://discussion.autodesk.com/thread.jspa?messageID=5561390) datum stažení 13.7.2007
45
A
Uživatelská příručka
Pluginy do 3D Studia MAX Nástroje pro televizní grafiku Uživatelská příručka A.1 Seznam
a popis součástí
Tento softwarový balíček nástrojů pro televizní grafiku se skládá z následujících součástí (adresář): 1. hlavní skripty (/tvgraf/) 2. scény (/tvgraf/sceny/) 3. ikony (/tvgraf/ikony/) 4. skripty pro tlačítka (/tvgraf/mcr/) 5. šablony pro importovací tabulky Excelu (/tvgraf/xls/) 6. objekty a značky pro nehody (/tvgraf/neheody/) A.2 Požadavky 3D Studio MAX verze 9 a vyšší.
46
A.3 Instalace Pro správnou funkčnost je dobré nechat adresářovou strukturu tak, jak je na CD. Instalace hlavních součástí: 1. Zkopírujete složku tvgraf do libovolného adresáře. 2. V adresáři tvgraf v souboru lib.ms upravte proměnnou baseScenePath na adresář se scénami (např. baseScenePath = “D:\\tvgraf\\sceny\\“, pozor na dvojité lomítka). Skripty lze spouštět v 3D Studiu MAX přímo v menu MAXScript → Run Script... Je také možné je přidat jako tlačítka v uživatelském rozhraní 3D Studia MAX: 1. Zkopírujte obsah adresáře ikony do .../3ds Max 9/ui/Icons/ (obecně do adresáře s ikonami UI). 2. V adresáři /tvgraf/mcr/ upravte ve všech souborech příkaz fileIn na adresář se skripty (např. fileIn “D:\\tvgraf\\telefonat.ms“, pozor na dvojité lomítka). 3. Nakopírujte obsah /tvgraf/mcr/ adresáře do .../3ds Max 9/ui/macroscripts/ (obecně do adresáře s macroscripty UI). 4. Spusťte 3D Studio MAX (musí být puštěno znovu, aby načetlo skripty) a v menu Customize → Customize user interface... v záložce Toolbars, New... vytvoříte nový panel s libovolným jménem. 5. V Group: Main UI, Category: TV_Graphics naleznete všechny skripty, které přetáhnete do nového panelu.
47
A.4 Uživatelské rozhraní Po spuštění skriptu se vždy otevře okno s příslušným uživatelským rozhraním. V něm se můžete setkat s následujícími ovládacími prvky: –
checkbox - zaškrtávací pole – pro vypnutí nebo zapnuti prvku ve scéně
–
textarea - jednořádkové textové pole – pro veškeré texty ve scénách
–
spinner - číselné pole se šipkami nahoru a dolu – pro ovládání všeho číselného
–
button - tlačítko – pro dialogové okna ukládání, vkládání obrázku, import a akce
–
bitmap - obrázek – pro náhled vkládaných obrázku
–
colorpicker - výběr barvy – pro obarvení různých objektů
–
dropdownlist - seznamový vyskakovací výběr – pro rychlý výběr z omezeného počtu možností, například výběr barev stran
–
listbox - seznamový vyber v obdélníku – vytváření různých seznamu např. seznam souborů a objektů při práci s nehodami
–
label - popisek – pro text přímo v rolloutu.
Obrázek A.1 Prvky UI
48
U většiny textových zadávání v uživatelském rozhraní je možné text ve scéně vypnout nebo zapnout zaškrtávacím políčkem po levé straně zadávacího textového pole, a po pravé lze měnit velikost písma spinnerem. Text je ve scénách omezen plátnem, při jehož překročení se sám zmenší na maximální hodnotu.
Obrázek A.2 Úprava textů Pokud vložíte text do textového pole, zaškrtávací poličko se samo zaškrtne, naopak pokud text smažete, políčko se samo odškrtne. Není tedy třeba políčko předem nebo poté zaškrtávat. U všech skriptů je možné v dialogovém okně po stisknutí tlačítka „Ulož...“, případně vedle v textovém poli nastavit výstup. Je také možné uložit scénu v dialogovém okně po stisknutí tlačítka „Ulož .max“ nebo vedle v textovém poli. Dále můžete nechat počítat scénu síťově více počítači pomocí tlačítka „NetRender“, kdy ve vedlejším textovém poli musí být specifikovány všechny IP adresy počítačů. Zaškrtávacím polem „multiRender“ je možné zapojit do počítání jak síťové počítače, tak počítač na kterém je skript spuštěn. Je také nutné, aby na všech zúčastněných počítačích, byly spuštěné programy Backburner Manager a Backburner Server. Dále je možné nechat scénu počítat tlačítkem „Render“.
Obrázek A.3 Render UI
49
A.4.1 Telefonát V telefonátu lze vyplnit až 4 řádky nadpisu. Obrázek se do scény importuje tlačítkem „Obrázek“ v pravé části uživatelského rozhraní nebo textovým polem vedle. Náhled obrázku je pod tímto textovým polem. Obrázek by měl mít poměr stran 4:3. Jeho velikost je libovolná, ale měla by se řídit velikostí výstupu (např. pro 720x576 px televizního rozlišení je vhodné 400x300 px).
Obrázek A.4 Telefonát – UI
50
A.4.2 Výrok Výrok se skládá z většího počtu částí než telefonát, ale jeho princip je podobný. Poskytuje 4 řádky na popis osoby, která výrok pronesla. Dále se vkládá obrázek s poměrem stran 4:3 tlačítkem „Obrázek“. V levé spodní části se vyplňuje výrok, na který jsou také 4 řádky. Je možné svázat velikost textů výroku zaškrtávacím polem „stejná velikost“ nad jejich zadáváním. Po zaškrtnutí se při dalším změně výroku změní všechny velikosti na posledně aktualizovanou. Po vyplnění výroku se musí stisknout tlačítko „Aktualizuj“, které u řádků s výrokem zkontroluje velikost a rozmístí je správně ve scéně.
Obrázek A.5 Výrok – UI
51
A.4.3 Sloupcová
grafika
V první části se nastavuje nejprve nadpis a zdroj. Dále lze nastavit počet sloupců, jejich průhlednost, délku animace v sekundách, typ animace, jednotky a poměr. Průhlednost je od 0 do 100. Při 0 jsou absolutně průhledné – nejsou vidět, při 100 jsou neprůhledné. Typy animací: 1. Konstantní rychlost – každý sloupec bude mít konstantní rychlost růstu. Určí se rychlost růstu v jednotkách osy/snímek a s tímto přírůstkem se každý sloupec naanimuje. 2. Konstantní čas – celkový čas grafiky se vydělí počtem sloupců. Pak každý sloupec bude mít stejný čas na to, aby vyrostl do požadované výšky. 3. Libovolné časování – lze nastavit počátek a konec animace každého sloupce libovolně od 0 do délky animace. Časy na sobě nejsou závislé a mohou se překrývat nebo mít mezi animacemi mezeru. Jednotky se zobrazují za hodnotou nad sloupcem. Poměrem je možné zmenšit všechny sloupce najednou až na 1/10 jejich velikosti. Také je možné importovat data z externího tabulkového souboru Excelu (šablony v /tvgraf/xls/) tlačítkem „Import“. Sloupce se vytvoří (aktualizují) tlačítkem „Aktualizuj sloupce“. Poté se vytvoří 2. a 3. část.
Obrázek A.6 Sloupcová grafika – UI 1.část
52
Ve druhé části se nastavuje každý sloupec. Lze nastavit až dva nadpisy. Nadpisy jsou svázané velikostí podle pořadí. Všechny první nadpisy u všech sloupců jsou stejně veliké a druhé také (ale nemusí mít stejnou velikost jako první). Pod nimi je možné vložit obrázek tlačítkem „Obrázek“ s poměrem stran 1:1, případně ho zapnout či vypnout zaškrtávacím políčkem nalevo od náhledu obrázku. Pod tlačítkem „Obrázek“ je možné vybrat libovolnou barvu sloupce. Po kliknutí se objeví paleta s výběrem. Barvu lze také vybrat z výběru pod ním z nejvíce používaných barev. Pod ním je již vlastní hodnota sloupečku jako číslo. Lze nastavit, aby se popisek s hodnotou nad každým sloupcem nezobrazoval pomocí zaškrtávacího políčka vedle hodnoty. Také je možné nastavit tomuto textu velikost po pravé straně. Pokud je v 1. části nastaveno v typu animace „Libovolné časování“, lze nastavit počátek a konec animace sloupce.
Obrázek A.7 Sloupcová grafika – UI 2.část Třetí část se týká nastavení výstupu, uložení scény, síťového renderu a renderu viz výše.
53
A.4.4 Koláčová
grafika
Nadpis a zdroj se nastaví v první části. Poté se nastavuje počet částí, jejich průhlednost, délka animace v sekundách, typ animace a jednotky. Průhlednost je od 0 do 100. Při 0 jsou absolutně průhledné – nejsou vidět, při 100 jsou neprůhledné. Animaci lze rozdělit do tří částí – konstantní rychlost, konstantní čas, libovolné časování (viz sloupce). Jednotky se zobrazují za hodnotou na části. Také je možné importovat data z externího tabulkového souboru Excelu (šablony v /tvgraf/xls/) tlačítkem „Import“. Sloupce se vytvoří (aktualizují) tlačítkem „Aktualizuj kolac“. Poté se vytvoří 2. a 3. část.
Obrázek A.9 Koláčová grafika – UI 1.část Ve druhé části se nastavuje každá část koláče. Lze nastavit jeden titulek. Titulky jsou svázané velikostí. Pod textovým polem titulku je možné vybrat libovolnou barvu části. Po kliknutí se objeví paleta s výběrem. Barvu lze také vybrat z výběru pod ním z nejvíce používaných barev. Pod ním je již vlastní hodnota části jako číslo. Lze nastavit, aby se popisek s hodnotou nad každým sloupcem nezobrazoval pomocí zaškrtávacího políčka vedle hodnoty. Také je možné nastavit tomuto textu velikost po pravé straně. Pokud je v 1. části nastaveno v typu animace „Libovolné časování“, lze nastavit počátek a konec animace koláče.
Obrázek A.10 Koláčová grafika – UI 2.část Třetí část se týká nastavení výstupu, uložení scény, síťového renderu a renderu viz výše.
54
A.4.5 Linková
grafika
U linkové grafiky je také první nadpis a zdroj. Dále je možné nastavit délku a typ animace: 1. Najednou – všechny linky se animuji z levé strany na pravou ve stejnou chvíli od začátku do konce animace. 2. Za sebou – linky se animuji postupně jedna za druhou. 3. Libovolné časování – lze nastavit počátek a konec animace každého sloupce libovolně od 0 do délky animace. Časy na sebe nejsou závislé a mohou se překrývat nebo mít mezi animacemi mezeru.
Obrázek A.11 Linková grafika – UI 1.část V druhé části je jako první seznam linek, který je zpočátku prázdný. Linku vytvoříte stiskem tlačítka „Pridej“. Maže se tlačítkem „Smaz“. Pokud nenastavíte jinak, linka se vytvoří s 10 body se základní hodnotou 0. Toto základní nastavení před vytvořením linky je možné provést po levé straně seznamu linek. Políčko počet bodů označuje základní počet bodů, za ním je políčko s iniciální hodnotou všech bodů. Každá linka má své maximum a minimum podle svého nejvyššího a nejnižšího bodu. Podle toho se posléze vykresluje. Změnou těchto hodnot se nezmění křivka, ale její vykreslování. Tak je možné posouvat křivku nahoru nebo dolů po scéně nebo nastavit tyto hodnoty stejně pro více linek pro srovnání. Toto maximum a minimum je možné upravit také po levé straně seznamu linek. Zaškrtávacím políčkem se aktivuje nastavení maxima a minima polí. Poté je možné nastavit Max Y jako maximální hodnotu a Min Y jako minimální. Dále lze nastavit barvu a průhlednost linky hned vedle seznamu linek. Pokud je v 1. části nastaveno v typu animace „Libovolné časování“, lze nastavit počátek a konec animace linky. Pokud je linek více můžete doplnit linky o popisky například zkopírováním titulku (objekt title). Tak dostanete stejné písmo se stejnými parametry.
Obrázek A.12 Linková grafika – UI 2.část
55
Pod seznamem linek je možné nastavovat přímo body každé linky. Základem je seznam bodů, kde jsou seřazeny podle svého pořadí na ose X. První je specifikovaná hodnota Y a druhé je pořadí bodů X. Po vybrání bodu ve výběru se aktualizují hodnoty v políčkách nad výběrem. Tam je také možné je upravovat. Jako první vyberete pořadí bodu na ose X, poté změníte hodnotu Y, a na potvrzení stisknete tlačítko „Pridej/Uprav“. Pokud chcete přidat ještě neexistující bod, stačí zvolit pořadí na ose X (nemusí navazovat na poslední) a hodnotu Y, poté klikněte na tlačítko „Pridej/Uprav“. Bod lze smazat tlačítkem „Smaz“. Vedle nastavení bodů lze nastavit mřížku a popisky. Mřížka se zapíná/vypíná zaškrtávacím polem. Pokud je políčka zaškrtnuté, je možné v levé straně měnit počet polí mřížky. Počet polí X(Y) znamená, na kolik polí bude mřížka na dané ose rozdělena (počet čar = počet polí + 1). Popisky lze nastavit pod nastavením mřížky. Popisky na ose X jsou pod osou X a popisky Y jsou po pravé stěně osy Y. Na každé ose mohou být popisky viditelné nebo neviditelné, což se nastaví zaškrtávacími políčky. Dále se nastavuje počet popisků na každé ose a jejich velikost. Pod tím je již nastavení textu každého popisku. Popisky se nastavují po jednom. Nejdříve vyberete číslo popisku (vždy se čísluje od pravého spodního rohu grafu) a vedle se zobrazí jeho text, který můžete následně měnit Po prvním zadání jsou všechny popisky prázdné, musí se nejdříve vyplnit.
Obrázek A.13 Linková grafika – UI 3.část Třetí část se týká nastavení výstupu, uložení scény, síťového renderu a renderu viz výše.
56
A.4.6 Sněmovní
a senátní grafika
Ve sněmovní grafice se také nastavuje jako první nadpis a zdroj. Vedle se sestavuje počet křesel v konkrétní komoře. Scéna je nastavena na poměr sloupců a řad 2:1. Nastaví se počet sloupců a počet řad, poté se ještě doplní o počet křesel posledního sloupce. Tím je možné nastavit opravdu libovolný počet křesel. O celkovém počtu křesel informuje titulek „Celkem ...“ Průhlednost těchto křesel nastavíte spinnerem „Alpha“. Důležitým nastavením je počet stran. Tím se specifikuje kolik stran (barev a nadpisů) bude ve scéně přítomno. Dále se jako obvykle nastavuje délka a typ animace (najednou, za sebou, libovolné časování (viz linková grafika)) Tlačítkem „Aktualizuj křesla“ se vytvoří 2. a 3. část nastavení.
Obrázek A.14 Sněmovní/Senátní grafika – UI 1.část Ve druhé části již nastavujete sedadla pro každou stranu (barvu). Jako první nastavíte nadpis, pod ním je výběr barvy, kde se po kliknutí objeví paleta s výběrem. Barvu lze také vybrat z výběru pod ním z nejvíce používaných barev. Následně nastavíte počet křesel. Pod tím je informační řádek s přesným rozložením. Pokud je v 1. části nastaveno v typu animace „Libovolné časování“, lze nastavit počátek a konec animace strany.
Obrázek A.15 Sněmovní/Senátní grafika – UI 2.část Třetí část se týká nastavení výstupu, uložení scény, síťového renderu a renderu viz výše.
57
A.4.7 Nehody Pro tvorbu nehod si nejdříve vytvořte vlastní prázdnou scénu (nejlépe příkazem Reset v menu File). Poté můžete začít vkládat do scény objekty. V prvním seznamu jsou soubory s objekty a v druhém seznamu jsou již objekty z vybraného souboru. Vkládají se vždy objekty se jménem začínajícím na 0_ tlačítkem „Vlož“. Ostatní objekty jsou jejich součástmi. Ve spodní části je možné změnit aktuální adresář s vkládanými soubory.
Obrázek A.16 Nehody – UI 1.část Druhá část se týká nastavení výstupu, uložení scény, síťového renderu a renderu viz výše. Seznam základních souborů a objektů v nich: 1. dalnice.max – dálnice(2, 3, 4 pruhy, zatáčky 90°, 45°, 22,5°) 2. prostredi.max – krajiny, nebe 3. silnice.max – silnice (2, 3, 4 pruhy, zatáčky 90°, 45°, 22,5°, křižovatky) 4. silnice_doplnky.max – semafory, přechod, chodník 5. silnice_spojnice.max – spojnice mezi silnicemi (dálnicemi) 2 na 3, 3 na 4 6. silnice_znacky.max – značka trojúhelníková, čtvercová, kulatá 7. zeleznice_tramvaj.max – železniční a tramvajové koleje
58
B
Vzorová zadání B.1 Telefonát Jan Novák velitel Hasičského sboru Turnov B.2 Výrok Ladislav Holý pracovník firmy "Bylo to normální. Stávalo se to každý den, ale nikdo o tom nemluvil." B.3 Sloupcová
grafika
Volební výsledky červenec 2007 ODS 35 % ČSSD 33 % KSČM 14 % SZ 10 % KDU-ČSL 7 % Zdroj: Factum Invenio na 7 vteřin B.4 Koláčová
grafika
Referendum o radaru 42 % určitě ne 34 % spíše ne 10 % neví 9 % spíše ano 5 % určitě ano Zdroj: Statistický úřad na 5 vteřin
59
B.5 Linková
grafika
Vývoj cen za poslední 9 měsíců Nafta 26,7 26,3 27,2 Special 91 28,7 28,3 29,1 Natural 95 29,3 29 29,4
27,5 29,5 29,9
28 29,9 31
27,5 29,5 30
28,3 30,3 30,6
30,1 32,1 32,7
29 31 31,5
Zdroj: Benzina Na 10 vteřin B.6 Sněmovní/Senátní
grafika
Rozložení sněmovny červenec 2007 ODS 70 ČSSD 66 KSČM 28 SZ 20 KDU-ČSL 14 Zdroj: Factum Invenio na 8 vteřin B.7 Nehody Grafika k nehodám se většinou domlouvá ústně případně po telefonu, vždy s nákresem na papír.
60
C
Obsah přiloženého CD index.html readme.txt install.txt vzorzad.txt text/ – BP.pdf – BP.odt
výchozí stránka projektu uživatelská příručka instalace vzorová zadání grafik adresář obsahující samotnou BP text BP v pdf text BP v Open Office 2.1
–
tvgraf/ – ikony/ – mcr/ – nehody/ – sceny/ – xls/
základní adresář práce obsahující hlavní skripty ikony do UI 3D Studia MAX makroskripty pro tlačítka do UI 3D Studia MAX adrešář s podklady pro nehody adresář se základními scénami adresář s importovacími tabulkami Excelu
–
manual/ – manual.pdf
uživatelská příručka uživatelská příručka s obrázky v pdf
–
html/ – abstract/ – index.html
html dokumentace
– – – – –
–
–
–
rabstrcz/ – index.html
rozšířený abstrakt
rabstren/ – index.html
rozšířený abstrakt
video/ – – – – – – – – – – – – – –
krátký abstrakt
ukázky hotových grafik s pozadím ve formátu mpg2 a statické obrázky ve formátu png
telefon.mpg telefon.png vyrok.mpg vyrok.png sloupce.mpg sloupce.png kolac.mpg kolac.png linka.mpg linka.png snemovna.mpg snemovna.png nehoda.mpg nehoda.png
61