Real Time 3D Broadcast Graphics
© Nautilus Studio Ltd. 2006-2008
Bevezetés A Nemo3D PC-alapú, real time (valósidejű) térbeli (3D) grafikára épülő feliratozó rendszer. Élő adásfeliratozásra és utómunkára egyaránt alkalmas, de jóformán bármilyen speciális broadcast grafikai feladatra (vetélkedők, játékok, sport, időjárás, választási grafika, stb.) adaptálható. Szakít a hagyományos - Aston, ill. Chyron típusú - feliratozók működési elvével, a feliratok előre megtervezett minták (template-ek) kitöltésével készülnek el. Ezáltal egy adott műsor felirataira az előkészítéshez szükséges idő a korábbi modellhez képest a töredékére csökken. Szakít a hagyományos feliratozókkal abban az értelemben is, hogy minden grafikai elem animálható, mégpedig valódi, térbeli effektekkel. Semmilyen, a hagyományos rendszereknél tapasztalt korlát nincs: nem számít, hány rétegben kell feliratot egymásra rakva megjeleníteni, mekkorák a betűk, vagy hány mozgatásra és egyéb effektre van szükség. Minden azonnal létrejön és lejátszható. Csakis és kizárólag a hardware szabhat határt az elképzeléseknek. Márpedig a PC-k és a 3D-s gyorsítókártyák mára elérték felnőtt korukat, köszönhetően a számítógépes játékpiac irtózatos fejlődésének. Még néhány évvel ezelőtt is egyedül nagyobb kályhaméretű - Silicon Graphics workstationöktől lehetett számítani megfelelő sebességre a real time 3D-hez. Ma teljesen más a helyzet: egy erős, de egyáltalán nem különlegesen felszerelt PC jócskán meghaladja a Silicon egykori csodáinak teljesítményét. Ezzel párhuzamosan, ámbár jóval lassabban, az addig csak a legnagyobb - és persze legdrágább - broadcast grafikai rendszerekkel megvehető real time 3D is egyre inkább elterjedté és elérhetővé válik. Ugyan ma még csak néhány gyártó fejleszt és telepít broadcast grafikai célra (feliratozó, virtuális stúdió, stb.) 3D-s rendszert, de ezek mindegyike legendás. Alighanem tudását tekintve is, árát illetően azonban feltétlenül. Aki foglalkozik broadcast grafikával, annak számára biztos sokat mond a vizRT, Orad Maestro, Brainstorm, Wasp3D és a tog3D, de - bár erősen titkolják - a régi nagy feliratozók gyártói is, mint a Chyron és az Aston, legújabb termékeiben a felsorolt rendszerek valamelyikét használják grafikus engine-ként. A stúdió feliratozó, mint zárt rendszerű, ún. célgép, lassan, de biztosan megszűnik létezni. A Nautilus Stúdió, mint a Nemo3D fejlesztője, ezt a folyamatot szeretné annyiban gyorsítani, hogy bebizonyítja, a broadcast minőségű, real time 3D nem csak a nagyok játékszere, nem csalás, és nem ámítás. Éppen ellenkezőleg, ma már egészen hétköznapi dolog, olyannyira, hogy minden stúdióban csakis ilyet illene tartani. Ha hétköznapi, akkor az ára is legyen hétköznapi. Ezt két fontos tényező teszi lehetővé: a szükséges hardware feltételek egyre elérhetőbbé váltak, és az is, hogy a software nincs szétszabdalva modulokra. Ami opció, az legfeljebb árcsökkentő tényezőként jöhet számításba, semmiképp sem árnövelőként. Tudásban és képminőségben azonban semmilyen kompromisszumot nem kötöttünk: a Nemo3D vetekszik bármelyik csúcs high end - rendszerrel. Sőt. A Nemo3D eredetileg munkaeszköznek készült, mégpedig a fejlesztők, azaz a Nautilus Stúdió saját céljaira. Minthogy tizenhat éve dolgozunk különböző televíziós műsorokban, legyen az vetélkedő, sport vagy bármi, ami broadcast grafika, mindig is szükségünk volt saját fejlesztésű eszközökre. Ahol igényelték a munkánkat, többnyire nem támaszkodhattunk semmilyen, már létező "bolti" termékre, vagy ha igen, akkor mindig úgy éreztük, hogy jó ez, de nem az igazi. A tizenhat évi folyamatos fejlesztés csúcsa és terméke a Nemo3D. Olyan munkaeszköznek szántuk, amivel mi magunk is szívesen dolgozunk, és lévén túlzás nélkül többezer műsorban és közvetítésen vettünk részt, az ott szerzett rengeteg tapasztalat nagy segítségünkre volt. A Nemo3D három fő komponensből áll. Az első a tervező program (Nemo3D), mely egyszersmind
2
a második fő komponenst, a teljes grafikus motort (NemoEngine) is tartalmazza, a harmadik pedig a különálló programként működő lejátszó (NemoPlay). A lejátszó és a tervező telepíthető ugyanarra a gépre, de a lejátszót jóformán bármilyen PC-re feltehetjük, akár egy notebookra is. Egyetlen lejátszó akár négy, egymástól független NemoEngine-t képes vezérelni, plusz egy szintén független - ún. Preview csatornát is kezel. A Nemo3D real time 3D grafikára épül. PC-alapú real time 3D grafikai fejlesztőrendszer napjainkban kétféle létezik, az OpenGl és a DirectX (Direct3D). Az előbbi eredetileg a Silicon Graphics fejlesztése, az utóbbi a Microsofté (éppen ezért csakis Windowson működik, ellentétben az OpenGl-lel). Mindkettő állandóan változik, és egyre jobb lesz. Bár rengeteg vitát folytattak arról, melyik a jobb, valójában alighanem egyik sem jobb a másiknál. A profi, ún. high end broadcast grafikai rendszerek a Wasp3D kivételével OpenGl-t használnak, leginkább azért, mert vagy nem Windowsos környezetben készülnek, vagy mert eredetileg Silicon Graphicsre kezdték fejleszteni őket. A Nemo3D is OpenGl-re épül, annak idején - ki tudja miért - így döntöttünk. Lehetne DirectX alapú is, lévén kizárólag Windowsos környezetre készült és csak abban működik. De nem így történt, és ez sem előnyt, sem hátrányt nem jelent. Mindössze annyi a jelentősége, hogy a program kezelése során minduntalan vissza fognak köszönni olyan paraméterek, kifejezések, amik az OpenGl-ből származnak. Akinek van némi tapasztalata OpenGl-es programozással kapcsolatban, annak sokkal könnyebb dolga lesz a Nemo-val, de azért ez távolról sem előfeltétetel. Nem előfeltétel némi matematikai ismeret (algebra, geometria) sem, de azért ez sem árt. E téren nekünk, mint a rendszer fejlesztőinek sincs túl sok dicsekednivalónk, úgyhogy megígérhetjük, nem fog fájni. Kifjezetten nagy előny a Nemo kezelésének elsajátításához, ha valakinek van tapasztalata valamelyik 3D-s animációs program kezelésében. Tulajdonképpen a Nemo is az, csak a lehetőségek korlátozottabbak - mert hogy hadware függő -, viszont minden sokkal gyorsabb, sőt valósidejű, real time. A másik különbség a betűk és általában a szövegkezelés, ami a Nemoban sokkal komolyabb, mint általában egy 3D-s animációs programban. Ez is érthető, ez mégis csak alapvetően egy broadcast feliratozó. Hardware igény: A NemoEngine felbontás-független, azaz a kép mérete teljesen közömbös számára. A végcél broadcast grafika lévén, a felbontást a használni kívánt broadcast szabvány határozza meg. Ez pedig lehet a hagyományos standard képméret (SD), ezen belül az USÁ-ban és még néhány országban, így Japánban használatos NTSC szabvány, illetve a világ egyéb részein preferált PAL. Egyre jobban terjed azonban a sokkal jobb képminőséget eredményező HD, azaz nagyfelbontású kép. Ez sem egységes, több különböző méretű és tulajdonságú videoszabvány gyűjtőneve. Annyi közös bennük, hogy a HD-kép nagyjából ötször annyi pixelt (képpontot) tartalmaz, mint az SD. Ez pedig a 3D gyorsítóként használt grafikus kártyának, a processzornak és a broadcast jelért felelős videokártyának is összehasonlíthatatlanul nagyobb megterhelés. Minthogy feltett szándékunk volt, hogy a lehető legelérhetőbb árú rendszert állítsuk össze kereskedelmi okokból és saját céljainknak egyaránt -, igyekeztünk olyan hardware eszközöket támogatni, melyek az igényeket messzemenőleg kielégítik, könnyen hozzáférhetőek és gyártóik ha lehet a broadcast iparban ilyet mondani - tömegterméknek szánják őket, azaz ár-érték arányuk kiváló. 1. Broadcast hardware-ként az alábbi gyártók termékeit támogatjuk: a. Blackmagic Design Decklink Pro, Decklink HD Pro, Decklink HD Pro PCIe, Decklink
3
HD Extreme, Multibridge (bármelyik). A Blackmagic kártyái kiváló minőségűek, egyszerűen kezelhetőek és kifejezetten olcsók. Grafikai célra egy - elég nagy - hátrányuk van: egyidejűleg vagy csak a bemeneti, vagy csak a kimeneti oldal működik. Így a Nemo csak videó és kulcsjelmegjelenítésre tudja használni, real time videobemenet nincs. b. Bluefish444 Pride, Envy, Greed, Dual Link Pro A Bluefish nagy névnek számít a PC-s broadcast termékek világában. Minőségük és megbízhatóságuk alapján okkal. A HD kártyáik azonban a más gyártókéhoz képest jelen pillanatban elfogadhatatlanul drágák, így azokat egyelőre nem támogatjuk. A felsorolt kártyák SD felbontásúak, a Pride csak video kimenetet (fill + kulcs), míg a több ki- és bemenetet egyidejűleg produkál. c.
DVS SD Station, Centaurus II, Centaurus II LT A német DVS cég termékei is méltán híresek magas minőségük és sebességük miatt. Amennyiben HD felbontásra és egyidejű ki- és bemenet használatára van szükség, a Centaurus II (vagy a Centaurus II LT) az egyedül támogatott megoldás.
Csak tervezéshez vagy preview kimenet előállításához a VGA-kimenet is használható, ehhez semmilyen broadcast kártya sem szükséges. 2. VGA-kártya A broadcast jeleket biztosító kártyák mellett a legfontosabb része a rendszernek a VGAkártyaként ismert 3D gyorsító. A Nemo alapvetően az NVIDIA által gyártott kártyákat támogatja, ezek közül is elsősorban a G80 vagy újabb chippel ellátottakat. Alighanem minden jobb ATI (AMD) kártyával is hibátlanul működne, tesztelni azonban csak NVIDIA kártyákkal teszteljük. Ezek közül - ha új kártyát kellene vásárolni - a minimális igény a 9600GT vagy a 8800 GT lenne, ez alighanem elég jó általános, SD felbontású munkához. Optimális pedig - különösen HD felbontáshoz - a Quadro 5600, mert ez a leggyorsabb (és persze a legdrágább is). A Quadronál aligha sokkal lassabb - viszont sokkal olcsóbb - a 8800 Ultra, ami szintén ajánlott HDfelbontáshoz. 3. Processzor: Legalább kétmagos processzor kell valamirevaló 3D-hez, de az is csak korlátozottan alkalmas: tervezéshez, csak VGA-kimenet használata esetén megfelel egy gyorsabb kétmagos. Minden egyéb esetben négymagos (vagy duál kétmagos) processzor a minimum. Manapság ez már nem számít egetrengető igénynek. HD-felbontáshoz a létező leggyorsabb négymagos processzor sem túlzás, viszont egyelőre dual négymagos (azaz összesen nyolc processzormag) megoldástól nem várható jelentős sebességnövekedés. 4. Memória, Hard disk: A minimális memóriamennyiség 2GB, de nem árthat a több. A hard disk igény csak akkor jelentős, ha szándékunkban áll egyszerre több AVI file-t lejátszani, vagy akár csak egy, kevéssé tömörített HD-felbontású AVI-t. Ebben az esetben valamilyen Raid-tároló lehet a megoldás. Egyébként meg megteszi egy közönséges IDE vagy SATA szabvány disk is.
4
5. Monitor méret: Igyekeztünk a lehető legkevésbé pazarló felhasználói felületet létrehozni, hogy kisebb monitor is elegendő legyen, beférjen közvetítő kocsiba is. Normál (SD) felbontáshoz elegendő egy közönséges 17” LCD (1280*1024), míg HD-hez minimum 20”(1680*1050). 6. Operációs rendszer: Ez jelen pillanatban csak és kizárólag a Windows XP Service Pack 2. A Vistával még nem tesztelünk, korainak tartjuk, régebbi Windowsok meg szóba sem jöhetnek. Terminológia A programok részletes leírása előtt néhány szó a gépkönyvben ismételten előforduló kifejezésekről. Mint szinte minden számítógépes software-nek, a Nemonak is megvannak a maga kulcsszavai, melyek természetesen a - némileg gyermekded - fantázia szülöttei. Végülis Nemo, NemoEngine, NemoPlay: egyik se valami előkelő kifejezés, legfeljebb utalás - mint cégünk neve, a Nautilus - Jules Verne híres kapitányára. Túl sok meglepetést egyetlen Windowsfelhasználónak sem okozhatnak ezek az elnevezések, megszokhatták már a különféle "varázslók" után. A Nemo3D által használt alap filetípus a Page Collection (oldalgyűjtemény, de ha úgy jobban tetszik: könyv) Ez egy adott design feliratainak és egyéb grafikai elemeinek a gyűjteménye. Hivhattuk volna Projectnek is, de az túl egyszerű meg közönséges lett volna. Minden Page Collection tetszőleges számú Page-ból (oldalból) áll (micsoda meglepetés!). Egy Page pedig egy felirat, grafika, logó, vagy bármi más logikai egysége. Az egyes grafikai elemeket tehetjük külön Page-re vagy ugyanarra, ahogy az logikailag és kezelhetőség szempontjából a legjobbnak tűnik (erről később bővebben). Minden Page további tetszőleges számú Object (ojjektum)-ből épül fel. Ezek a Page építőkövei. Az Objecteknek több típusa van, és mind rendelkezik különféle Poperties (tulajdonságokkal). Néhány tulajdonság (pl. térbeli elhelyezkedés) minden Object-re, de a legtöbb tulajdonság csak az adott Object típusra jellemző. A legtöbb Objectnek van színe, anyaga, esetleg mintája, textúrája is. A textúra lehet kép, videó (korábban felvett clip vagy élő kamerakép) is. Az anyag neve a Nemoban - elég magától értetődő módon - Material, a textúra meg Texture A Page-eken belül több Action-t adhatunk meg. Actionben új objektumot nem lehet létrehozni, de a Page-hez már létrehozott
5
objektumokkal különböző mozgásokat, illetve más és más animációt lehet egy Actionnel létrehozni. A legegyszerűbb Action általában a képen már kint lévő felirat képről történő levételéhez készül. Ehhez a már a Page-nél létrehozott objektumokat használjuk fel, és pillanatnyi állapotukból (hely, méret, átlátszóság, stb.) valamilyen már nem látható állapotra történő animálással "vesszük le" a képről. A Nemo3D template-alapú feliratozó, a megtervezett felirat mintaként szolgál későbbi, tetszőleges számú felhasználáshoz. Egy feliratban vannak állandó és változó elemek. Az állandó lehet egy közönséges névfeliratnál a névalap, ennek baloldalán esetleg helyet foglaló logó. A változó pedig maga a szöveg, pl. a műsor egy szereplőjének neve, esetleg kiegészítve egyéb információkkal. A lejátszóban (NemoPlay) csak ezeket a változó adatokat kell megadni, és máris a már aktualizált felirat kerül lejátszásra. Ahhoz, hogy a NemoPlay tudja, melyek a felirat változó elemei, ezt a tervezéskor meg kell adni, erre szolgál az Import Egy import egy adott felirat valamely változó elemének a megjelölésére szolgál. Az Importoknak sorszámuk van, hogy a NemoPlay azonosítani tudja őket.
6
I. Page Collection, Page Egyszerre egy Page Collection adataival lehet dolgozni, így nem meglepő, hogy a File menü minden programban megszokott pontjai (New, Open, Save, Save As) is a Collection fájlok kezelésére szolgálnak. Az éppen aktív Page Collection neve a Toolbaron is megjelenik.
New Új Collectiont hoz létre, ami egyszersmind a megadott névvel azonos mappát, illetve azon belül további három mappát hoz létre. Bár a mappák helye tetszőleges, az ajánlott és alapként felkínált hely a \Nemo3D\Data\A_Collection_Neve. A három további mappa, amit a program magától, a Collection mappán belül létrehoz, a következő: 3DModels: A programba beimportálandó 3D-s modellek tárolására: Fonts: Megfelelő formátumra konvertált fontok helye (jelenleg nem használt) Images: Bitmapek, képszekvenciák illetve AVI file-ok tárolására. Open A menüponton belül a háttértárolón lehet keresni a megfelelő Collection file-t (filenev.pco típusú file), de a legutoljára betöltött négy file-t a program megjegyzi, ezeket közvetlenül a menüből is elérhetjük. Save, Save As, Exit Alighanem magától értetődik.
7
Restore A Nemo a maximális biztonságra törekszik, ezért minden egyes mentésnél backupot készít, és a legutolsó öt backup file bármikor rendelkezésre áll. Ha valamit elrontottunk, így mindig vissza lehet térni egy korábbi változathoz, az időrendi sorrendet a file kiterjesztésésnek utolsó betűje adja meg, mégpedig az abc sorrendnek megfelelően, időrendi sorrendben: .pco .pcp .pcq .pcr .pcs .pct Azaz a .pct file mindig az éppen editált filehoz képest az öttel korábban kimentett változat neve. A Restore menüben lehet valamelyik korábbi változat betöltésével egy korábbi állapotot visszaállítani. Import Egy adott felirat, azaz Page minden adatát át lehet importálni egy másik Collectionből. Így ismétlődő feladatokat nem kell újra meg újra elvégezni csak azért, mert változott a design. Akár a programhoz adott Tutorial Collectionből is be lehet importálni bármelyik Page definíciót. A létrehozott Collectionhöz tartozó valamennyi Page neve a Pages panelben látható. A nevek természetesen egy double clickket követően megváltoztathatók.
8
A Pages panel mellett lévő gombokkal, új Page-et vagy Action lehet létrehozni vagy éppen törölni, illetve az Action Logic menüt hívhatjuk elő, amivel az egyszerre a képernyőn lévő Page-ek közti kölcsönhatást állíthatjuk be (l. később, de legyen itt egy egyszerű példa: amikor behívunk egy névfeliratot, az automatikusan leveszi az addig ott lévő logót oly módon, hogy meghívja a logóért felelős Page megfelelő Action-jét. 1. Objektumok és tulajdonságaik A kiválasztott Page objektumai az Objects panelben találhatók, de a Toolbaron is mindig látható a kiválasztott Page és az éppen kiválasztott Objektum neve. Ha egy új Page-et választunk, az addigi objektumok törlődnek a képről. Ha viszont az újabb Page nevére a Shift gomb egyidejű lenyomásával kattintunk, akkor az új Page objektumai a régiek törlése nélkül jelennek meg. Így a tervezési fázisban is megnézhetjük - a lejátszóban ez gyakran előfordul, sőt, ez fontos erénye a Nemonak -, hogy néz ki, ha az egyes Page-ek egyszerre szerepelnek a képen.
Az Objects Panel alatt található gombokkal hozhatunk létre vagy törölhetünk ki Objektumokat
változtathatjuk meg azok sorrendjét:
9
és egymáshoz képest elfoglalt hierarchiáját:
A hierarchiában egy másik objektum (szülő) alá rendelt objektum (gyerek) ún. közös tulajdonságai örökölhetik a szülő közös tulajdonságait, így lehetővé válik több objektum együtt történő kezelése, animálása. Objektumtípusok: 1. Text A legközönségesebb, de egyúttal - feliratozóról lévén szó - legfontosabb objektum. Egy vagy több sornyi szöveg kezelésére szolgál. A Text Objectnek vannak más típusokkal Közös tulajdonságok:
Enable:
Engedélyezés.
Layer:
Réteg. A Nemo három egymástól független rétegben helyezi el az Objektumokat. A három réteg elnevezése: Background (háttér), Foreground (előtér), és Top (Legfelső). A rétegek használatának az ad jelentőséget, hogy igen gyakran elődordulhat olyan helyzet, hogy a valódi 3D nem felel meg a céljainknak. Valódi 3D-ben ugyanis ami közelebb van a kamerához, az eltakarja azt, ami hátrébb van. De - például - ha egy logót állandóan szeretnénk megjeleníteni, függetlenül
10
minden egyéb felirattól, akkor minden másnál közelebb kellene helyezni a kamerához, különben előfordulhat, hogy takarásba kerül. Márpedig ez nehezen, vagy nehezen sem oldható meg, és minél közelebb van valami a kamerához, a perspektivikus torzulása is annál nagyobb. Viszont ha egy feljebb lévő rétegre helyezzük, akkor mindenképpen felette lesz a képen minden másnak, ami egy lejjebb lévő rétegen van, függetlenül attól, hogy mi milyen távolságra van a kamerától.
Translate x,y,z:
A térbeli elhelyezkedés a koordinátarendszerben
Rotate x,y,z:
A térbeli forgatás (fokokban) az x,y,z tengelyekhez képest.
Scale x,y,z:
Az object mérete az eredetihez képest (1,1,1 = eredeti méret)
Transparency:
Átlátszóság (0=teljesen átlátszó, 1=átlátszatlan)
A panel jobb alsó sarkában lévő R (reset) gombbal valamennyi közös tulajdonság visszaállítható alapállapotba (Ami Scale és Transparency esetén 1, a többi paraméternél 0). És vannak egyedi tulajdonságai (jó sok): Properties panel, Object tab:
11
•
maga a szöveg, ami lehet begépelt, vagy txt file-ban megadott. A Nemo3D támogatja a Unicode-ot, így minden nem script alapú nyelv valamennyi betűje elérhető, feltéve, ha ezt az adott font is támogatja. Ez egyszersmind azt is jelenti, hogy csak Unicode kódolású text file-ok betöltése esetén számíthatunk a rendes magyar ékezetek megjelenésére, tehát ha a szöveget mondjuk Microsoft Word-ből mentjük ki, a Unicode Text opciót válasszuk hozzá.
•
Font: A Nemoba importált Truetype fontok listájából választhatunk. L. Import Fonts.
•
style: ahogy a Windowsban már megszokhattuk: a font lehet regular, bold, italic vagy bold italic. Az adott font importálásakor meg kell adni, mely stilusokra van szükségünk, tehát ha pl. italic fontot szeretnénk, akkor azt úgy is kell a Nemoba importálni.
•
material: a már definiált anyagok listájából közül választhatunk.
•
kerning: betűk közti extra távolság.
•
charWidth: betűszélesség
•
charHeight: a betű magassága
•
maxWidth: amennyiben a szöveg csak egy meghatározott területet foglalhat el, a Nemo addig változtatja betű paramétereit, hogy eleget tegyen ennek. A maxWidth adja meg, mekkora méretre akarjuk összehúzni a szöveget. Amennyiben maxWidth>0, a Nemo a kerning, charWidth és charHeight paraméterek csökkentésével próbálja a megadott méreten túllógó szöveget összébb húzni. A kerningMin, charwidthMin és charHeightMin paraméterek megadják azt a minimális értéket, aminél jobban nem csökkenthetők ezek a betűk méretét befolyásoló adatok. A Nemo előszőr a kerning csökkentésével, majd - ha az önmagában nem hozza meg a szükséges méretcsökkenést, a betű szélességét csökkenti, ha ez se elég, akkor a betű magasságát is változtatja.
•
justifyX: igazítás, vízszintes irányban. Lehet balra, középre vagy jobbra (left, center, right)
•
justifyY: igazítás, függőleges irányban. Lehet lefelé, középre vagy felfelé (bottom, middle, top).
•
wordwrap: szótörés.
•
typeWriter: régi feliratozó trükk, ahol a betűk egymás után íródnak ki. Ha értéke 1, az összes betű látszik, ha 0, egyik se. Ha ezt a paramétert animáljuk 0-tól 1-ig, definiálható sebességű typewriter effektet kapunk.
•
character animation: betűnkénti animáció ki- és bekapcsolása
•
charOffsetX, charOffsetY, charOffsetZ: A szöveg betűinek távolsága betűnként az itt megadott értékekkel nő (az x,y,z tengelyek mentén). Ha ezt az értéket animáljuk úgy, hogy a végső érték 0, egyesével "berepülő" betűket kapunk.
•
charOffsetT: Az előző három paraméter animálása esetén az x,y,z offseten kívül az időzítést is lehet betűnként módosítani.
•
shadow: Nem valódi árnyék, hanem a 2D grafikából is ismert offset shadow. Valójában a
12
szövegnek egy másolata, amit a Nemo mintegy árnyékként a szöveg mögött helyez el. •
colour: az árnyék színe
•
offsetx, offsety: az árnyék poziciója a szöveghez képest.
•
opacity: itt az árnyék átlátszósága
•
- background: a szöveg mögött automatikusan egy téglalap alakú alapot is elhelyezhetünk. Ennek méretét mindig a szöveg x,y irányú kiterjedése adja meg, azaz pont akkora, amekkorának lennie kell. Az alapnak az anyagát a rendelkezésre álló Materialek közül a listából választhatjuk ki.
•
offsetL, offsetR, offsetB, offsetT: ha mégis nagyobb alapot szeretnénk, mint a szöveg maga, akkor erre minden irányban van lehetőség (L=bal, R=jobb, B=lent, T=fent).
ClipBox paraméterek: Minden Object számára definiálhatunk egy dobozt, amin kívül eső részei nem látszanak. A dobozt valójában hat, egymást metsző vágósík adja meg (L=bal, R=jobb, B=lent, T=fent, N=elülső, F=hátulsó. A hát vágósík bármelyikét be- és kikapcsolhatjuk, illetve a kijelölt 0 értékhez képest eltolhatjuk. A 0 érték mindig az objektum széléhez igazodik, így például ha az L vágósík be van kapcsolva és értéke 0, akkor éppen az objektum bal szélénél van. A ClipBox segtségével egyszerűen létrehozhatunk tetszőleges wipe effektet, mégpedig a tér bármelyik irányában. •
global: ha ez a paraméter be van kapcsolva, a vágósíkok nem az objektum koordinátáihoz képest számított relatív koordinátarendszerben számolódnak, hanem a fő, ún. világkoordinátarendszerben. Ezáltal a klasszikus Push effecthez hasonló trükkök létrehozása válik lehetővé.
Clone paraméterek: Táblázatok készítésekor, vagy például sportfeliratozás esetén egy csapatösszeállítás sorait igen fárasztó lenne minden sorhoz külön-külön megadni, ráadásul a sorok száma is változhat. A clone (klón) éppen erre való. Segítségével megadhatjuk, hogy az adott objektumból, azonos paraméterek mellett, hány darabot szeretnénk. Az egyes klónok paraméterei ugyan azonosak, de természetesen a szöveg maga változhat (különben sok értelme nem lenne az egésznek). •
number: A klónok száma. Maximális értéke 100.
•
Offset x,y,z a klónoknak az előző klónhoz képest számított relatív távolságát adja meg.
•
Offset time: azt az időbeli eltolást adja meg, amennyivel mozgás közben egy adott klón később ér el ugyanarra a pontra, mint a sorban előtte lévő klón, ezáltal szép kígyózó mozgásokat lehet létrehozni.
•
RowMax: Ha ez nullánál nagyobb szám, a klónok nem egy egydimenziós vonal mentén sorakoznak fel, hanem mint egy négyzetrács pontjainál, sorokat és oszlopokat alkotnak. A RowMax az egy sorba kerülő klónok számát határozza meg.
13
Ha pl. a klónok száma 48, és RowMax=6, akkor a 48 klón 8 sorban foglal helyet, és minden sorban 6 klón lesz. •
ColumnMax: Ha ez nullánál nagyobb szám, akkor a klónok egy kocka rácspontjaira kerülnek.
Ha pl. 96 klón van, és Rowmax=6, ColumnMax=8, akkor a klónok nyolc sorban és hat oszlopban, és két rétegben foglalnak helyet. Ennek ugyan sok értelme nincs, csak egész jól néz ki. Inherit from Parent (Öröklés a szülőtől): Az egyes objektumokat hierarchikusan egymás alá, illetve fölé rendelhetjük. Erre jó példa, amikor a névalapra kiírandó szöveget hozzárendeljük magához a névalaphoz. Így elég magát a névalapot mozgatni vagy forgatni, a szöveg követni, azaz "örökölni" fogja a névalap közös paramétereinek változását. Ezáltal ún. szülő-gyerek viszonyba kerülnek, a névalap a szülő, mert hierarchiában feljebb van, a szöveg pedig a gyerek. Természetesen a hierarchia lehet többszörös, azaz a szülő is lehet egy másik objektum gyereke. A szülőtől öröklött paraméterek viszont korlátozhatók, sőt, eleve csak az ún. közös tulajdonságok öröklődhetnek. Nem mindig hasznos az, ha az összes közös paraméter változását örökli a gyerek, a • • •
- translate (mozgatás), - rotate and scale (forgatás, méretezés), és - transparency (átlátszóság)
paraméterek öröklése ki- és bekapcsolható. A forgatás és skálázás csak egyszerre kapcsolható ki- és be, aminek matematikai okai vannak, de ez általában nem jelent súlyos korlátozást. Szövegbevitelhez használható speciális karakterek: Ha sok és hosszú szöveget szeretnénk bevinni, rengeteg többletmunkával járhat, ha olyan apró ok miatt, mint betűtípus csere, szín vagy stílusváltoztatás, újabb és újabb Text objektumot kell létrehozni. Ezért a szövegben elhelyezhető speciális karakterekkel, - a html-ből kölcsönvett kifejezéssel - tagekkel egyazon Text objektumon belül is van lehetőség egyes tulajdonságok akár csak átmeneti megváltoztatására. A tagek a következők lehetnek: •
Tab: ez persze nem "speciális" karakter, nem is tesz mást, mint - bár ez állítható - nyolc szóközt helyez el a szövegben.
•
#Fx_ Betűtípust vált menet közben. Az x egy maximum egyjegyű szám, ami a Nemoba importált fontok listájából a megadott sorszámú fontot állítja be (a fontok listájában az 1. font a 0-ás, a második az 1-es, stb. sorszámot kapja. Ebből következően a lista 11. betűtípusa már nem is érhető el, de hát normális az, aki egy projecthez ennyi fontot használ?
•
#Cx_ Anyagot (material) vált menet közben. Az x egy maximum egyjegyű szám, ami a definiált anyagok listájából a megadott sorszámú anyagot állítja be (a lista első eleme itt is a 0-ás sorszámot kapja)
•
#fx_ A betűtípus megtartása mellett stílust vált. A lehetséges stílusok a regular, bold, italic, bold italic, de ezek is csak akkor érhetők el, ha a font importálásakor a kért stílust is megjelöltük (l. Font Import).
14
Az x itt is egyjegyű sorszámot jelöl, a 0 a regular, 1 a bold, 2 az italic és 3 a bold italic.(új sor) •
##(új sor). Amennyiben az adott Text objektumnak több klónja van, az egyes klónok által kiírandó szöveget kell ezzel a megjelöléssel (tag) elválasztani. Például: Ez az első klón szövege ## Ez már a másodiké, pedig több soros ## Innentől már a harmadiké, de ha háromnál több klón van, akkor az összes többi is ezt az utoljára megadottat fogja használni.
2. Primitívek Egyszerű 3D modelleket a Nemo is elő tud állítani, ezek miatt nem kell elővenni semmilyen 3D modellező programot. Ezeket hívjuk összefoglaló néven primitíveknek. A legegyszerűbb primitívnek, a téglalapnak (Rectangle) egyéb kitüntetett szerepe is van (l. lejjebb). Talán még kilóg a sorból a piechart is, ami kördiagrammok készítéséhez jelenthet nagy segítséget. Közös tulajdonságaik: megegyeznek a Text Objectével. Egyedi tulajdonságaik:
•
primitiveType: a primitív típusa - felsorolástól eltekintünk, érdemes kipróbálni egyszer mindegyiket.
15
•
slices and stacks: megadja, hány poligonnal van megrajzolva az adott primitiv (legjobban gömbnél érzékelhető ennek hatása). Egy egyszerű téglalapnál sem lehet mindegy, hány poligon alkotja, a világítás annál pontosabb, minél több poligonból áll egy model. Rectangle (téglalap) esetén:
•
two sided: kétoldalas, azaz kell-e a hátlap is.
•
fit to screen: ebben az esetben akármilyen koordinátái, közös paraméterei vannak a téglalapnak, mindig tökéletesen kitölti a képet. Egyedül a TranslateZ paramétere érdekes, ami a kamerához képesti távolságot határozza meg, így a képet kitöltő téglalap kerühet a többi objektum elé is meg mögé is. Ha a téglalapra élő videót teszünk, és a chroma keyert is használjuk (részletesen később), máris alapfokú virtuális stúdiót kaptunk. Az élő kép egy elemét (pl. műsorvezető) a háttérről lelyukasztva egy virtuális tér egy síkjára helyeztük. De használhatjuk ezt a funkciót tetszőleges háttérhez, akárcsak tesztelés céljából is. Valamilyen képet textúraként a téglalapra vasalva, a téglalapot magát meg jó távolra helyezve a téglalap a háttérbe kerül, minden előtte lesz.
•
Tex adj. gomb: segítségével a téglalapra vasalt textúra – ha van! - koordinátáinak transzformációit lehet interaktív formában megadni. Nézzük konkrétan, úgy sokkal érthetőbb: Ha kattintunk a gombra, piros lesz, és a Preview ablakban az egérrel és annak bal gombjával meghúzhatjuk a textúrán belül azt a téglalapot, amit a teljes téglalapra felnagyítva szeretnénk megjeleníteni A beállítás előtt érdemes a fit to screen opciót bekapcsolni, hogy a teljes képen láthassuk a textúrát. Alighanem leggyakrabban élő videóbemenet használatakor válhat hasznossá, ha annak egy részletét szeretnénk csak használni. Ha sikerül a megfelelő részletet bekeretezni, a gombra történő ismételt kattintással fogadjuk el a beállítást.
Minden más primitívnél: •
inner radius: belső sugár
•
outer radius: külső sugár (gömbnél nincs értelme, tórusznál viszont van).
•
start angle: kezdőszög
•
sweep angle: körszelet középponti szöge. A start angle-lel együtt csak a partial disk (részleges korong) és a piechart (kördiagram) primitíveknél van értelme.
•
material: a primitív anyag, a meglévő anyagok listájából kiválasztva
•
texture offsetX, texture offsetY, sizeX, sizeY ha az anyaghoz textúra is van rendelve, a textúrát nagyíthatjuk vagy kicsinyíthetjük, így akár többször is ismétlődhet az objektum felszínén, vagy csak egy kis részlete látszik. A textúra kezdetét az offset paraméterekkel el is tolhatjuk az objektumon belül.
•
stretch over clones: bár minden primitívnél működik, speciálisan a téglalapnál van igazán értelme. ha definiálunk több klónt a téglalapból, és azokat egy négyzetrács pontjain helyezzük el, hogy szélük épp találkozzon a következő szélével, ennek az opciónak a bekapcsolásával elérhetjük, hogy az anyaghoz rendelt textúra nem megismétlődik az egyes klónokon, hanem minden klón csak a teljes textúra egy részét kapja meg. A klónok animálásával igen érdekes trükköket lehet létrehozni, pl. egy fotót rakhatunk ki mozaikdarabkákból, ahol minden egyes klón a mozaik egy-egy darabja.
16
•
ClipBox
•
Clone
•
Inherit from Parent Használata a Text objektumnál már tárgyalt szempontok szerint történik.
3. 3D Models
Ez bármilyen térbeli modelt jelent, amit a Nemoba importálunk. Ugyan a Nemo nem rendelkezik saját modelezővel, képes gyakorlatilag bármilyen modelezőből vagy 3D animációs programból modeleket importálni (kompatibilitási lista, a teljesség igénye nékül: 3D Stúdió Max, Maya, Softimage, Houdini, Lightwave, Cinema 4D). Importálni csakis úgynevezett poligonos modelleket lehet, ahol a model sík lapok (általában háromszögek vagy négyszögek) sorozatából épül fel. Kellően nagyszámú síklap esetén még a görbe felületek is folyamatosnak tűnnek. Egyébként nem csak a 3DModel típusú objektum áll sík lapokból, hanem minden más, így a Text is. A modelek importáláshoz kapcsolódó tudnivalókat az Import 3D Models fejezet tárgyalja. Közös tulajdonságai: megegyeznek a Text objektumokéval. Egyedi tulajdonságai:
17
•
3D models: A beimportált modelek listájából választhatjuk ki, melyiket szeretnénk hozzárendelni az objektumhoz.
•
Materials: Importáláskor a model létrehozza mindazokat az anyagokat, amit a készítéséhez a modelezőben felhasználtunk. Ezeknek az anyagoknak a nevét láthatjuk egymás alatt, mellette egy lenyitható listában az össze eddig definiált anyag nevét. Amennyiben a model valamelyik anyagát ki szeretnénk cserélni, nem kell mást tennünk, mint a lenyitható listában beállítani azt az anyagot, amire, a baloldalt található felsorolásban meg kiválasztani, amit ki szeretnénk cserélni. Ha ez megvan, az OK gomb lenyomásával a csere azonnal megtörténik.
•
ClipBox
•
Clone
•
Inherit from Parent
Használata a Text objektumnál már tárgyalt szempontok szerint történik. 4. Ticker
18
A ticker valamelyik irányban folyamatosan mozgó grafikát jelent. Általában stáblisták, smsüzenetek vagy folyamatosan érkező információk megjelenítésére használják. Viszonylag újkeletű elnevezés, régebben rollnak hívtak a függőlegesen mozgó stáblistákat, crawlnak a jobbról balra mozgót, ámbár érdekes és hibás "magyarítások" is forgalomban vannak (scroll, kroll, croll, és ki tudja, mi még). Újabban összefoglaló néven tickernek hívják. Mint minden a Nemo-ban, a Ticker is térben helyezkedik el, azaz akár a Csillagok Háborújának híres, egyre távolodó bevezető szövege is megvalósítható, minimális erőfeszítéssel. Közös tulajdonságai: megegyeznek a Text Objectével. Egyedi tulajdonságai: •
direction (irány): Az állandó mozgás iránya (balra, fel, jobbra, le). Az utóbbi két irány használata elég ritkán merül fel, de a lehetőség adott.
•
width, height (szélesség, magasság): A Ticker ablakának mérete. Ezen az ablakon belül történik az állandó, egyirányú mozgás. Tehát pl. a jobbról balra mozgó tickernél a Ticker alá tartozó objektumok az ablak jobb szélénél jelennek meg, és a bal szélénél eltűnnek. Az "eltűnésről" persze a Text objektumnál már tárgyalt hat vágósík, illetve a ClipBox tehet. A hat vágósíkból négy "alapból" be is van kapcsolva.
•
speed: a ticker sebessége.
•
spacing (távolság): Segítségével a ticker egyes elemeit (sorait) lehet egymáshoz közelebb, vagy ellenkezőleg, egymástól távolabb helyezni.
•
behaviour (viselkedés): Amikor a ticker "kifut", azaz a végéhez ér, háromféle lehetőség közül lehet választani, hogyan viselkedjen: run out = kifut, azaz a vége eltűnik az ablak másik végén. stop at the end = megáll a végén. endless loop = végtelen ciklus, magától újraindul az elejétől.
•
background: a ticker teljes területét elfoglaló háttér, amihez a Materialt (anyagot) a lenyitható listából választhatjuk ki.
•
offsetW, offsetH: a háttér méretét módosítja vizszintes, illetve függőleges irányban.
•
distance (távolság) a háttér térbeli távolsága a tickertől.
•
a ticker szövege, ami lehet begépelt szöveg (text), vagy text file (Unicode kódolású).
•
New, Add, Insert gombok: New (új): felülírja az eddigi tickert. Add (hozzáad): A meglévő szöveg végéhez hozzáfűzi az újat. Insert (beszúr): A meglévő szövegbe beszúrja az újat, ami szinte azonnal meg is jelenik
19
•
logo list: Bár a ticker egyszerű szövegen kívül tartalmazhat Primitivet, 3D modelt, Órát is, ezeket a lejátszóból szinte megoldhatatlan lenne változó adattal módosítani. Így egy igen egyszerű feladat, mint pl. egy stáblistában a szponzorok logóinak elhelyezése nagyon is bonyolult lenne. A feladat egyszerűsítése érdekében lehet azokat a bitmap file-okat megadva összeállítani egy listát, ami a bitmapek méretével azonos arányú téglalapokra vasalva szeretnénk a tickerben egyszerűen megjeleníteni.
•
a ticker szövege (begépelve vagy file-ként betöltve: Ugyan a tickerek általában egyszerű, egyfajta fontból álló szöveget jelenítenek meg, lehetőség van különböző text objektumok elhelyezésére, illetve más típusú objektumok megjelenítésére is. Egy tickerben használni kívánt objektumokat hierarchiában a ticker alá, mint "gyereket" kell elhelyeznünk. Amikor egy új tickert hozunk létre, az automatikusan együtt is jár egy "gyerek" text objektum létrehozásával. Ahhoz, hogy a Nemo tudja, a ticker melyik részén melyik betű vagy logó, esetleg nem text típusú objektum jelenjen meg, a ticker szövegében speciális jeleket (tageket) használhatunk. Ezek a tagek a következők lehetnek: #Txx_
Megadja, hogy a tickerhez rendelt hanyadik text objektum paraméterei határozzák meg a továbbiakban annak szövegét. xx egy mindenképpen kétjegyű szám, 01-től kezdődően.
#Pxx_
A tickerhez rendelt primitivek közül az xx-ediket jeleníti meg (01-től kezdődően).
#Mxx_
A tickerhez rendelt 3D modellek közül az xx-ediket jeleníti meg (01-től kezdődően).
#Cxx_
A tickerhez rendelt Óra objektumok közül az xx-ediket jeleníti meg (01-től kezdődően).
#Lxx_
A logólistában megadott logóbitmapek közül az xx-ediket jeleníti meg. egyéb, opcionális paraméterek: J,xoff,yoff,méret, ahol J: a logó igazítása a szövegen belül balra, középre vagy jobbra (értéke L,C vagy R). xoff: a számítótt koordinátához képest vízszintes irányú módosítás yoff: a számítótt koordinátához képest függőleges irányú módosítás méret: alapesetben a logó mérete 1 (téglalap alak esetén a nagyobbik méret az 1, a kisebbik arányosan kisebb). A 'méret' adat ennek kicsinyítésére vagy nagyítására szolgál. Példa: #L01_C,0,0,3.2 Azaz tedd ki az egyes logót a listából, igazítsd a ticker ablak közepére, az x,y koordinátákat nem kell a számítotthoz képest módosítani, de a logó alapméretét szorozd meg 3.2-vel.
20
•
ClipBox: Használatát l. a Text objektumok leírásánál
•
Clone: a Tickert nem lehet klónozni.
•
Inherit from Parent: Használatát l. a Text objektumok leírásánál
5. Clock (Óra) A Clock, a Ticker objektumhoz hasonlóan a hierarchiában szülő, mert létrehozásakor egy automatikus Text objektumot kap, mint gyereket. Ez a text objektum határozza meg az óra kiirásához használt betű paramétereit. A clock közös tulajdonságai: megegyeznek a Text Objectével. Egyedi tulajdonságok:
•
type (típus): System Time (rendszeridő): a számítógép beépített óráját mutatja, azaz egy közönséges, de elég pontos órát. Internal Timer (belső időmérő): gyakorlatilag stopperóraként üzemel, ami a gép belső órájára épül.
21
External Timer (külső időmérő): stopperóra, de kívülről jövő adatinformációra épül. Counter (számláló) •
format (formátum) lehetséges értékek: hh:mm hh:mm:ss hh.mm:ss.t hh.mm:ss.tt hh.mm:ss.ttt
óra, perc óra, perc, másodperc óra, perc, másodperc, tizedmásodperc óra, perc, másodperc, századmásodperc óra, perc, másodperc, ezredmásodperc
•
leading 0:
•
startAt: stopperfunkció. Erről az időadatról induljon a stopper.
•
stopAt: stopperfunkció. Ennél az időadatnál álljon meg a stopper.
•
Direction: a stopper iránya. Ha 'up', akkor felfelé számol, ha 'down', akkor lefelé
•
ClipBox: Használatát l. a Text objektumok leírásánál
•
Clone: a Clockot nem lehet klónozni (nincs is semmi értelme).
•
Inherit from Parent: Használatát l. a Text objektumok leírásánál
ennyi darab nullát tegyen még az elejére
6. Light (Lámpa) Minthogy a Nemo térbeli grafikára épül, a valóságból kölcsönvett kifejezésekkel élve kamerával nézünk, és lámpával világítunk. Minden objektum csak akkor lehet fényes, világos, ha valamelyik lámpa fénye rávetül. A Nemo az OpenGl grafikai rendszer által definiált megvilágítási modeleket használja, és a modern grafikus kártyák képességeit igyekszik maximálisan kihasználni. Ezzel együtt a lámpák elhelyezésével csinnyán kell bánni, mert részint egyszerre maximum nyolc lámpa lehet bekapcsolva, másrészt a világítás számolási igénye a lámpák számának növelése esetén exponenciálisan nő. Igencsak megterhelheti a hardware kapacitását. Közös tulajdonságok: megegyeznek a Text Objectével, kivéve, hogy lámpának nincs mérete és átlátszósága, így a Scale X,Y,Z, valamint a Transparency paramétereket a Nemo figyelmen kívül hagyja.
22
Egyedi tulajdonságok: •
type (típus) directional: irányfény, ami leginkább a napra emlékeztető tulajdonságokkal rendelkezik. Nincs helye, ahonnan világít, így Translate paraméterei sem érdekesek, csak az iránya számít, amit a Rotate X,Y,Z paraméterek határoznak meg. point: pontfény, az irányfénnnyel ellentétben minden irányban világít, így csak a helye (Translate paraméterek) megadása számít, a Rotate nem. spot (reflektor): az előző kettő ötvözete. A lámpa helye is számít, és az iránya is, amerre világít.
•
diffuse R,G,B: a lámpa színe (8-bites RGB értékben megadva)
•
specular R,G,B: a lámpa színe (specular ~ fényfolt). 8-bites RGB értékben megadva
•
constant attenuation a lámpa fényerősségének a távolság növekedésével arányos állandó csökkenése
23
•
linear a lámpa fényerősségének a távolság növekedésével arányos lineáris csökkenése
•
quadratic a lámpa fényerősségének a távolság növekedésével arányos négyzetes csökkenése
•
spotlight cutoff: ha a lámpa típusa spot, a cutoff adja meg fokban mérve a fénycsóva középponti szögét.
•
distribution: ha a lámpa típusa spot, ez adja meg a fényeloszlást.
7. Dummy (üres) Jelentősége csakis az objektumok közötti hierarchia felépítésében van. Önmaga nem jelenik meg, de a közös tulajdonságain keresztül (Translate, Rotate, Scale, Transparency) befolyásolni képes a hierarchiában alárendelt objektumok tulajdonságait. 8. Sound (hang)
Ha egy grafikai effektet, vagy felirat bejövetelét, illetve kimenetelét hangeffektel szeretnénk kiegészíteni, a Sound objektumot használhatjuk. Közös tulajdonságok: természetesen nincsen Egyedi tulajdonságok: •
Sound file (hang file): ez bármilyen, Windowsban már megszokott wav file lehet.
•
Loop: ciklusban ismételt lejátszás.
•
Delay: Időzítés, azaz az adott Page lejátszásának elindításához képest ennyit késik a
24
hanglejátszás elindítása. •
Attached to: Választható, hogy az adott Page, vagy azon belül valamelyik Action lejátszásához kapcsolódjon az adott hang effekt. Csak a beállított Page vagy Action lejátszásakor fog a hangeffekt megszólalni.
9. Camera (Kamera)
Amivel a 3D-s világot nézzük. Minden Page-hez egy kamera tartozik, olyannyira, hogy a Page létrehozásakor a Nemo automatikusan kamerát is ad hozzá. Közös tulajdonságok: megegyeznek a Text Objectével, kivéve, hogy a kamerának nincs mérete és átlátszósága, így a Scale X,Y,Z, valamint a Transparency paramétereket a Nemo figyelmen kívül hagyja.
25
Egyedi tulajdonságok: •
Type (típus): perspective: "normális", perspektivikus vetítés orthographic 3D: orthografikus álperspektivikus vetítés 2D: sík vetítés
•
Viewport: A kamera által meghatározott "ablak" pixelben megadott mérete. Ez megegyezik a választott videofelbontással, ami SD PAL kép esetén 720 X 576 pixel.
•
Near Clip: közeli vágósík: a kamerához képest ennél közelebb lévő objektumok vagy azok részei már nem látszanak.
•
Far Clip: távoli vágósík: ennél távolabbi dolgok már nem látszanak.
•
Field of View: látómező, fokban megadva Nem a kamera tulajdonságaihoz tartoznak, de minthogy az adott Page minden elemét befolyásolják, ide kerültek elhelyezésre:
•
Ambient R,G,B: az ambiens fény színe és intenzitása (8-bites RGB értékben megadva).
•
Global Fade: Globális átlátszóság, ami a Page valamennyi objektumának átlátszóságát befolyásolja. Ennek az egyetlen paraméternek az animálásával fel- és leúsztathatjuk a feliratot. Elvben minimális értéke nulla lenne (minden átlátszó), de egy speciális és fontos okból negatív értéket is felvehet. A Nemoban egyszerre nemcsak egy Page játszható le, hanem akármennyi. Ha egyszerre több is kint van a képernyőn, de valamelyikük feleslegessé válik, törölni legegyszerűbben úgy lehet, hogy a Global Fade paramétert animáljuk, 1-től valamilyen negatív értékig. Ekkor nemcsak átlátszóvá válik minden, hanem a negatív érték hatására törlődik is, azaz az adott Page megszűnik létezni (persze csak addig, amíg újra le nem játsszuk).
26
III. Anyagok (Materials) és tulajdonságaik:
A legtöbb objektumtípusnak (kivétel: kamera, lámpa, hang) a megjelenését alapvetően az anyaga határozza meg. Az "anyag" összefoglaló név, nemcsak színt, hanem fényességet, átlátszóságot, és még sok egyéb paramétert is jelent. A Nemoban az Anyagok kezelése annyiban különbözik az Ojektumokétől, hogy míg minden létrehozott Objektum csak arra a Page-re vonatkozik, amelynek része, addig az Anyagok bármelyik Page bármelyik Objektumához hozzárendelhetők, külön gyűjteményt - könyvtárt képeznek. E gyűjtemény bármelyik tagja hozzárendelhető tetszőleges számú objektumhoz, teljesen függetlenül attól, hogy ezek az objektumok ugyanazon vagy különböző Page részei. Új anyagot létrehozni vagy egy meglévő, már feleslegest törölni a + és - gombokkal lehet (l.kép!). Az anyagok tulajdonságai a következők: •
Name (név): Minden anyag a létrehozásakor automatikusan kap egy nevet (ami a Material szóból és egy egyedi sorszámból áll), de ezt a nevet bármikor felülírhatjuk. Érdemes "beszédes", könnyen azonosítható nevet adni, mert jónéhány helyen a neve alapján kell az anyagokat beazonosítani.
27
•
Diffuse R,G,B Az anyag diffúz (alap?) színe, 8-bites RGB értékben megadva.
•
Specular R,G,B Az anyagon megcsillanó fényfolt színe, 8-bites RGB értékben megadva. A Specular színe a Diffuse-hoz hozzáadódik, és így jön létre a fényfolt színe. Ha a Specular fekete (RGB 0,0,0), akkor nincs fényfolt, az objektum színét csak a Diffuse szín határozza meg.
•
Shininess (fényesség): Valójában a fényfolt nagyságát határozza meg, ezzel utánozva a fényes, fémes felületeket. Értéke 1 és 128 között változhat, minél kisebb, annál fényesebb felületet kaphatunk, bár ez a Specular színtől is van. Önmagában az objektumok végleges színét nemcsak a Diffuse, Specular színek és a Shininess határozza meg, hanem megvilágítás, az alkalmazott lámpák. Ha egyetlen lámpa fénye sem vetül egy adott objektumra, akkor hiába állítunk be szép világos, fényes színeket, az objektum sötét marad.
•
Transparency (átlátszóság) Nemcsak az objektumnak, az anyagnak is lehet átlátszóságot adni, 0 és 1 között. Az objektum átlátszósága és az anyagé összeadódik (matematikailag szorzást jelent, egy félig átlátszó objektum félig átlátszó anyaggal 25%-ban átlátszatlan, illetve 75%-ban átlátszó).
•
Affected by lights: Kikapcsolt állapotban a lámpák nem befolyásolják a megjelenést, az ilyen anyaggal "borított" objektumok egyöntetúen, minden árnyalás nélkül a Diffuse színt kapják.
•
Renormalize: OpenGl - specifikus paraméter: a megfelelő világítás számolásához szükséges ún. normál vektor szükség esetén történő újraszámolására utasítja a grafikus engine-t. Erősen ajánlott bekapcsolt állapotban hagyni.
•
texture 1, texture 2, texture 3, texture 4: A modern grafikus kártyák legalább négy párhuzamosan működő hardware texturázó egységgel rendelkeznek, ezért minden anyaghoz négy különböző textúrát rendelhetünk (részletesen a Textúrák leírásánál). A négy lenyitható listából a textúrák nevei közül választhatunk.
•
Render States: OpenGl-specifikus, a perspektivikus kép megrajzolásához szükséges paraméterek összefoglaló neve.
•
Separate specular: Normális körülmények között a textúra lefedi az anyag Specular színe által definiált fényfoltot, így az anyag teljesen matt lesz. De a Specular szín szeparálható és meg egyszer
28
hozzáadható az anyaghoz, és ebben az esetben a fényfolt a textúra fölé kerül. •
flat shading: Árnyalásmentes, egyszerűsített színezést jelent, leginkább a gyerekek kifestőkönyvéhez hasonló eredményt ad.
•
Use Depth buffer: Az egyes objektumok térbeli elhelyezésének egyszerűsítése érdekében a takarások számításához az OpenGl ún. depth buffert, mélységi puffert használ. Ebben a pufferben számon tartja minden, már megrajzolt képpont térbeli távolságát a kamerától. Ha egy olyan képpontot kellene megrajzolni, aminek távolsága nagyobb, mint a pufferben erre a pontra már eltarolt adat, akkor az új adat eldobásra kerül, lévén az a pont takarásban van. Ha valamiért a takarás számolását szeretnénk kikapcsolni - alighanem szinte soha - akkor ezzel a paraméterrel ezt is elérhetjük.
•
Culling: Ez a paraméter nagyban befolyásolja, hogy egy adott objektum mely részei kerülnek megrajzolásra. Egy tömör tárgynak azok a poligonjai, amelyek hátrafelé, azaz tőlünk elfelé néznek, nem látszanak, így azokat felesleges megrajzolni. Eldobásra kerülnek - erre utal a culling szó. Real time 3D-ben nem elhanyagolható, hogy az ehhez hasonló sebességoptimalizáló beállításokkal mennyi időt takaríthat meg a grafikus kártya. Ugyanakkor valamennyire átlátszó objektumoknál, vagy más különleges esetben szükség lehet az általánostól eltérő szabály szerint meghatározni, mely poligonokat rajzoltatjuk meg, és melyeket nem. A lehetséges beállítások: Back Face: alapeset. A hátrafelé néző poligonok kerülnek eldobásra. Front Face: pont ellenkezőleg, az előre néző poligonok feleslegesek. Back and Front: előre és hátranéző poligonok egyaránt mennek a kukába. None: Az összes poligont kéretik megrajzolni.
•
Draw: Az OpenGl az objektumokat nemcsak kiszínezett poligonokkal rajzolhatja meg. Lehetséges esetek: Polygons: Alapeset. Smoothed Lines (elsimított vonalak). Ekkor az egyes poligonok éleit húzza csak meg, mint vonalakat. A poligonok belseje üres marad. Stippled Lines (szaggatott vonalak). Szintén csak az éleket rajzolja meg, szaggatott vonalmintákkal. Points: Csak a poligonok csúcsát, mint pontokat rajzolja meg.
29
•
Size: Ez vagy a vonal vastagsága, vagy a pont nagyságát jelző adat, attól függően, hogy vonalakat, vagy pontokat rajzoltatunk a Draw paraméter értékének megfelelően.
•
Blending Paraméterek: Amikor két objektum részben vagy egészben fedi egymást, és a kettő közül legalább az elől lévő részben átlátszó, a két objektum által számított (háttérben, illetve előtérben lévő) képpontok keverednek. A megfelelő keveréshez (compositing) többféle eljárást használhatunk, illetve állíthatunk be az OpenGl-nek.Általános esetben érdemes ezeket a paramétereket békén hagyni, inkább csak az változtasson rajtuk, aki pontosan tudja, mit csinál. Külön paraméter szolgál a háttér- illetve előtér pixel színeinek keveréséhez használt matematikai eljárás leírásához, és külön a pixelek ún alpha csatornájának (mely annak átlátszóságát határozza meg) számításához.A háttérben (azaz térben hátrébb) lévő pixel jelölésére az Src (azaz source, forrás) rövidítés, míg az előtérben lévő pixelére a Dest (destination, cél) rövidítés szolgál. - Blending Colour Src, Dest - Blending Alpha Src, Dest A Src és Dest pixel színének és alpha komponensének kombinálására vonatkozó számítás lehetséges tényezői: Src Alpha: Zero: One: Src Colour One - Src Colour One - Src Alpha Dest Alpha One - Dest Alpha Dest Colour One - Dest Colour -
Szorozd be a Src pixel alpha értékével. A Src szín legyen nulla (fekete) Src szín értéke legyen 1 Maradjon a Src szín az, ami volt Invertáld a Src Színt Szorozd be az alpha komplementerével Szorozd be a Dest alphaval Szorozd a Dest alpha komplementerével Legyen azonos a Dest színével Legyen azonos a Dest színének inverzével
Blending Op Colour Blending Op Alpha Az Src és a Dest komponensek - alphájukkal történő esetleges szorzásukat követően - e két komponens beállítása szerint kombinálódnak. Add Subtract Reverse Subtract Maximum Minimum
A két komponens összeadódik. Alapbeállítás. A Src-ból kivonja a Dest-et A Src-ból kivonja a Dest inverzét A kettő közül a nagyobbat tartja meg A kettő közül a kisebbet tartja meg.
Teljesen felesleges - szinte sosem használt - beállítások magyarázata helyett elégedjünk meg a valósághoz legközelebb álló eljárás magyarázatával: Ha a Blending Colour Src értéke Src Alpha, és a Blending Colour Dest értéke One - Src
30
Alpha, az OpenGl a Src pixel színének RGB komponenseit beszorozza az alpha komponenssel, majd a Dest pixel színkomponenseit a Src alpha komplementerével (1 alpha), és az így kapott értéket összeadja. Hasonlóan számolja a Src és Dest alpha komponenséből a végső alphát. Bár érdemes kipróbálni a többi beállítással is, a valósághoz ez a kombináció áll a legközelebb.
IV. Textúrák (Textures) és tulajdonságaik:
Ha az anyagoknak nem csak egyöntetű színt szeretnénk adni, hanem valamilyen mintát, akkor textúrát szoktunk használni valahogy úgy, mint a szobafestő, amikor az egyszerű, egyszínű festés helyett valamilyen tapétával burkolja a szoba belsejét. Aszerint, hogy milyen mintával tapétázunk, és milyen eljárás szerint csomagoljuk az objektumot a tapétába, rengeteg lehetőség áll rendelkezésre. A Textúrák kezelése - az Anyagokhoz hasonlóan - annyiban különbözik az Ojektumokétől, hogy míg minden létrehozott Objektum csak arra a Page-re vonatkozik, amelynek része, addig bármelyik Textúra bármelyik Anyaghoz, és ezen keresztül bármelyik Objektumához hozzárendelhető, külön gyűjteményt - könyvtárt - képez. Új textúrát létrehozni vagy egy meglévő, már feleslegest törölni a + és - gombokkal lehet (l.kép!).
31
A Textúrák tulajdonságai a következők: •
Name (név): Minden Textúra a létrehozásakor automatikusan kap nevet (ami a Texture szóból és egy egyedi sorszámból áll), de ezt a nevet bármikor felülírhatjuk. Érdemes "beszédes", könnyen azonosítható nevet adni, mert jónéhány helyen a neve alapján kell a textúrákat beazonosítani.
•
Texture type: Többféle forrásból származhat textúra:
●
Image File:
A számítógép által tárolt bitmap file, az ismertebb bitmap filetípusok valamelyike (tga, png, bmp, tif, jpg).
2D Text:
Kétdimenzió szöveg, amit bitmapként textúrának használhatunk.
Image Sequence:
Képszekvencia. Valamilyen animációs program készített képszekvencia, sorszámozott bitmap-fileokból konvertálva (l. Build Image Sequence fejezet).
AVI file:
A Windows standard video fileformátuma.
Video In:
Amennyiben megfelelő hardware-rel rendelkezünk, a videokártya bemenetére élő, kameraképet a Nemoban folyamatosan digitalizálhatjuk, és mint textúrát használhatjuk.
Update Type: Képszekvencia vagy élő videó bemenet esetén választhatunk, hogy képkockánként (frame), vagy félképenként (field) történjen a textúra frissítése. Amennyiben képszekvenciánk nem tartalmaz eltérő fieldeket, „frame-esen” rendereltük, akkor úgyis kell frissíteni. Az élő videó esetén ha teljes képet kitöltő téglalapra vasaljuk az élő videót, akkor ajánlatos a frame-es frissítést használni, mert a fieldesnél a képet esetleg kedvezőtlenül befolyásoló filterezés elkerülése végett. Más esetekben többnyire a field update a jobb.
A textúra típusától függő tulajdonságok: Image File esetén:
-
file:
A bitmap file neve. Ajánlatos az egyszerűség kedvéért a Page Collection mappáján belül létrehozott Images mappába másolni minden szükséges bitmap file-t.
32
Image Sequence esetén:
-
file:
A szekvencia (.nsq) file neve.
-
frame index:
A szekvencia egy elemének (itt: frame) sorszáma, indexe. Az első elem sorszáma mindig nulla.
-
length (hossz): A szekvencia hossza, timekódban (perc, másodperc, frame) és frameszámban megadva.
AVI file esetén:
-
file:
A file neve.
-
frame index:
A szekvencia egy elemének (itt: frame) sorszáma, indexe. Az első elem sorszáma mindig nulla.
-
length (hossz): A szekvencia hossza, timekódban (perc, másodperc, frame) és frame-számban megadva.
33
2D Text esetén:
-
text (v. txt file):
A szöveg maga, amit a készítendő textún szeretnénk megjeleníteni.
-
Font
Ez bármilyen, Windows alá installált Truetype font lehet.
-
Font Style
Regular, Bold, Italic, vagy Bold Italic.
-
Texture Size X,Y:
Az előállítandó textúra mérete, pixelben megadva. Régi OpenGl-es rendszereknél a textúra mérete csak a kettő valamelyik hatványa lehetett. A mai grafikus kártyáknál erre már nincs szükség, a méret tetszőleges, de se túl kicsi, se túl nagy ne legyen. Ha olyan textúra létrehozása a cél, amit egy kamerához közeli, és éppen ezért nagyméretű objektumra akarunk vasalni, érdemes nagyobb, a választott videofelbontáshoz (ez SD PAL esetén 720*576) hasonló méretet megadni. Távoli vagy kis objektum textúrájához kisebb méret is megfelel.
-
Char Height:
A betű magassága
-
Word Wrap:
Szóátvitel.
-
Margin X, Y:
Margók. Azt a pontot adja meg, ahol a szövegkiírás elkezdődik.
-
Justify X, Y:
Vízszintesen és függőlegesen is igazíthatjuk a szöveget balra, középre vagy jobbra.
34
-
Text Colour:
A szöveg színe, amit egy, két vagy három színnel adhatunk meg. Egynél több szín esetén színek közti átmenet határozza meg a betűk színét. Az egyes színeknél a betű méretének százalékában azt is megadhatjuk, hogy a színátmenet melyik ponton érje el a beállított színt.
-
Shadow:
Offset Shadow (árnyék) színe és mérete (ha 0, nincs árnyék)
-
Angle:
Offset Shadow iránya a betűhöz képest (0 és 360 fok között).
-
Transp.
Offset Shadow átlátszósága
-
Edge
A betű borderének színe és mérete (ha nulla, nincs border).
-
Transp.
Az Edge átlátszósága.
-
Background
A háttér színe
-
Transp.
A háttér átlátszósága (ha 0, nincs háttér)
Ha minden paramétert beállítottunk a 2D Text textúrához, a C gombra történő kattintással gyártathatjuk le a textúrát. Bármelyik paraméter változtatása után a C gombra is úja kell kattintani. Valamennyi textúra közös tulajdonságai:
•
Pixel format: Lehet RGB 24-bit vagy RGB 32-bit. Az utóbbi esetben az alpha csatorna egyben az átlátszóságot is meghatározza.
35
•
Mapping type: A textúra vasalásának típusa. Minthogy az objektumok térbeliek a textúra - mint "csomagolópapír" pedig egy sík téglalap, sokféleképpen megadható, milyen módon csomagoljuk objektumunkat a csomagolópapírba. - Predefined (előre megadott): A legtöbb modelező ún. Textúra-koordinátákat is tárol minden a modell minden poligonjának csúcsainál. Ezek a kétdimenziós, x-y koordináták megadják, hogy az adott csúcshoz a textúra-bitmap mely pontja tartozik. A csúcsok közötti köztes értékeket az OpenGl maga számolja. A Nemoban minden Primitívnek, és alighanem minden importált 3D modelnek előre megadott és tárolt textúra-koordinátái. A text objektumoknak viszont nincs. - Generated (automatikusan generált) Előre eltárololt textúra-koordináták helyett az OpenGl a Mapping paraméterben megadott adatnak megfelelően maga is képes koordinátákat generálni. •
Mapping
(itt:
vasalás):
Csak
akkor
számít,
ha
a
Mapping
type
Generated.
Az automatikus textúra-koordináta generálás módját adja meg az OpenGl számára. Lehetséges értékek:
•
-
Object Linear: A textúrát síkban vetíti az objektumra, az objektum relatív koordinátarendszerét használva. Ha az objektum mozog, a textúra is vele mozog.
-
Eye Linear:
A textúrát síkban vetíti az objektumra, az abszolút koordinátarendszert használva referenciaként. Ha az objektum mozog, a textúra nem mozog vele, mintha az objektum keresztülúszna a textúrában.
-
Sphere Map:
A textúrát gömbként torzítva vetíti a modellre.
-
Reflection Map:Úgy vetíti a textúrát a modellre, mintha a tükröződő környezetet adná vissza.
-
Normal Map:
A textúra pontjait (RGB értékeket) normál vektor koordinátaként használva módosítja a modell felszínét.
Blending (keverés): Egy 3D modell adott pontjára a textúra egy adott pontja kerül. E pont RGB (vagy alpha csatorna esetén RGBA) értéke azonban többféleképpen keveredhet az anyag színével (amit a Materialeknél tárgyalt színbeállítások és a világítás határoz meg). A kettő kombinációja adja meg az adott ponton az objektum színét. A kombináció módját adja meg a Blending paraméter. -
Modulate:
A textúrából származó RGB értéket megszorozza (modulálja) az
36
anyag Diffuse színéből származó RGB értékekkel. Ha nem akarjuk az anyag színével elszínezni a textúránkat, akkor a Diffuse színt állítsuk fehérre. Ebben az esetben ugyanis egyedül a textúrából származó RGB értékek számítanak. -
Decal:
Az anyag és a textúra RGB-értékeit a textúra alpha adatának megfelelően keveri (composite). Ha az anyagon egyszerre egynél több textúra van, a 2., 3. vagy 4. textúra esetében ez az egyetlen hasznos Blending beállítás, hogy a textúrákat helyesen kombináljuk.
-
Replace:
Az anyag színét figyelmen kívül hagyva a textúra RGB értékeit minden módosítás nélkül használja fel. Alpha értékeket nem vesz figyelembe, így átlátszóságot sem használhatunk ezzel a beállítással.
-
Blend
A textúra RGB értékeit keveri egy megadott színnel és nem az anyag színével.
-
Add
Az anyag és a textúra színének RGB(A) értékeit összeadja.
-
Combine
Ebben az esetben mind az anyag, mind a textúra RGB és esetleges alpha értékeit egyenként beállítható paraméterek szerint kombinálva kapjuk meg a végleges RGB(A) értékeket. - Combine RGB: az RGB adatok kombinálásának módja - Combine Alpha: az Alpha értékek kombinálásának módja - Src RGB: a pixel színének forrása - Src Alpha: a pixel Alphájának forrása - Operand RGB: RGB számítás operandusa - Operand Alpha: Alpha számítás operandusa
•
Resize quality (méretezés minősége): Attól függően, hogy az objektum, amire a textúrát vasaljuk, milyen messze van a kamerától, szükség lehet a textúra kicsinyítésére vagy nagyítására. Lehetőség van mindkét művelet esetén minőséget javító filterezésre, ami interpolációval számítja ki a megváltozott méretű textúra RGB(A) értékeit. Bizonyos esetekben nem feltétlenül hasznos a jobb minőséget, de némileg lágyabb képet eredményező bilineáris filter használata. Ilyen eset például az élő kép textúraként történő felhasználása a fit to screen paraméter bekapcsolása mellett. Ekkor ugyanis az élő képet feleslegesen rongálja az egyébként minőségjavító filter. A paraméter lehetséges értékei:
•
-
Linear - Linear:
Kicsinyítésnél és nagyításnál is filter bekapcsolva.
-
Nearest - Linear:
Kicsinyítésnél filter ki-, nagyításnál viszont bekapcsolva.
-
Linear - Nearest:
Kicsinyítésnél filter be-, nagyításnál viszont kikapcsolva.
-
Nearest - Nearest:
Kicsinyítésnél és nagyításnál is filter kikapcsolva.
Wrapping S, T, R: Amennyiben a textúra nem fedi be teljesen az objektum felületét, a textúra
37
koordinátarendszerének tengelyei mentén megadhatjuk, hogyan viselkedjen a textúrázó a textúra szélein, illetve a találkozási pontoknál ("varratoknál"). -
Repeat:
A textúra addig ismétlődik, amíg teljesen be nem fedi az objektumot.
-
Clamp:
A textúra nem ismétlődik.
-
Clamp to Edge:
A textúra nem ismétlődik, az objektum azon részein, amit nem fed a textúra, a textúra szélein található pixeleket használja fel.
-
Clamp to Border:
A textúra nem ismétlődik, az objektum azon részein, amit nem fed a textúra, a border színt használja fel.
-
Mirrored Repeat:
A textúra ismétlődik, de az adott tengely mentén tükrözve.
Textúra Transzformáció: Ahogy az objektumok mozgatásához és más transzformációjához is szükség van koordinátarendszerre, a textúráknak is megvan a maguk koordinátarendszere. A koordinátarendszer transzformációjával módosítható a textúra vasalásának módja. A használható transzformációk ugyanazok, mint az objektumok esetében (Translate X,Y,Z Rotate X,Y,Z - Scale X,Y,Z).
V. A User Interface (kezelői felület, UI) használata Az előző fejezetekben az egyes objektumok, anyagok, textúrák tulajdonságaival ismerkedtünk meg. Ebben a fejezetben azzal, hogyan lehet ezeket manipulálni. 1. A Nemo háromféle adattal dolgozik: •
Numerikus, mely általában 4-5 tizedes pontosságú törtszám, jóval ritkábban egész szám. Pl. TranslateX.
A numerikus értéket a számmezőbe történő kattintást követően legegyszerűbben az egér középső görgőjével módosíthatunk lefelé, illetve felfelé. A görgő mindig azt a számjegyet módosítja - akár a tizedesvesszeő előtti akár utáni számjegyekről van szó, amelyikre a görgetés előtt kattintottunk, és ahová a kurzor a kurzort elhelyeztük. Ílymódon egészen durva és egészen finom változtatás is megvalósítható. Természetesen egész egyszerűen felül is írhatjuk a számot vagy kattinthatunk a numerikus kontroll végén látható le-, illetve fel mutató nyílra. •
Listából választható, mely egy lenyíló lista vagy felsorolás valamely elemének kiválasztását jelenti. Pl. A Layer paraméter értéke, melyet a listában felsorolt
38
Background, Foreground, Top valamelyikének kiválasztásával módosíthatunk.
•
Szöveges, melyre a teljesen közönséges szövegeditálási szabályok vonatkoznak. Ha a szövegmező mellett az alábbi gomb is látható,
a rá történő kattintással standard Windowsos párbeszédablakhoz jutunk, amiben megkereshetjük azt a file-t amit be szeretnénk tölteni.
2. Be- és kikapcsolható gombok (toggle) segítségével is befolyásolhatok különféle paraméterek. Ilyenek például:
A Rotate számmezők mellett lévő, B feliratú gomb bekapcsolása esetén az adott objektum ún. Billboarddá (reklámtábla) alakul. A Billboard mindig szembe fordul a kamerával, hiába forgatjuk a hagyományos módon, amíg a B világít, az objektum mindig a kamera felé néz.
A Scale számmezők mellett lévő, L feliratú gomb bekapcsolásával a méretváltozás uniformizált, azaz a különböző tengelyek mentén egyforma lesz. Kényelmi funkció, hogy ne kelljen szükségtelenül mindig háromszor ugyanazt elvégezni. •
Színbeállító Segítségével az Anyagok és Lámpák tulajdonságai közül a Diffuse és Specular szín, de
39
használatuk mindenhol előfordul, ahol színbeállításra van szükség.
A kis, színes téglalapra kattintva juthatunk el a színbeállító ablakig:
Ahol a kívánt színt akár RGB-ben, akár HSB-ben (Hue, Saturation, Brightness - aki már akár csak Photoshopot látott, annak ez nem újdonság) beállíthatjuk a megfelelő színt. A szivárványszínekben pompázó körben a Hue-t és Saturation-t egyszerre választhatjuk ki, a mellette levő skálán pedig a hozzá tartozó Brightness paramétert. 3. Az Objektumokkal végrehajthatók a szövegszerkesztőből és más programokból megszokott alapműveletek: kivágás, vágólapra másolás, beillesztés vágólapról (Cut, Copy, Paste). Ezek elérhetők az Edit menüben és a Toolbaron látható ikonok segítségével is:
40
A szintén szokásosnak mondható Undo és Redo funkciók ugyanezen menüben és a Toolbaron is megtalálhatók. A Nemo az öt utolsó változást tárolja, és kérésre igyekszik meg nem történtté tenni. 4. Az Objektumok közös tulajdonságait nem csak számmezők segítségével lehet módosítani, van arra elegánsabb - vizuálisabb módszer is. A kezelői felület jobb oldalának nagy részét a program mindenkori kimenetét folyamatosan mutató Preview ablak tölti ki. Amennyiben broadcast hardware nincs a gépben, ez az egyetlen kimenet, ami mutatja, amit csinálunk, ha van broadcast hardware, akkor ugyanazt mutatja, amit azon is látunk.
A kép frissítése mindig a kiválasztott broadcast szabványhoz illeszkedik, és nem a VGAkártyához, így senkit nem lephet meg, hogy a Preview ablakban a mozgás olykor bizony döcögős. A "valódi", broadcast kimenet sosem az.
41
A Preview ablaknak fontos feladata is van, és ez nem csak az, hogy a kimenet egy másolatát mutassa. Az egyes objektumokat itt is kiválaszthatjuk - egyszerűen csak rájuk kell kattintani a bal egérgombbal. A kiválasztott objektum körül, az azt körülíró "doboz" élei szaggatott, piros vonalként jelennek meg (l. előző kép). A Preview ablak jobboldalán lévő be- és kikapcsolható gombok (toggle) segítségével vizuálisan manipulálhatjuk is a kiválasztott objektumot: •
Translate X,Y tengely mentén: A gomb bekapcsolása után elég a preview ablakba az egér középső gombjával )illetve az azt helyettesítő görgővel) kattintani, és máris szabadon mozgathatjuk az egerünkkel a kiválasztott objektumot. Ha mélységben is mozgatni szeretnénk, az egér görgője éppen ezt a célt szolgálja.
•
Translate X. Az eljárás ugyanaz, mint az előbb leírtaknál, de ezúttal az X tengelyre korlátozódik a mozgás. A görgő azonban változatlanul használható a Z tengely mentén történő mozgatáshoz.
•
Translate Y. Az eljárás ugyanaz, mint az előbb leírtaknál, de ezúttal az Y tengelyre korlátozódik a mozgás. A görgő azonban változatlanul használható a Z tengely mentén történő mozgatáshoz.
•
Rotate X,Y tengely mentén: Ahogy a mozgatásnál, csak itt forgathatjuk az objektumunkat. A görgő itt a Z tengely körüli forgatást valósítja meg. A forgatás annyiban is különbözik a mozgatástól, hogy a tengelyek mindig az objektum saját koordinátarendszerének tengelyei, és
42
egymással kölcsönhatásban vannak. Ha a Z tengely körül elforgatunk egy objektumot, az X és Y tengelyek a kamera, azaz a mi szemszögünkből nézve akár fel is cserélődhetnek. Ez kezdetben zavaró lehet, de később megszokja az ember. •
Rotate X. Az eljárás ugyanaz, mint az előbb leírtaknál, de az X tengelyre korlátozódik a forgatás. A görgő változatlanul használható a Z tengely mentén történő forgatáshoz.
•
Rotate Y. Az eljárás ugyanaz, mint az előbb leírtaknál, de az Y tengelyre korlátozódik a forgatás. A görgő változatlanul használható a Z tengely mentén történő forgatáshoz.
•
Scale X,Y tengely mentén: A gomb bekapcsolása után elég a preview ablakba az egér középső gombjával kattintani, és máris szabadon változtathatjuk az egerünkkel a kiválasztott objektum méretét. Ha mélységben is méretezni szeretnénk, az egér görgőjével tehetjük ezt meg.
•
Scale X. Az eljárás ugyanaz, mint az előbb leírtaknál, de az X tengelyre korlátozódik a forgatás. A görgő változatlanul használható a Z tengely mentén történő forgatáshoz.
•
Scale Y. Az eljárás ugyanaz, mint az előbb leírtaknál, de az Y tengelyre korlátozódik a forgatás. A görgő változatlanul használható a Z tengely mentén történő forgatáshoz.
5. Ha már a forgatások és méretváltoztatás (Rotate és Scale) különböző lehetőségeit próbálgatjuk, hamarosan felmerül a kérdés, hogy mi ezeknek a transzformációknak a középpontja? Mi körül forog az objektum vagy milyen középponttal "nyúlik"? Ha egy Text objektumot használunk mintaként, feltűnő lesz, hogy mind forgatás, mind méretváltoztatás közben a bal szélő mozdulatlan marad, tehát a balszél a középpont, míg más típusú objektumoknál az objektum közepe egyúttal a transzformáció középpontja is. Minden objektumnak külön Rotate és külön Scale középpontja (angolul pivotja) van. Ezeket a pivotokat az objektum létrehozásakor a Nemo alapértelmezett értékkel látja el. Ez Textnél a bal széle, mert az így logikus, ha a szöveg maga balra van igazítva, míg minden más esetben az a logikus, ha alapértelmezésben az objektum közepe a pivot Rotate és Scale esetén egyaránt. A pivot pontokat azonban tetszőlegesen meg is változtathatjuk, ehhez a Toolbar jobb széle felé található, alábbi két gombot használhatjuk:
Az első a Rotate pivot menüt, a második a Scale pivot menüt hozza be. A lejátszást vezérlő gombok
43
helyén jelenik meg a megfelelő Pivot menü.
Ezen a három tengelyt jelző X, Y, Z betűket, velük egy sorban pedig három-három gombot láthatunk, L, C, és R betűkkel jelölve. Ezek a left (bal), center (közép) és right (jobb) szavak rövidítései. A gombokra kattintva a pivot pontot az adott tengelyen az objektumot körülvevő "doboz" balszélére, közepére, illetve jobbszélére igazíthatjuk. Ezzel az összesen kilenc kombinációval az esetek döntő többségében könnyen, és főleg pontosan beállíthatjuk az adott transzformáció számunkra kedvező középpontját. Ha azonban ez a kilenc kitüntetett pont sem felel meg céljainknak, ettől szabadon eltérhetünk.
A Translate X, Y, Z számmezők melletti, pirosan világító P gomb jelzi, hogy ezekben a számmezőkben, amíg a P betű világít, nem az objektum X, Y, Z koordinátáit, hanem a pivot pontjának (Rotate vagy Scale, amelyik éppen ki van választva) koordinátáit állíthatjuk be. Amíg valamelyik pivot menü "aktív", a Preview képen kis piros kocka jelzi a pivot helyét, így könnyedén nyomon követhetjük, hova kerül. A Translate számmezőkben szereplő érték nem abszolút érték, ha mindhárom értéke nulla, a pivot a menüben választható kilenc kitüntetett pont egyikén foglal helyet, a számmezőkben csak az ehhez képest relatív helyzetet adjuk meg. Ha az objektum tömör, a középpontjában elhelyezett pivot, illetve az azt jelképező piros kocka nem látszik. Ilyenkor érdemes lehet akár csak átmenetileg is félig átlátszóvá tenni az objektumot, így mindjárt láthatóvá válik a belsejében megbúvó piros kocka.
44
6. A Preview ablakot az objektumok és a Page elrendezéséhez még az előzőeken túlmenően is kihasználhatjuk. Előfordulhat, hogy a kameránkból kinézve nem eléggé áttekinthetőm, melyik objektum hol helyezkedik el (különössen mélységben), és melyik hogy takarja a másikat. Ehhez az egyetlen Kamera képe nem elég. Éppen ezért a szerkesztést és beállítást segítendő más nézőpontból is megnézhetjük, hogyan néz ki az éppen kiválasztott Page. Ehhez a Toolbaron lévő gombok közül az alábbiakat használhatjuk:
•
"Normál" kamerakép: amit alapállapotban meg végeredményként is használunk.
•
"Szabad" kamera. Ez ugyanolyan perspektivikus képet mutat, mint a valódi kamera, csak szabadon mozgathatjuk, ezzel semmilyen beállítást nem ronthatunk el. Támpontként egy négyzethálós rácsot (grid) is mutat, melynek egy eleme 1X1-es méretű. Mutatja továbbá a valódi kamerát és az amúgy láthatatlan lámpákat, mégpedig "kívülről", mint objektumot.
A képen látható kék és szürke valami - remélhetőleg felismerhető - a kamera, az esernyőre emlékeztető sárga meg egy spotlámpa. Amennyiben ebben a szabad perspektívában a kamera
45
háta mögé visszük nézőpontunkat, furcsának tűnhet, hogy a kamerán minden átlátszik.
Pedig egyszerű és logikus magyarázata van: a kamera mindenképpen a "legalsó", background layeren (háttér réteg) van, különben az erre a rétegre kerülő objektumok nem is látszanának. Így viszont minden objektum, ami felsőbb rétegre kerül - és alapállapotban mindegyik a foreground layeren (előtér réteg) van, takarni fogja a kamerát, azaz átlátszik rajta. A szabad kamera mozgatására az előbbiekben megismert, az objektumok transzformációjára szolgáló eljáráshoz nagyon hasonló módszert alkalmazhatunk. A középső egérgomb (vagy megfelelője, a görgő) lenyomásával aktiválhatjuk a szabad kamerát, amit az egeret mozgatva az X, Y tengelyek mentén mozgathatjuk, ha közben a Shift gombot nyomva tartjuk, akkor viszont forgathatjuk. A Z tengely mentén történő mozgatáshoz, illetve Shifttel együtt forgatáshoz az egér görgőjét használhatjuk. A középső gomb )vagy a görgő) ismételt lenyomása "elengedi" a kamerát, a mozgatás befejeződik. Arra azonban ügyelni kell, hogy a 3. pontban tárgyalt egyik gomb (toggle) se legyen bekapcsolva, mert akkor természetesen nem a szabad kamera, hanem a kiválasztott objektum lesz a mozgatás vagy más transzformáció célpontja.
46
A szabad kamerán kívül az alábbi nézőpontok lehetségesek (sorrendben).
•
Front View: Előlnézet
•
Top View: Felülnézet
•
Left View: (Bal) Oldalnézet
•
Model View (Model Nézet): A szabad kamerát a kiválasztott objektumhoz képest úgy próbálja elhelyezni, hogy az középen, a képet lehetőség szerint kitöltve jelenjen meg. Ez különösen akkor hasznos segítség, ha olyan modellt importálunk valahonnan, ami teljesen más léptékben készült, mint amit épp használunk, és ezért vagy nagyon kicsi és ezért nem vesszük észre, vagy ellenkezőleg, túl nagy. Így általában egy kattintás, és máris láthatóvá válik.
•
Lamp View (Lámpa nézet). A kiválasztott lámpa belsejébe helyezve a szabad kamerát, a lámpából kifelé nézve mutatja, ami a lámpa "lát". A világítás beállításához nyújthat nagy segítséget.
4.
A lejátszást vezérlő nagy gombok külön kis panelben találhatók, a Preview ablak mellett:
•
Play:
•
Stop: Az első kattintásra megállítja az animációt. Újabb kattintásra visszaáll az elejére.
•
Cls: Törli a képet. A munka folytatásához valamelyik Page-et ismét ki kell választani.
Lejátssza
a
kiválasztott
47
Page
vagy
Action
animációját.
VI. Animáció Eddig szó esett már mindenről, csak az animációról nem. Végignéztük az egyes objektumtípusok, anyagok és textúrák tulajdonságait. Ezek legtöbbjének értéke időben változhat, ami maga az animáció. A tulajdonságoknak azért csak a legtöbbje, és nem mind, mert igyekeztünk szelektálni. Annál a tulajdonságnál, melynél semmi értelmét nem láttuk, hogy animálható legyen, vagy ahol az adott tulajdonság egy olyan állapotjelző az OpenGl számára, amit menet közben nem is szabad változtatni, ott szándékosan nem is tettük lehetővé az animálhatóságot. Minden egyéb esetben viszont igen. A Nemoban az animáció egyszerű keyframe animációt jelent. Aki használt már animációs programot, az pontosan tudja, hogy ez mit jelent. Az animációhoz elegendő megadni különböző időpontokban a pillanatnyi állapotot - ez a keyframe -, illetve az annak megfelelő értékeket, a közbülső értékeket a Nemo magától számolja ki egy általunk befolyásolható karakterisztikájú animációs görbe alapján. Az animáláshoz szükséges kezelői felület a Preview ablak alatt található:
Az animációs ablak két üzemmódban használható, melyek között a T és C feliratú gombok segítségével választhatunk:
1. Timeline mód. Timeline módban az ablak baloldalán azok az objektumok, anyagok és textúrák vannak felsorolva. melyeknek valamelyik tulajdonságának van animációja. Az objektumok neve sárgával, az anyagoké kékkel és a textúráké pirossal van megjelölve a megkülönböztethetőség kedvéért. Alattuk meg az animált paramétereknek a neve látható, fehér betűvel. Amennyiben már rengeteg animált paraméterünk van, és a viszonylag kis ablakban nehéz ezeket megkeresni, szűkíthetjük a listázást az ablak alján található lenyitható lista megfelelő elemének kiválasztásával. A lista elemei a következők:
48
•
All (mind): Nincs szűkítés, listázzon minden paramétert.
•
Common Parameters (közös paraméterek): Az objektumoknak csak az ún. közös tulajdonságaira definiált és animált paramétereket listázza.
•
Materials (anyagok): Csak az anyagok és animált paramétereik láthatók.
•
Textures (textúrák): Csak textúrák és animált paramétereik láthatók.
•
Object properties (objektum-tulajdonságok): Csak objektumok és egyedi tulajdonságaik animáció látható.
Timeline módban az ablak jobboldalán minden egyes paraméter animációját egy szürke csík jelzi. A csíkon a keyframe-ek helyét pedig kis szürke pucuka (jobb szó híján hívjuk így). Az ablak alján látható skála természetesen az időt jelöli. Minél hosszabb a csík, annál hosszabb az animáció. Az objektumok, anyagok és textúrák nevével egy vonalban viszont nem szürke, hanem zöld csík látható, melynek csak a két végén van zöld pucuka. A zöld csík hossza jelzi az összes animált paraméter animációjának hosszát. Mind a szürke, mind a zöld pucukák mozgathatók, így az animáció időzítését könnyűszerrel módosíthatjuk. Ha a zöldet mozgatjuk, az az adott objektum összes paraméterét befolyásolja - így pl. ha kicsit túl lassúnak tűnik egy adott objektum mozgása és forgása, egyetlen mozulattal gyorsíthatunk rajta, mégpedig úgy, hogy az arányokon nem változtatunk. A szürke pucukák mozgatása természetesen csak az adott paraméter animációjára lesz hatással, másra nem. A pucukák mozgatása a Windowsban megszokott drag & drop (ragadd meg, vidd arrébb, majd engedd el) történik. Ha eközben a Shift gombot is nyomva tartjuk, akkor a snap funkció is működésbe lép. Ez bizonyos távolságból odaugratja az egeret a legközelebbi egész másodperc értékhez, hogy ne kelljen finom mozgatással túl sokat vacakolni.
49
Alapállapotban a Timeline kb. 10 mp hosszú, ennél hosszabb animáció csíkja túllóg. De ha finomabb bontásban szeretnénk a Timeline-t nézni, akkor is szükség lehet a skálázás megváltoztatására.
Ehhez használhatjuk az animációs ablak tetején, jobboldalt található kontrollokat. A baloldali a Timeline skálázását változtatja meg (balra mutató nyílra kattintással egyre durvább, a jobbra mutatóval egyre finomabb lesz a Timeline bontása). A jobboldali kontroll pedig a megszokott görgetősáv (scrollbar) funkciót látja el. Az ablak jobboldalán is van két (vertikális) görgetősáv.
A felső görgető Timeline üzemmódban nem csinál semmit, Görbeeditáló módban viszont az animációs görbe méretét igazítja a rendelkezésre álló helyhez (azaz függőlegesen nyújtja vagy összenyomja). Az alsó viszont a minden ablak jobboldalán megszokott görgetősáv. Ha sok animált paraméterünk van, szükség is lesz rá, hogy ezek között lapozzunk. Az animációs ablak bal oldalán, felül az időadatokat láthatjuk.
Ezek közül a baloldali "időablak" az aktuális időadatot mutatja (Timekódban, vagy - ha a Settings menüben bekapcsoljuk a FrameCountert - frame, azaz képkocka számlálóként. A jobboldali pedig az összes paraméter animációját figyelembe véve annak hosszát, szintén Timekódban vagy Frame-számlálóként. Ha valamelyik paraméter animációjára még sincs szükség, és ki akarjuk törölni, elég a baloldali ablakban kiválasztani az animációs paraméter nevét:
50
Majd kattintani a
gombra.
A legalapvetőbb kérdés még nem került szóba: hogyan hozzunk létre új keyframe-et? Ennél mi sem egyszerűbb. Elég bekapcsolni az R (record - azaz felvétel) gombot,
És amíg ez a gomb pirosan világít, minden animálható paraméternek a már ismert módok valamelyiként történő megváltoztatása rögzítésre kerül, azaz vagy új keyframe jön létre, vagy ha annál a frame-nél már volt az adott paraméternek keyframe-je, annak értéke változik meg. A keyframe-ek elhelyezéséhez sosem szabad megfeledkezni arról, hogy a megfelelő időpontra állítsuk az időkurzort, mielőtt az adatváltoztatással a keyframe-et létrehozzuk. Az időpontválasztás kétféleképpen történhet: •
Az alsó időskála megfelelő pontjára kattintunk, vagy az időskálán drag & drop módszerrel és az időablak folyamatos ellenőrzésével addig "vonszoljuk" a kurzort, amíg pont a kívánt időponthoz nem ér. -
Ha már egy létező keyframe a támpont, azaz ugyanoda szeretnénk tenni az új keyframe-et, ahol már egy létező van, elég csak rákattintani a megfelelő szürke pucukára, és az időkurzor rögtön odaáll arra az időpontra. Ez rengeteg segítséget adhat az animáció időzítéséhez, amikor egy objektum különböző animálandó paramétereit ugyanolyan időzítésű animációval akarjuk ellátni.
Az időkurzor mozgatása az egér mellett billentyűkkel is történhet. A Ctrl billentyű mellett a numerikus gombok közül az alábbiak használhatók: Ctrl + 6 Ctrl + 4 Ctrl + 2 Ctrl + 8
1 frame-et előre 1 frame-et vissza vissza az animáció elejére az animáció végére
2. Görbe editor (Curve Editor):
51
A Görbe Editor egy paraméter animációjának finomabb beállítására és szerkesztésére szolgál. Háromféleképpen érhető el: •
A C gomb megnyomásával
•
Timeline üzemmódban valamely animált paraméter (tulajdonság) nevére történő dupla kattintással.
•
Timeline üzemmódban valamelyik keyframe-re (szürke pucuka) történő dupla kattintással.
A Görbe Editorban az ablak baloldalán az Objektum (Anyag, Textúra) neve, és az éppen kiválasztott és animált tulajdonsága látható. A tulajdonság neve egy lenyitható listából választható, a lista az adott Objektum (vagy Anyag vagy Textúra) valamennyi animálható tulajdonságát tartalmazza, így könnyen lehet egyik tulajdonság animációját a másik után beállítgatni. A tulajdonságok alatt található gombok szerepe a következő:
A nyilakkal az animációs görbén található keyframe-eken léptethetünk előre és hátra, az L feliratú gomb az adott animáción belüli ismétlődést (loop) beállító menüt hozza elő, a + új keyframe-et hoz létre, melynek ideje az időkurzor helye, értéke pedig az adott tulajdonság aktuális értéke, a az éppen kiválasztott keyframe-et törli. A Time (idő) számmezőben az éppen kiválasztott keyframe idejét változtathatjuk meg, a Value (Érték) mezőben meg az értékét. A panelben alul, Pathtype (ösvénytípus, itt inkább görbetípus) névvel jelölt lenyíló listában az animációs görbe karakterisztikáját választhatjuk ki. Mint az már az animációs rész bevezetőjében
52
kiderült, a keyframe-ek között az animációt a program automatikusan állapítja meg. Egyik értéktől a másikig azonban sokféle képpen lehet eljutni. Az érték változása lehet egyenes vonalú, egyenletes, vagy valamilyen görbe, leggyakrabban akkor, ha azt akarjuk, hogy lassan induljon a mozgás, és ugyancsak egyre lassulva érkezzen a következő keyframe-re (szép "puhán" állhon meg). Az ilyen görbéket matematikailag valamilyen spline-nal (ki tudja, van-e magyar neve?) szokták leírni. Spline sokféle van, a Nemo ebből kétfélét ismer, és a PathType listából e közül a kettő közül választhatunk: •
Bezier Ez két pont között meghúzott görbe vonalat bizonyos kontrolpontok elhelyezésével határoz meg. Minthogy egyszerúsíteni akartuk a görbevonalak editálásával alapvetően együttjáró bonyodalmakat, a kontrolpontok helyett két numerikus paraméterrel írjuk le a Bezier-görbe vonalát: -
EaseIn:
-1 és 1 között változó érték, ami azt adja meg, milyen finoman (lassan) végződjön a görbének az épp kiválasztott pont előtti szakasza (ezért a görbe első pontjára nem gyakorol semmilyen hatást). Ha -1, akkor éppen hogy gyorsulva ér a görbe az adott ponthoz, ha 1, akkor erősen lassulva.
-
EaseOut:
Ugyanaz, mint az EaseIn, csak ez a görbének arra a szakaszára vonatkozik, ami az épp kiválasztott keyframe után található. Ha értéke pozitív, akkor a mozgás lassan indulva gyorsul, ha negatív, akkor ellenkezőleg, gyorsan indulva lassul. Bezier-görbét abban az esetben érdemes használni, ha valamely mozgásnál azt szeretnénk, hogy az finoman induljon és/vagy finoman érjen véget. Minthogy ez elég gyakori eset, az alapértelmezett görbe minden paraméternél a Bezier.
•
Cardinal A Cardinal egy a Bezier-nél egyszerűbb Spline, az egész görbe karakterisztikáját egyetlen paraméter (Tension, tenzió) írja le. Ez 0 és 1 között változhat. Leglényegesebb esete a 0, ekkor ugyanis lineáris mozgást kapunk, amit a Görbe Editor egyenes vonalakkal jelez. Tehát ha azt szeretnénk, hogy a mozgás vagy egyéb paraméter időbeni változása se nem lassuló, se nem gyorsuló, hanem teljesen egyenletes legyen, használjuk a Cardinal spline-t 0 tenzióval. A Görbe Editornál az ablak nagyobbik, jobbra eső részét maga a görbe, illetve a vízszintes és függőleges skála foglalja el. A vízszintes skálán az idő, a függőleges a paraméter értéke található. A görbén az egyes keyframe-eket kis szürke pöttyök jelzik, ezeket drag & drop módszerrel megfoghatjuk és mozgathatjuk. A görbe mindig igyekszik az ablak méreteihez igazodni és csak a függőleges skálázás állításával követni a módosított értékeket, de az ablak jobboldalán lévő vertikális görgőket is felhasználhatjuk a finomabb beállítás érdekében.
53
Mint már említettük, az L feliratú gombbal hívhatjuk be a loop (ismétlődés) - beállító menüt.
Minden animáción belül ismétlődhetnek az animációs görbe egyes részei (vagy a görbe teljes egészében is). Ehhez a megfelelő keyframe vagy keyframe-ek loop paramétereit kell csak beállítani: •
Loops számmező: az ismétlődések száma. Ha ez -1, végtelen ciklust kapunk, az ismétlődés soha nem ér véget, amíg csak azt a Page-et, melynek része, le nem töröljük a képről. Ha valamilyen pozitív szám, pl. kettő, akkor a loopot kétszer végrehajtja, majd folytatja az animációs görbét a loop végén. A loop vége természetesen mindig az a keyframe, aminek loop paraméterét nullától eltérő értékre állítottuk.
•
JumpTo (ugorj ide): itt adhatjuk meg azt az időpontot, ahová a loop végéről ugorjon vissza.
•
OK. Elfogadjuk a loop beállításokat és becsukjuk a loop menüt.
3. Animált paraméterek típusa Ahogy az objektumok tulajdonságainál láttuk, azok értéke lehet numerikus (tört- vagy egész szám), lehet egy listából választott érték indexe (egész szám) és lehet szöveg (text) is. Egy Text objektum szövege is "animálható" keyframe-mel, de ebben az esetben az animációs görbének semmi jelentősége nincs. A Text objektum szövege akkor veszi fel azt az értéket, amit keyframeeml megadunk, amikor a lejátszás éppen eléri a keyframe időpontját. Addig az előző szöveg látható, nincs semmilyen átmenet a kettő között. Egész számmal leírt paramétereknél sem várható, hogy az animációs görbe finomságai észrevehetőek legyenek. A görbe pillanatnyi értékét ugyanis mindig egész számra kell kerekíteni. A nem csak egész számot felvehető paraméterek (sok más mellett a mozgás, forgatás és méretezés is ilyen, természetesen) animációja igen nagy pontossággal követő az animációs görbét, amit beállítunk. 4. Keyframe-adatok és paraméterek viszonya: Gyakori hibaforrás, hogy bár valamely objektum animációjához megadjuk az összes szükséges keyframe-et, a lejátszás indításakor vagy a Page iniciálizálásakor az objektum egy pillanatra olyan helyen látható („felvillan”), ahol nagyon is nem szeretnénk. Ennek oka az, hogy az objektumok tulajdonságait jelképező paraméterek pillanatnyi értéke lehet teljesen más, mint az animációhoz definiált keyframe-ekben beállított érték. A keyframe-animáció nem „írja felül”, nem helyettesíti a paramétereket, hanem csak lejátszáskor módosítja. Így például ha beállítunk egy animációt a TranslateX paraméterre – legyen ez 1 másodperc hosszú, a TranslateX kezdeti értéke legyen -2, végső értéke +2. Ha kikapcsoljuk a Record üzemmódot, és a TranslateX értékét nullára állítjuk, ez egyáltalán nem fogja befolyásolni az animációt. Mégis, amikor kimentjük az adatokat, ez a 0 lesz ennél az objektumnál a TranslateX
54
pillanatnyi értéke, és mindaddig, amíg el nem indítjuk a lejátszást, az is marad. A lejátszás indításakor ugrik -2, majd egy másodperc alatt folyamatosan változva jut el +2-ig. Mindezt azért érdemes megjegyezni, mert mielőtt a lejátszót indítanánk, érdemes legalább az animációval rendelkező paraméterek pillanatnyi (kurrens) értékeit vagy az animáció kezdeti értékére állítani, vagy egy olyat megadni, ami nem zavaró lejátszáskor (pl. nem hagyja a kép közepén az objektumot, holott annak az animációja szerint a képen kívülről kellene bejönnie). Kaphatunk ehhez segítséget is, ha bekapcsoljuk a ResetObjects opciót a Settings menüben. Ekkor a Stop gombra kétszer kattintva nemcsak az animációt állítjuk vissza az elejére, hanem egyszersmind a paraméterek pillanatnyi értékeit is az első keyframe-mel azonos értékre tudjuk állítani.
5. Action Már szóba került többször is, hogy egy Page-hez definiált objektumokkal különféle animációkat hozhatunk létre. Így külön megadhatjuk a Page objektumjainak a BE animációját, a KI animációt és akárhány KÖZTES animációt is, ahogy éppen hozza a szükség. Egyet azonban sosem szabad elfelejteni: Az objektumok tulajdonságai a különböző Actionökben nem függetlenek egymástól. Tegyük fel, hogy egy objektumot az Action1 nevű Actionben elmozgatunk A pontból B-be, és ehhez a TranslateX paraméter változtatása szükséges. Ezután az Action2-ben továbbvisszük ugyanazt az objektumot B pontból C-be, de ezúttal a TranslateY paraméter változik. Hiába választjuk ki ismét az Action1-et. Automatikusan ez nem jelenti azt, hogy az objektum visszakerül oda, ahonnan az Action1-ben indul, hiszen az objektum TranslateY paraméterét megváltoztattuk az Action2-ben, és az ott is marad, hiszen ezt a paramétert az Action1 viszont nem állítja. Ilyen esetekben nagyon fontos, hogy minden paraméter kezdőértékét, amit az adott Action nem módosít, de egy másik viszont igen, ebben az Actionben is rögzítsük a 0. frame-en egy keyframe megadásával. Ezzel "lehorgonyozzuk" az objektumunkat azon a kiindulási ponton, ahonnan a mozgást indítjuk, így egy Page Actionjei tetszőleges sorrendben lejátszhatók lesznek. Általában is fontos szabály, hogy minden animációnak a kezdeti keyframe-je a 0. frame-en legyen. A "lehorgonyzás" legegyszerűbb módja, ha az R gomb bekacsolása után a szükséges számmezőkbe belekattintunk, majd a görgőt egyet fel, egyet le mozdítjuk. Az első változásnál létrehozunk egy új keyframe-et (hiszen Record módban vagyunk), a visszamozgatással pedig újra az eredeti értéket veszi föl, hiszen nem arrébb vinni akartuk, hanem ellenkezőleg: lehorgonyozni. 6. Action logic Minthogy a Nemo egyáltalán nem határozza meg, hogy hány Page-et vagy valamelyik Actionjét lehet lejátszani egymás után anélkül, hogy egyik törölné a másikat, elég hamar olyan zűrzavart lehet a képen létrehozni, ami már igen nehezen kezelhető. Ezért még a tervezési fázisban (ez ugye a Nemo3D) meg lehet határozni, hogy egy Page vagy Action lejátszása a NemoPlayben
55
automatikusan meghívja-e valamelyik másik Page valamelyik Actionjét (általában abból a célból, hogy azzal annak a Page-nek az objektumjait eltakarítsa az útból). Minden egyes Page vagy Action bármelyik másik lejátszását elindíthatja. Az Action Setup panelben baloldalt épp ezért az összes Page és Action nevéből felépített lista látható. Amelyiket kiválasztjuk, azzal azt adjuk meg, hogy melyik Page-re "figyeljen" a Nemo, amikor az aktív Pageet vagy Actiont lejátssza. Ha a "megfigyelt" Page létezik, azaz korábban lejátszottuk, akkor valamelyik Actionjét meghívhatjuk. Ha viszont nincs „kint”, azaz nincs lejátszott állapotban, akkor is meghívhatjuk a Page-et magát vagy valamelyik Actionjét.. Hogy melyiket, az a jobboldalt felül található Actions lenyíló listából választható ki. A kiválasztás után a Time delay (időkésleltetés) lehetőséget ad arra, hogy előbb ez az Action fusson le, az épp lejátszandó csak a késéssel megadott idő leteltét követően. Az Add (" + ") gombbal menthetjük el.
a végleges listába (jobboldalt alul) az így beállított Actiont. A listából, ha valami mégis feleslegessé válna, a " - " gombbal törölhetünk. „+” gombból kettő is van, az On azt az Actiont adja meg, ha a figyelt Page létezik, On állapotban van. Ebből következően az Off pedig azt, amit akkor kell meghívni, ha a figyelt Page nem létezik, Off-ban van. Kettőnél több Actiont nem adhatunk hozzá a listához, de ennek nincs is értelme, hiszen a figyelt Page vagy On-ban vagy Off-ban van, harmadik állapot nem is lehetséges. A Page nevek listájában minden Page neve szerepel, az éppen aktív Page neve sem hiányzik. Felmerül a kérdés, mi értelme lehet annak, hogy egy Page lejátszásakor figyeli, hogy önmaga kint van-e már a képen. Válasz: nagyon is sok. Képzeljük el azt a helyzetet, hogy egy alsó harmados névfeliratot akarunk lejátszani, aminek elemei jobbról, balról vagy akárhonnan berepülnek a kére, és a betűk kiíródnak. De mi van akkor, ha ilyen feliratokat akarunk egymás után megjeleníteni, csak a nevek változnak? Ez igazán gyakran előfordul. Ehhez elvben előbb le kellene venni az éppen kint lévő nevet, majd kitenni az újat. Viszont ha az Action Logicban beállítjuk, hogy figyelje, hogy kint van-e már ugyanez a felirat, és ha igen, akkor hívja meg azt az Actiont, ami csak a régi szöveget az újra cseréli, egyszerű, elegáns és remekül kihasználható eljáráshoz juthatunk.
56
VII. Import Az Import, mint fogalom már jóval korábban szóba került, de pontosan használatának tárgyalására csak most, az animációról szóló tudnivalók megtárgyalását követően kerülhetett sor. Minden egyes Page egy felirat template, azaz minta, amit azzal tartalommal, ami feliratról feliratra változik, a lejátszó NemoPlay-ben töltünk ki. Az pedig, hogy a template-nek melyik eleme, paramétere változik, az Importok megadásával definiáljuk. Az Importok létrehozásához és beállításához a Properties (tulajdonságok) panel Imports fülét válasszuk ki:
Új importot az anyagok vagy textúrák létrehozásához is használt „+” gombbal lehet létrehozni, a „-” gomb pedig törli a listából, ami már felesleges. Egy Import csak az adott Page vagy Action egy keyframe-jének értékéhez biztosít hozzáférést. Így természetesen, ha még egyetlen keyframe sem tartozik egy Page-hez, Importja sem lehet. Az Import paraméterei a következők:
•
ImportID: Az import sorszáma, egyben azonosítója. Minden Page (Action) importjainak sorszámozása egyről indul, és egyesével nő.
57
•
Name: Az Import neve. A sorszám alapján a NemoPlayben nehéz lenne azonosítani, milyen adatot tartalmaz az import és mire vonatkozik. Bár minden új import létrehozásakor kap automatikus nevet, érdemes valami "beszédesebbre" cserélni.
•
Object Name: Annak az Objektumnak a neve, amelyhez tartozó keyframe értéket akarjuk az importtal módosítani. A név listából választható. A listában azok az objektumok szerepelnek, melyeknek van animációjuk, tehát keyframe-jük is.
•
Parameter Name: Mindazon tulajdonságok listája, melyeknek az adott objektum esetében van animációja, így van keyframe-je. A név listából választható.
•
Key Time: A keyframe azonosításához szükséges utolsó adat: a keyframe ideje. Szintén listából választható. A listában a kiválasztott objektum kiválasztott tulajdonságára megadott animáció összes keyframe-je megtalálható. Ezáltal egyáltalán nem csak az animáció elején változtathatunk meg a lejátszóban egy adatot, hanem bármelyik időpontban.
•
Database: Ha automatikusan adatbázisból szeretnénk az Importon keresztül adatot átadni, a lenyíló listából válasszuk ki a megfelelő és a Tools menü Database Setup menüpontjában beállított (l. ott) connection-t, és az Enable-re kattintva aktiváljuk is azt. Amennyiben fix lekérdezéssel kapjuk meg a kívánt adatokat, azaz az SQL parancs feliratról feliratra nem változik, akkor elegendő azt az SQL Query szöveges ablakba beírni, és nem szükséges, hogy a NemoPlay-ben ezzel foglalkozzunk.
•
Dynamic update: Ha az adatbázis változását folyamatosan ellenőrizni kívánjuk, hogy az éppen lejátszott felirat tartalma ennek megfelelően folyamatosan frissüljön, ebbe a
58
számmezőbe írjuk be, ezredmásodpercben számítva, milyen időközönként kérdezze le a Nemo az adatbázist. Ha az érték nulla, akkor csak az adott Page lejátszásakor, egyszer kérdezi le. 100-nál kisebb adatot, biztonsági okokból nem fogad el, és tekintettel arra, hogy az adatbázis lekérdezéséhez szükséges idő rengeteg dologtól függ, a beállított érték mindössze annyit ad meg, milyen gyakorisággal kísérli meg a lekérdezést. Amennyiben az SQL lekérdezés állandóan változhat, azt a NemoPlay-ben kell megadnunk, ami elég sok és fárasztó begépelnivalót jelenthet. Ennek egyszerűsítésére elég itt az Import ablakban úgy megadni az SQL-t, hogy a változó részeket idézőjelbe tesszük: SELECT Vnev,KNev FROM Jatekosok WHERE Jatszik<”10” Ebben az esetben a NemoPlay-ben csak a 10 helyére illesztendő számot kell megadnunk (Pontos leírást lásd ott). Mindenesetre ez nem kevés fáradságtól kímél meg.
59
VIII. Egyéb Ebben a fejezetben a Tools (eszközök) menüben található menüpontok leírását és általános, más témához nem sorolható tudnivalókat találunk. 1. Hardware Setup (hardware beállítás) Itt találhatjuk meg az adott hardware konfigurációnak megfelelően beállítandó paramétereket. A Preview ablak helyén megjelenő panel baloldala a video bejárattal kapcsolatos adatokat, jobboldala a video kimenetre vonatkozó beállításokat tartalmazza. •
Video Input (Video Bejárat):
A lenyitható listából a rendelkezésre álló hardware-t választhatjuk ki. Lehet: •
None (semmi)
•
Bluefish (Envy, Greed vagy Dual Link Pro típus)
•
DVS (SD Station, Centaurus II vagy Centaurus II LT
60
Ha új kártyát választunk ki, az csak a program legközelebbi futtatásakor fog működni. •
Enable Capture: bekapcsolt állapotban a bejövő videojelet mutatja teljes képernyős méretben, beállítási (crop, chroma key, l. lejjebb) célból.
•
Enable Crop: Bekapcsolt állapotban a bejövő video jel széleit vágja le. Ezzel részint a video normális esetben nem látható, de a Nemoban látható és így esetleg zavaró részeit tüntethetjük el, de akár egy szükségtelen logót is eltávolíthatunk.
•
CropL, CropR, CropB, CropT: A kép széléből levágni kívánt rész mérete. Sorban: L (a kép baloldalán), R(a kép jobboldalán, B (a kép alján), T )a kép tetején).
•
Grab Input: Megfogja (digitalizálja) a bejövő videó egy kockáját, és felkínálja, hogy valamilyen bitmapformátumban mentsük ki diskre.
•
De-interlace: Bekapcsolt állapota esetén a digitalizált képkocka két félképét (field) interpolálva összeúsztatja. Így ha a megfogott képkockán gyorsabb mozgású részek vannak, megszűntethető a remegésük. Természetesen nem váltott soros képnél (720p) használata teljesen felesleges.
•
Enable chroma (színlyukasztást).
key:
Bekapcsolva
engedélyezi a
bejövő
jelen
a
chroma
key-t
A chroma keyernek maximum hat különböző színt állíthatunk be. Több key egyidejű használata nagyon is jól jöhet olyan esetben, amikor a kilyukasztandó háttér (pl. blue screen, green screen) nem teljesen homogén. Nem stúdiókörülmények között, pl. ha focipálya gyepére szeretnénk a kulcsolandó grafikát elhelyezni, a megvilágítás egészen bizonyosan több árnyékot is vet a pályára. Ekkor is nagy segítséget nyújt, ha külön key-t állíthatunk be a napos és az árnyékos részekre. •
Test Bekapcsolva az élő képen a chroma key beállítások alapján lelyukasztott részek feltűnő színű tiszta fehérrel lesznek színezve, ezzel könnyítve a chroma key beállítást.
•
Színlista: Ebben a lenyitható listában a chroma keyernek megadott színek RGB értékeit láthatjuk és választhatjuk ki. A mellette lévő színmutató négyzetre kattintva a szokásos RGB +HSV színbeállító ablakot hívhatjuk be, itt pedig módosíthatjuk a lyukasztandó színt. Ettől jobbra, a "pipettával" a video kijáraton megjelenő kis piros négyzet segítségével színt választhatunk. Az egérrel a kis négyzetet mozgassuk oda, ahol a lyukasztandó szín van, majd a jobb egérgombbal kattintva fogadjuk el a kis négyzet közepén látható színt.
•
A "+" gomb elmenti a kiválasztott színt mint a chroma keyinghez használt egyik színt, a "-" gomb törli a listából az éppen kiválasztott színt.
61
Minden kiválasztott színhez tartozik egy-egy tolerancia érték, mely a a beállított értékekhez képest adja meg azt az intervallumot, mely plusz és minusz irányban is bekerül a kilyukasztandó színek közé. A tolerancia értékeket a három csuszka vagy a három numerikus kontroll segítségével egyaránt beállíthatjuk. A "C" gombokkal az egyes H,S,V értékeket alapállapotba hozhatjuk. •
Video Output (Video Kijárat):
•
kártya típusa (lenyíló listából választható). Lehet None, ebben az esetben csak VGA kimenet van. Ezen kívül beállítható Blackmagic, Bluefish vagy DVS kártya. Amennyiben olyan kártyát állítunk be, mely vagy nincs is a gépben vagy valamiért nem működik, a
62
Nemo automatikuson csak VGA-t fog használni. Ha új kártyát választunk ki, az csak a program legközelebbi futtatásakor fog működni. -
Video Mode: Output: A videokimenet szabványának beállítása. Lehet normál felbontás (PAL vagy NTSC) vagy HD (több szabvány egyike). Ha új értéket választunk, a program csak újraindításakor vált elbontást.
-
Input: A videobemenet szabványának beállítása. Lehet normál felbontás (PAL vagy NTSC) vagy HD (több szabvány egyike). Ha új értéket választunk, a program csak újraindításakor vált felbontást.
-
Genlock: A Referenciajel (Genlock) beállításához a vízszintes és függőleges fázis paramétereket változtathatjuk. A függőleges állítására elvben nagyon ritkán van szükség, a vízszintessel a kötésben lévő videojelet lehet szükség esetén – (például hosszú kábel) a kép közepére visszahozni.
-
Keying: Internal (belső kulcsolás): a bejövő videojelre kulcsolja a Nemo által előállított grafikát.
-
External (külső kulcsolás): a video és kulcsjel egy video mixer bemenetére kerül, és a video mixer kulcsolja azt az élő képre (downstream mixing).
-
Test Image: A genlock és kulcsjelbeállításokhoz hasznos tesztábrát jelenít meg a videokimeneten.
-
Mixing Type: Non-premultiplied (unshaped). A videokimenet (fill) komponensei nincsenek előre beszorozva az alpha (kulcs) komponenssel. Külső kulcsolás esetén alapbeállítás, a legtöbb mixer így működik.
-
Premultiplied (shaped): A videokimenet (fill) komponensei előre be vannak szorozva az alpha (kulcs) komponenssel.
-
Render quality: A képmegvalósítás minősége. Amennyiben a lejátszás során problémák támadnak, nem elég gyors a hardware, a sebességet növelhetjük a képminőség rovására. Erre szolgál ez a paraméter.
-
AA (antialiasing filter strength): Az élsimítás erőssége. Egyéni preferencia kérdése, aki kicsit lágyabb, egyszersmind simább széleket szeretne, állítsa erősebbre a filter erősségét.
63
2. Import Fonts A Nemo3D közvetlenül nem tudja kezelni a Windows Truetype fontjait, azokat előbb háromdimenziós, poligonos modellé kell konvertálnia. A konverzió paramétereinek beállítása történik a fontimportáló panelben, ami - mint a hardware setup - a preview ablak helyén jelenik meg.
A kész, importált font neve a fontlistába kerül, és amikor egy Text objektum betűtípusát választjuk ki, valójában ebből a listából választunk. •
Imported fonts (importált fontok):
A már beimportált fontok listája.
A " + " gombbal új fontot adhatunk hozzá. Ehhez előbb válasszunk a Windows installált fontjai közül a párbeszéd ablakban, állítsuk be igény szerint az alábbi opciókat, majd a Go! gombra kattintva történik meg a konverzió, és kerül be az importált fontok listájába az új font. Ettől kezdve bármikor használhatjuk is. A " - " gombbal a feleslegessé vált fontot törölhetjük a listából. •
Styles (stílusok): Itt adhatjuk meg, hogy az adott font mely stílusát akarjuk beimportálni (regular, bold, italic, bold italic). Bizonyos fontoknál hiába adjuk meg az adott stílust, ha az nem létezik, az importálása is sikertelen lesz.
•
Depth (mélység): Lehetőség van extrudált ("térben kihúzott") betűk előállítására importálás közben. Ha
64
valamiért szeretnénk, hogy a betűknek hátlapja legyen és esetleg vastagsága, ebbe a számmezőbe nullánál nagyobb számot adjunk meg (tulajdonképpen mindegy, mekkorát, a ScaleZ paraméter bármikor és utólag is módosítható). •
Accuracy (pontosság): A Truetype, mint vektorfont poligonokra alakításának pontosságát adja meg. Alapállapotban értéke nulla, ami a lehetséges legpontosabb átalakítást jelenti. Egyúttal azonban a legtöbb poligon így jön létre, ami egészen extrém esetben sebességproblémához (túl sok poligont kell számolnia szegény VGA-kártyának). De ez tényleg extrém eset, általában nyugodtan hagyjuk nullán. Egyébként minél nagyobb az értéke, annál szögletesebb, durvább lesz a végeredmény.
•
Kódkészlet (nyelv): Lenyíló listából választhatjuk ki, annak a nyelvnek megfelelően, amiben készülnek a feliratok. A lista elemei: - Western (nyugati): A legtöbb nyugat-európai nyelv. - Baltic (balti) - Default (az adott gép Windowsának nyelve) - Eastern European (a magyar is idetartozik!) - Greek (görög) - Russian (orosz) - Turkish (török) - Symbol (szimbólumok, pl. Webdings és Wingdings font).
65
3. Import 3D Models
Mint már az Objektumok tárgyalásánál kiderült, a Nemonak nincs saját modellezője. Miért lenne, az egy teljesen más műfaj. Bonyolult modelleket ezért importálni kell, viszont cserében mindenki használhatja a saját, jól megszokott 3D animációs programját vagy modellezőjét. A Nemo a régóta elterjedt és közkedvelt Wavefront OBJ file-ban tárolt modelleket képes beimportálni. Az OBJ közönséges text file-ban tárolja a modellek adatait, egy, az OBJ-val azonos nevű MTL (material library, anyagkönyvtár) file-ban a szükséges anyagokra és textúrákra vonatkozó adatokat. OBJ-ben szinte minden valamirevaló animációs program és modellező képes kiexportálni az elkészült modelleket. De csak a modelleket, anyagaikat és textúráikat. Sem animációt, sem kamera, illetve lámpabeállítást nem. Ezeket mindig a Nemoban kell felépíteni. Egyébként jobb is így, több időt kellene a különböző programok különböző értelmezése miatt felmerülő problémák kezelésével tölteni, mint eleve a Nemoban csinálni. A különféle modellezők egyszerű poligonos modelleknél manapság sokkal többet tudnak. Tekintettel arra, hogy a Nemo real time rendszer, bizonyos egyszerűsítések elkerülhetetlenek. Csak poligonos (lehetőleg háromszögekből álló) modelleket hozhatunk át. Sajnos még így is adódhatnak a konverziónál problémák. Egyes modellezők bizonyos paramétereket - többek között a a síklapokra merőleges normálvektort - vagy rosszul számítják ki, vagy egyáltalán nem számolnak vele. Megtehetik, mert ezek úgynevezett rendereléssel állítják elő a végleges képet, és
66
a 3D-s számításokat a renderelés alatt végzik el. Egy real time rendszer ilyen pongyolaságot nem engedhet meg magának. Sajnos, bizony előfordulhat, hogy ezért a pl. 3DS Max-ban készített modell ott jónak tűnik, de a Nemoban bizonyos részei lyukasnak látszanak. Az ilyen, normálvektor számításból fakadó problémákat abban a modellezőben kell megoldani, ami a hiba forrása. Az importálandó modelleket lehetőleg a Page Collectionhöz tartozó 3DModels mappában helyezzük el, a program is ott fogja keresni őket. •
Browse Az OBJ file keresése párbeszéd ablakban. A kiválasztott file neve a gomb alatt lesz látható.
•
Re-Center Object: Lehetőség szerint ügyeljünk, hogy a modellezőben felépített modellek közepe az origó (0,0,0) pont legyen. Ha azonban ez valamiért nem megy vagy elfelejtettük, ennek az opciónak a bekapcsolásával segíthetünk rajta. A modellek középre igazítása egyébként azért fontos, hogy pivot pontja a közepére kerüljön.
•
Swap YZ coordinates: Bizonyos modellezők a koordinátatengelyeket elforgatva használják, ezzel az opcióval a normális, OpenGl által használt sorrendet állíthatjuk vissza szükség esetén.
•
Recalculate normals: Már említettük, hogy egyes esetekben a modellezőből exportált modellek normálvektor adataival gond lehet. Ennek jele lehet néhány furcsán lyukas rész a modellben, vagy világítási furcsaságok. Ezt a problémát elvben mindig a modellezőben kell megpróbálni kijavítani, de ha ott nem megy, kísérletet tehetünk a normálvektorok újraszámításával, ha bekapcsoljuk ezt az opciót.
•
Re-Scale factor: Ha gyakran használunk egy modellezőt a Nemoba importálandó modellek készítéséhez, érdemes a méreteket összkalibrálni, hogy körülbelül ugyanakkorának lássuk mindkét software-ben modellünket. Ez azonban nem mindig egyszerű, így van utólagos segítség erre a célra. Ha egynél kisebb faktort állítunk be a számmezőben, akkor már importálás közben átméretezhető a modell, anélkül, hogy bármilyen egyéb tulajdonsága megváltozna.
•
Add gomb: Végrehajtja a konverziót és elhelyezi a modellek listájában. Szükség esetén új anyagokat és textúrákat hoz létre, melyek meg is jelennek a többi anyag és textúra mellett.
•
Delete gomb: Kitörli a feleslegessé vált modellt, de az általa létrehozott anyagokat és textúrákat nem. A modellek importálása nem végleges. Az adott Page Collection beolvasásakor a program minden egyes modellt, illetve OBJ file-t mindig újra beolvas és konvertál. Ezért is érdemes az erre a célra fenntartott 3DSModels mappát használni, de így is ügyeljünk arra, hogy onnan csak akkor vigyünk el vagy dobjunk ki file-t, ha már tényleg nincs rá szükség. Ellenkező esetben a Nemo hiába fogja a file-t keresni.
67
4. Build Image Sequence
Képsorozatból épít szekvenciát, amit textúraként használhatunk. Minthogy a Nemo AVI file-t is tud használni textúraként, felmerül a kérdés, mi szükség van másfajta szekvenciára. A szekvencia file (ezek .nsq kiterjesztést kapnak) tartalmazhat alfát is, az AVI - általában - nem. Még fontosabb talán, hogy a szekvencia file-t a Nemo teljes egészében a memóriába töltve használja, míg az AVI-t folyamatosan a hard diskről olvassa. Így bár több memóriát fogyaszt a szekvencia, sokkal biztonságosabb és gyorsabb is a lejátszása. Éppen ezért ha nem nagyon hosszú, percben, netán órában mérhető video anyagot szeretnénk valamilyen grafikához felhasználni, lehetőleg építsünk belőle szekvenciát, és ne AVI-t. A szekvencia legtöbbször valamilyen animációs programban előállított és egyazon mappában található bitmapek sorozata, ahol a filenévben szerepel a sorszám: pl. nev0000.tga nev0001.tga nev0002.tga ... Egy szekvencia file háromféle lehet, aszerint, hogy a várható mérete (ami a képmérettől és a képek számától is függ) mekkora. •
Uncompressed: Tömörítetlen. A szekvencia elemei tömörítetlen formában kerülnek bele a szekvencia file-ba.
68
Sebesség szempontjából az optimális megoldás, de a legtöbb helyet igényli a memóriában. •
Lossless compression: Veszteségmentes tömörítés. Az egyes kockák gyorsan kitömöríthetők, de a tömörítetlenhez képest képtartalomtól függően akár jóval kisebb file-t eredményező eljárás.
•
Lossy compression: Veszteséggel járó tömörítés. A Jpeg formátumhoz hasonló tömörítést hajt végre. A tömörítés minőségét is megadhatjuk a számmezőben(1 és 10 között, 10 a legjobb). A relatíve legmemóriatakarékosabb megoldás, egyúttal sebesség szempontjából a legpazarlóbb megoldás. De még alighanem így is gyorsabb a kitömörítés, mint egy tömörített AVI esetén.
•
Starting from chosen frame: Kezdd a kiválasztott kockától. Alaphelyzetben mindegy, hogy a szekvencia mely tagját jelöljük meg, mint konvertálandó képet, az összes ugyanolyan nevű, csak frame-sorszámban különbözőt fel fogja a program használni. Viszont ha ezt az opciót használjuk, akkor csak az általunk kiválasztott file, és a nevében nagyobb indexszel ellátott ugyanilyen file-ok kerülnek be a szekvenciába.
•
Number of frames: Ebben a számmezőben adhatjuk meg a programnak, hány frame-et konvertáljon az elsőtől kezdve. Ha a megadott szám nulla, az összes azonos nevű, csak a frame-indexben eltérő filet konvertálni fogja.
•
Browse gomb: Ezzel lehet megkeresni a konvertálandó file-okat. Alatta az egyik szövegmezőben a kiválasztott file neve, ez alatt - a másikban - a szekvencia (nsq) file neve és helye válik láthatóvá. A szekvencia file-t a program mindig a Page Collection Images mappájában helyezi el.
•
Go! gomb: Végrehajtja a konverziót. Menet közben a frame-számlálót figyelve mindvégig nyomon követhetjük, hol tart.
5. Database Setup Ebben a menüben a különféle adatbázisokhoz történő kapcsolódást állíthatjuk be. A Nemo ODBC-n keresztül kapcsolódik akármelyik adatbázishoz, amelyhez ODBC-driver fel van telepítve a Windows-ban. Ez gyakorlatilag az összes létező adatbázist elérhetővé teszi, sőt, még a Microsoft Excelt is. A kapcsolódás az ún. connection string felépítésén keresztül történik. Gyakrabban előforduló adatbázisoknál (MS SQL, MySQL, Access, Excel) elegendő a szükséges paramétereket beállítani, a Nemo ezekből magától összerakja a connection stringet. Ha az adott adatbázishoz korábban DSN-t (System vagy User) konfiguráltunk, akkor elég a DSN nevét kiválasztani a listából:
69
Ha DSN-t nem állítottunk be, akkor az adatbázis típusának megfelelő ODBC driver nevét válasszuk ki a listából, majd állítsuk be azokat a paramétereket, amelyek a kapcsolódáshoz kellenek: ●
nem fájl alapú adatbázis esetében host nevet vagy ip-címet, port számot, user nevet és ha van, passwordöt (jelszót), valamint az adatbázis nevét:
70
●
File-alapú adatbázisnál, mint pl. az Access vagy az Excel, elég a driver-t, user nevet és jelszót (ha van) megadni, valamint a Browse gomb segítségével megkeresni magát az adatbázis file-t:
Ha minden paramétert megadtunk, a Build gombra kattintással a Nemo összerakja a connection stringet, és megjeleníti az ablakban. Ritkábban előforduló adatbázis-típus esetében előfordulhat, hogy a connection stringet „kézzel” begépelve magunknak kell megadni. A Build gomb mellett lévő Test gombra kattintással tesztelhetjük, jó-e a connection string, működik-e a kapcsolat. Ha a Test gomb pirosan világítani kezd, akkor működik. Akár be is írhatunk egy SQL-parancsot az SQL query ablakba, a mellette lévő Test gombra kattintással az eredményt – ha van – a Result ablakban láthatjuk. Ha minden beállítás jó, a „+” gombbal létrehozhatjuk és a listában elhelyezhetjük a kapcsolatot. Ilyenkor a Nemo automatikus nevet ad, de ezt a nevet a lenyíló listába kattintva bármikor megváltoztathatjuk (a fenti esetben a név a Players.mdb Access adatbázisra utal). A szükségtelen kapcsolatokat a „-” gombra kattintva törölhetjük ki.
71
6. Switch to Runtime Mode A tervezés végeztével és a lejátszó (NemoPlay) fogadásához a Nemo3D-t Runtime (futtató) üzemmódba kell kapcsolni (Tools menü, legalsó menüpont). Ekkor csak a Preview ablak marad (beállítható méretben), és az alap file-műveletek kivételével minden szerkesztő-funkció kikapcsolt állapotba kerül. A NemoEngine azonban tökéletesen üzemel, és készen áll a lejátszótól kapott utasítások fogadására. A menüpont ismételt kiválasztásával visszatérhetünk Design (tervező) módba. 7. Maradék menüpontok
Vagy ami az eddigiekben kimaradt. A Settings menüben az alábbi három menüpontot találjuk: ●
FrameCounter: Az időadatot alapállapotban Timekódban (perc:másodper:frame) használja a program. Ha egy egyszerű frame-számlálót szeretnénk, ezzel a beállító kapcsolóval a Timekód Frameszámláló beállítások között kapcsolgathatunk.
•
Export To File: Utómunka feliratozáshoz vagy más teszteléshez a NemoEngine képes minden egyes kiszámolt képkockát szekvenciálisan számozott file-okba menteni. Ez az opció csak Runtime módban üzemel, tekintettel arra, hogy nem a feliratmintát, hanem az egyedi tartalommal kitöltött feliratot érdemes csak file-ba exportálni. Az egyedi tartalom meg a lejátszóban jön létre. A file-művelet miatt a real time képgyártás szinte bizonyosan akadozni fog, ezért video input használatát lehetőleg mellőzzük.
•
Use Video In: Ha a Nemonak be van állítva valamilyen broadcast kártya, mint elérhető input (Bluefish vagy DVS), a NemoEngine folyamatosan digitalizálja a kártya bemenetére kötött jelet. Ez persze némileg megterheli a processzorokat és más erőforrásokat, így ha egyébként nincs szükségünk az élő bemenetre valamelyik textúrán, érdemes lehet ezt az opciót kikapcsolni.
•
A ResetObjects menüpontról már szó esett a VI. (Animációs) fejezet 4. pontjában.
•
EnableSafeTitle egy vékony piros kerettel jelöl a Preview ablakban azt a területet, ami alighanem minden vevőkészüléken (még a Nancsi néni Junoszty tévéjén is – pardon!) látszani fog.
72
8. Még egyszer a takarásról és az átlátszóságról: Bár első hallásra és főleg annak, aki az OpenGl vagy más fejlesztői környezetben nem járatos, furcsának tűnhet, de az átlátszóság problémája az egyik legnehezebben kezelhető kérdés egy real time 3D-s környezetben. Mint arról már szó esett, az egyes objektumok egymás közti takarását az ún. Depth Buffer (mélységi puffer) segítségével számítja és tartja nyilván az OpenGl. Ha a számítások során az épp megjelenítendő objektum adott pontja olyan mélységi értéket kap, aminél már kisebb (közelebbi) érték szerepel a pufferben, akkor azt a pontot eldobja, nem rajzolja ki. Ez az eljárás tökéletesen működik mindaddig, amíg valamilyen mértékben átlátszó objektumra nem kerül a sor. Ez ugyanis hiába van előrébb a nézőponthoz (kamera) képest, mint az az objektum, ami mögötte van, mégsem takarhatja azt el, mert akkor az átlátszóság nem is érzékelhető. Az OpenGl-ben külön beállítás van arra, hogy fogalkozzon-e átlátszósággal, számítsa-e ki a képen már létező (nem üres) pixel és a térben előtte lévő, részben átlátszó pixel kölcsönhatását, keveredését. Az eljárást Blendingnek (keveredés) nevezzük. Ha a Blendinget kikapcsoljuk, az OpenGl nem is számol átlátszóságot, minden átlátszatlan marad, és teljesen elfedi, ami mögötte van. Amikor viszont a Blendinget engedélyezzük, az automatikus takarást lehetővé tévő Depth Buffert nem, illetve csak részben használhatjuk. De akkor hogyan számítható ki az átlátszó objektumok, illetve egy átlátszó és nem átlátszó objektum közötti takarás? Erre tulajdonképpen semmilyen módszer nincsen. A kirajzolási sorrend határozza meg, melyik objektum van hátrébb, és melyik előrébb. Ez a Nemoban azt jelenti, hogy amelyik objektum a sorban előrébb van - azaz az Objects panelben feljebb! - azt előbb számítja és rajzolja ki. Tehát arra mindig nagyon ügyelnünk kell, hogy azokat az objektumokat, melyeknek van átlátszó részük, a kamerától való távolság szerint, csökkenő sorrendben helyezzük el. Ez a legfőbb célja az objektumoknak a sorban le- és felfelé történő mozgatását lehetővé tévő gomboknak. Ha viszont erre ügyelünk is, további problémát kell leküzdenünk. Honnan tudjuk ugyanis, hogy van-e egy objektumnak átlátszó része. A legegyszerűbb esetben a közös tulajdonságok között szereplő Transparency érték kisebb egynél. De akkor is átlátszó, ha a rajta lévő anyag átlátszósága kisebb egynél. Ezek olyan értékek, amiket mi állítunk a Nemoban, tehát befolyásolhatók és a NemoEngine számon tarthatja őket. Viszont ha textúraként 32-bites, alpha csatornával rendelkező álló vagy mozgó képet használunk, az átlátszóságot maga a textúra fogja megadni. Márpedig minduntalan nem lehet végignézni, hogy abban van-e olyan pixel, aminek alpha komponense kisebb 255-nél. Ezért ha manuálisan nem "segítünk", a program átlátszatlannak fogja tekinteni az összes textúrát, így az minden mögötte lévő tárgyat letakar. A probléma manuális megoldása jóval egyszerűbb, mint a hozzá tartozó magyarázat. Ha olyan textúrát vasalunk, amiről tudjuk, hogy átlátszó része van, vagy az anyag, vagy az objektum Transparency paraméterét állítsuk egynél minimálisan kisebb értékre (0.999), még akkor is, ha magát az objektumot nem akarjuk átlátszóvá tenni. Így az OpenGl helyesen fog számolni a textúra átlátszóságával.
73
IX. NemoPlay A már többször emlegetett lejátszó. Teljesen független, különálló programként működik, több okból is: •
Lehessen a Nemo3D/NemoEngine-nel azonos gépen is, de működjön különálló, teljesen hétköznapi számítógépen is.
•
Egy NemoPlay képes legyen több NemoEngine vezérlésére.
•
Hardware-igénye legyen minimális.
•
Közönséges hálózati protokollon keresztül kommunikáljon.
Az elkészült program a fenti kritériumoknak teljesen eleget tesz. Egyszerűsége folytán annyira nincs különösebb hardware-igénye, hogy akár notebookra is telepíthető, ráadásul semmilyen másolásvédelmet sem tartalmaz, így akárhány gépre feltehető. Mint többször kiemeltük, a Nemo3D template (minta) alapú feliratozó. Az elkészített template-eket a NemoPlay-ben töltjük meg egyedi tartalommal, és vezérelhetjük a lejátszást. 1. File-műveletek A Nemo3D-nek is van egyedi file-formátuma, amibe az adatokat elmenti, a NemoPlay-nek is van. Ennek kiterjesztése .npl, bár valójában közönséges xml file. Ebben a file-ban a kész feliratok valamennyi adata elmenthető. A NemoPlay fájl menüjének valamennyi pontja az .npl file-ok kezelésére vonatkozik, részletes magyarázatok alighanem felesleges.
Egyedi csak a New menüpontban található. Ebben – mielőtt létrehoznánk az új file-t – előbb meg kell keresnünk és meg kell adnunk azt a Page collectiont (.pco), melynek template-jeit használjuk fel majd az új file-ban.
74
A Toolbar baloldalán is a file-műveletek érhetők el az ikonokra történő kattintással. Egy kivetellel:
•
Reload (töltsd újra) funkció.
Amennyiben a NemoPlay futtatása közben a Nemo3D-ben megváltoztatjuk a Page Collection és a változtatásokat el is mentjük, a NemoPlayben is újra kell töltenünk ezt a file-t, hogy az újdonságok itt is elérhetők legyenek. 2. Feliratsor készítése Amint létrehoztunk egy új npl file-t, elkezdhetjük új feliratok létrehozását. Minden egyes felirat egyegy sort foglal el a lejátszóban.
Nem meglepő, hogy a Toolbar eme két gombja közül a baloldalival új feliratsort készíthetünk, a jobboldalival meg egy meglévőt törölhetünk ki. De a szokásos Cut, Copy, Paste (Kivág, Másol, Beilleszt) menüpontok, illetve Toolbar ikonok is az egyes feliratosokkal végrehajtandó műveletet jelölnek. Hozzunk most létre egy új sort:
Az ilyen, sorszámozott (jelen esetben 1-es, mert ez az első sor) panel jelképez egy kész feliratot. Azt, hogy melyiket, a sorszámtól jobbra lévő, lenyitható listából választhatjuk ki. Itt ugyanis megtalálható a megadott Page Collection valamennyi Page-ének és Actionjének neve: Itt kiválaszthatjuk, hogy melyik Template lesz az új felirat alapja. Amennyiben a Template tartalmaz animált paramétert, akkor az összes animáció alapján számított teljes idő – az animáció hossza - jelenik meg rögtön a Template nevének kiválasztását követően attól közvetlenül jobbra lévő szöveges mezőben:
A fenti képen ez az érték nulla, azaz nincs animáció. Nullának jelezné egyébként a program akkor is, ha ticker lenne a template-en, annak lefuttatása ugyanis nem igényel keyframe animációt, és időbeni hossza nemcsak sebességétől, hanem tartalmától is függ.
75
A Template (Page vagy Action) neve alatt az operátor saját munkáját segítő megjegyzést írhat be: pl. a vendég neve:
Amennyiben a Template-nek Importja is van, annak megadására szolgál az animáció hosszát jelző, illetve a Megjegyzést tartalmazó szövegmezőtől jobbra lévő két szövegmező. Ez persze azt is feltételezi, hogy ez a két Import szöveges adatot tartalmaz, numerikus adat bevitele másképp történik. Tekintettel arra, hogy a leggyakoribb Import adat szöveg, az első két szöveges Import beviteléhez szolgál ez a két szövegmező. Egy kétsoros, alsó harmados névfelirathoz ez bőven elegendő, márpedig annál közönségesebb felirat nincs.
Ha nincs két szöveges adatot igénylő Importja az adott Template-nek, akkor azt a szöveges mezők színe is jelzi. „Aktív” szövegmező világos, inaktív, azaz szükségtelen sötétszürke színű. Miután kitöltöttünk egy feliratsort, már le is játszhatjuk, feltéve, ha egy NemoEngine-nel megfelelően állítottuk be a kommunikációt.
76
3. Kommunikáció A NemoPlay és a NemoEngine számítógépes hálózaton keresztül kommunikálnak egymással, még akkor is, ha egyazon gépre vannak telepítve. Ehhez mindkét programban be kell állítani az IP címeket, ha külön gépen vannak, ha ugyanazon a gépen, akkor elég a NemoPlayben. A Tools menü Network Setup pontja segít ebben.
A NemoPlay négy „csatornán” (Channel1 – Channel4) négy különböző NemoEngine-t tud vezérelni, plusz egy ötödiket, Preview csatornaként. A Preview csatorna voltaképpen semmi másban nem különbözik a többitől, csak annyiban, hogy külön gombra kattintva lehet lejátszani rajta, és nem kell emiatt külön csatornát váltani. A „normál” négy csatorna közül mindig az játszik le, amelyik gomb világít:
77
A csatornák IP címének beírását követően a Test gombra kattintva ellenőrizhetjük, él-e az a csatorna, azaz az IP-címe. Ha nem külön gépről futtatjuk a NemoPlay-t, akkor a 127.0.01 IPcímet használjuk (localhost). Ha a megadott IP-cím létezik a hálózaton és elérhető (természetesen a localhost mindig elérhető), a Test gomb piros lesz, ellenkező esetben marad sötétszürke. Az OK gomb lenyomásával fogadjuk el a beállításokat. Ilyenkor a program minden csatorna beállítását még egyszer ellenőrzi. A beállításokat a program elmenti, de ilyenkor újra is kell indítani a programot, ha az új beállításokat érvényesíteni is akarjuk. Ezzel a NemoPlay beállítása be is fejeződött. A NemoEngine – mint azt korábban láttuk – a Nemo3D része, aktiválni a Tools menüben kell, (runtime mode). Előtte azonban ott sem szabad megfeledkezni arról, hogy ugyanazt a Page Collectiont betöltsük, amivel a NemoPlayben is dolgoztunk. Enélkül – ez nyilvánvaló – nem is működhet a kapcsolat. Ha több NemoEngine-t használunk, azaz több csatornát, mindegyiken be kell tölteni a megfelelő Page Collectiont. 4. Lejátszás A megfelelő előkészítés után már készen is állunk a feliratok lejátszására. Erre az alábbi – már a Nemo3D-ből ismert – gombok állnak rendelkezésre:
78
A felső gomb a kiválasztott feliratsort játssza le (ez lehet Page vagy Action is), az alatti lévő “Stop” gomb szintén a kiválasztott sorra vonatkozik, azt úsztatja le a képről, a CLS meg mindent, ami éppen “él” a képen, leveszi fix hosszúságú átúszással. Normális használatra ne alkalmazzuk, ez inkább vészfunkció szerepet lát el. “Tervezett” leúsztatáshoz inkább definiáljunk egy megfelelő Actiont. Az alsó két, kisebb és színben is eltérő gomb a Preview csatornához tartozik – ha van ilyen. A kiválasztott sort azon a csatornán játssza le, illetve törli a Preview-ként megadott NemoEngine-en a képet. A lejátszandó feliratsort persze ki is kell választani. Ehhez a bal egérgombbal kattintsunk a sor elején lévő sorszámra. Ekkor a teljes feliratsor körül vastag sárga keret jelenik meg, innen tudhatjuk, hogy a kiválasztás sikeres volt.
Az eddigi esetben csak szöveges Importunk volt, abból sem több kettőnél. Ha kettőnél több van, vagy ha nem csak szöveges, hanem numerikus adatot igénylú Importja van egy Page-nek vagy Action-nek, be kell hívni az Import Setup Panelt: 5. Import Setup Panel Ehhez a feliratosor sorszámára a jobb egérgombbal kattintsunk:
Az Import Setup Panel valamennyi import adatait tartalmazza, azt a két szövegest is, amit behívása nélkül is megadhatunk. További részletes segítséget is nyújt az adatok megadásához. “Megmondja” az Import nevét (ez általában a Page nevéből és az Import sorszámából áll össze, hacsak nem a Nemo3D-ben megváltoztattuk. Alatta láthatjuk az Objektum nevét, melynek tulajdonságára létrehozott Keyframe adatát kívánjuk felülírni (a fenti képen ez Name és Info). Ezalatt a tulajdonság neve, és a Keyframe ideje látható:
79
Név@Idő formátumban megadva. A fenti képen ez Text (azaz Text típusú objektum Text tulajdonsága, ami maga a kiírandó szöveg), illetve a Name objektum esetében a TypeWriter tulajdonság is kapott egy importot. Az időpont végig a 0, legtöbbször mindig az animáció elején adjuk meg azt az adatot, amivel aztán az animáció dolgozni fog. De ez egyáltalán nem kötelező. Ha pl. animált oszlopdiagrammot akarunk készíteni, az egyes oszlopok méretének kezdeti és végállapotát is megadhatjuk importként. Ehhez persze két Keyframe-et is létre kell hoznunk, de a két Keyframe adatának Importként történő változtatásával tetszőlegesen módosíthatjuk az animációt. Az Import típusának megfelelően a NemoPlay mindig a megfelelő kezelőt kínálja fel: szöveges Importhoz többsoros szövegmezőt, numerikushoz numerikusat. Amennyiben listából választható tulajdonság az Import célpontja, akkor a jól ismert, lenyitható lista elemei közül történő választással egyszerűen megadhatjuk a kívánt adatot. Ha adatbázisból történő kiolvasással jön létre a megadni kívánt adat, azt is többsoros szövegmezővel állíthatjuk be. Ebben az esetben segítségképpen a program jelzi, melyik, a Nemo3D-ben beállított connectiont (kapcsolatot) használjuk az adatbázisból történő kiolvasásra, a többsoros szövegmezőbe meg magát az SQL lekérdezést gépelhetjük be, ha az feliratról feliratra változik. Az SQL-en kívül lehetőség van arra is, hogy ha a lekérdezés eredménye több mezőből áll, megadhatjuk, mivel válasszuk el a mezőket. Ilyen eset lehet például, ha egy nevet – mint az igen gyakran előfordul, az adatbázis vezeték- és keresztnévre bontva, külön mezőben tárol. Ha az SQL végére, „|” -val (függőleges vonal) elválasztva beírjuk a mezőket elválasztó szöveget, pl. SELECT Vnev, Knev FROM Jatekosok WHERE ID=2|, A mezők között vessző jelenik majd meg. Hasonló módon az is megadható, maximum hány rekordból olvassa ki az adatokat, mégpedig egy újabb függőleges vonal segítségével: SELECT Vnev, Knev FROM Jatekosok WHERE ID<100|,|10 Ebben az esetben maximum tíz rekordot fog beolvasni, és több mező esetén azokat vesszővel választja el. Mint a Nemo3D leírásában az Importtokkal kapcsolatban már említést nyert, lehetőség van hosszú SQL-stringek begépelése helyett egyszerűsített megoldásra is. Ebben az esetben a Nemo3D-ben adjuk meg magát az SQL-t, a változó paramétereket idézőjelbe téve: SELECT Vnev, Knev FROM Jatekosok WHERE ID=”2” Ekkor itt, a NemoPlay-ben a kettő helyett más értéket állíthatunk be, ha csak magát a számot írjuk be, a végén felkiáltójellel (ez jelzi, hogy nem „normális” SQL-ről van szó): 3! Ha több változó paraméter van, akkor azokat vesszővel választjuk el, de a végéről akkor sem maradhat le a felkiáltójel: 3,4,5!
80
Ebben az egyszerűsített formában is lehetőség van a mezőket elválasztó szöveg, illetve a visszaolvasott rekordok maximális számának beállítására: 3!|,|5 Ha végeztünk valamennyi Import megadásával, kattintsunk a sorszámra ismét a jobb egérgombbal, és a Setup Panel eltűnik, de persze a megadott adatok elmentésre kerülnek, a feliratsor bármikor lejátszható. 5. Feliratsorok szerkesztése és mozgatása A feliratsorok szerkesztése a teljesen közönséges Cut, Copy, Paste (kivág, Másol, Beilleszt) funkciókkal történik. Lehetőség van nem csak egy, hanem több sor egyszerre történő szerkesztésére illetve mozgatására. A szerkesztendő sort – mint már láttuk – a sor elején lévő sorszámra a bal egérgombbal történő kattintással választjuk ki, ha azonban egy újabb sort, és immár a Shift billentyű egyidejű lenyomásával választunk ki, a két sor között az összes többit is kiválasztja, így ezek együtt törölhetők, vagy mozgathatók lefelé vagy felfelé a listában. Az elsőként kiválasztott sor mindig sárga keretet kap, a hozzáválasztott többi sor viszont sötétebb, aranysárgát:
81
7. Action Panel Amennyiben kiválasztunk egy feliratosort, mely egy Page és nem egy Action adatait tartalmazza, és azt lejátsszuk, a folytatáshoz automatikusan újabb segítséget kapunk a programtól:
Ebben az esetben a Page3 lejátszásával egyidőben a lejátszást vezérlő gombok alatti panelben megjelent két gomb, Action5 és Action6 felirattal. Ez a két Action a példában szereplő Page3-hoz tartozik, és egyiknek sincs Importja. Ha lenne, nem jelenne meg gomb hozzá, az Importtal rendelkező Action lejátszásához egy külön feliratsort kell felhasználnunk. Felmerül a kérdés, miért jók ezek a gombok Importmentes Actionökhöz. Tegyük fel, hogy Page3 egy névfelirat, egy elképzelt műsor vendégének megnevezéséhez készített Template. Lejátszásakor a felirat elemei balról, jobbról vagy bárhonnan berepülnek a képre, majd a vendég neve a TypeWriter (írógép, azaz betűnkénti kiírás) effekttel jelenik meg. Az Action5 egy másik Template, a Page3-hoz tartozik, és semmi mást nem csinál, mint az éppen kint lévő feliratot leúsztatja a képről, vagy bármi más módon, de “leanimálja”. Minek kellene ehhez minden egyes névfelirat esetén külön feliratsort csinálni? Nem sokkal egyszerűbb és kényelmesebb, ha az Action panelben megjelenik egy gomb, és csak arra kell a bal gombbal kattintani? Dehogynem. Persze sok más esetben is nagyon hasznos, hogy automatikusan “gombot” kapunk egyszerűbb, külön adatot nem igénylő animációk lejátszásához. Ha pl. a jobb felső sarokba egy digitális stopperórát teszünk, annak indításához, megállításához és a képről történő levételéhez egy-egy egyszerű Action, illetve az Action panelben egy-egy gomb tartozik.
82
Ha az Action Panelben az adott Template képről történő levételéhez tartozó Action gombját nyomjuk meg, az animáció végén általában a Page Objektumjai megszűnnek létezni (GlobalFade paraméter negatív értéket kap). Ebben az esetben ehhez a Page-hez tartozó Actionök gombjaira nincs tovább szükség, így azok maguktól el is tűnnek. 5. Egyéb Amiről még nem esett szó: a Settings menü pontjai:
A TimeInFrames (idő képkockában számolva) bekapcsolásával a szokásos timekódban megadott időadatok helyett frame-számláló jelenik meg. Az AutoMoveToNext (magadtól menj a következő sorra) bekapcsolt állapotban minden egyes feliratsor lejátszása után automatikusan a következő feliratsort választja ki. Így ha egy műsor feliratai szép egymás után következnek – szerencsés eset – elvben elegendő csak a lejátszó gombra kattintani. ToUpper (nagybetűre) a begépelt szövegeket csupa nagybetűre konvertálja. Elég gyakori igény, hogy egy arculat adott fontja csupa nagybetűvel jelenjen meg. Be lehet ugyan kapcsolni a Caps Lock-ot és úgy gépelni, de kényelmetlen és sokkal átláthatatlanabb. Ennek megoldására szolgál ez a beállítás.
83