8.5 Animace PovRAY nemá nástroje na vytvoření ucelené animace, umí pouze pomocí proměnné clock vytvořit sekvenci po sobě jdoucích snímků, které je nutné do výsledné animace spojit v dalším programu (MS Gif Animator, GifWcx plugin pro Total Commander, atd.) Pro řízení animace využijeme externí.ini soubor, kterým nahradíme obvyklý quikers.ini, který je volán automaticky. Ukázkový [800x600, AAF,anim] Width=800 Height=600 Final Clock=1 //hlavicka - obsahuje libovolné indentifikacni udaje, nepovina //sirka generovaných snimku v pixelech //vyska generovanych snimků v pixelech //vyhlazovani hran - on x off - zapnute zlepsuje vzhled objektu, ale zvysuje narocnost //cislo prvniho snimku //cislo posledniho snimku //pocatecni hodnota promene clok //koncova hodnota promene clok 8.5.1 Animace jedním směrem camera{location < 5, 5, 10 > look at < 5.0, 1.0, 0.0 > light source{< 30, 15, 30 > color rgb 1 light source{< 50, 15, 30 > color rgb.7 shadowless background{color Blue plane{y, -1 pigment{color rgb Green Final Frame=10 Final Clock=1 pigment{checker White Black Dlouhá, Červenka 2013 82 VŠB-TU Ostrava
8.5. ANIMACE 8.5.2 Animace s návratem - #if-#else Rozdělíme animaci na dvě části podmínkou #if-#else, při tomto způsobu členění animace na víc částí dochází k nepřehlednému zanořování podmínek. camera{location < 5, 5, 10 > look at < 5.0, 1.0, 0.0 > light source{< 30, 15, 30 > color rgb 1 light source{< 50, 15, 30 > color rgb.7 shadowless background{color Blue plane{y, -1 pigment{color rgb Green #if ( clock <= 1 ) pigment{checker White Black #else #declare Elseclock = clock-1; pigment{checker White Black rotate Elseclock*360*z translate 2*pi*x translate -2*pi*Elseclock*x #end Dlouhá, Červenka 2013 83 VŠB-TU Ostrava
8.5.3 Animace s návratem - framenumber Rozdělíme animaci na dvě části pomocí proměné framenumber, při tomto způsobu členění animace na víc částí je potřeba na začátku přesně určit počet snímků nutných pro každou fázi, další úpravy mohou být velmi nepřehledné. camera{location < 5, 5, 10 > look at < 5.0, 1.0, 0.0 > light source{< 30, 15, 30 > color rgb 1 light source{< 50, 15, 30 > color rgb.7 shadowless background{color Blue plane{y, -1 pigment{color rgb Green #switch (frame number) #local from frame=1; #local to frame=10; #local from frame2=11; #local to frame2=20; #range (from frame,to frame) pigment{checker White Black #break #range (from frame2,to frame2) #declare Elseclock = clock-1; pigment{checker White Black rotate Elseclock*360*z translate 2*pi*x translate -2*pi*Elseclock*x #end Dlouhá, Červenka 2013 84 VŠB-TU Ostrava
8.5. ANIMACE 8.5.4 Animace pohybu řízeného křivkou Pohyb objektu je řízen dvourozměrnou spline křivkou (definovaná ve standartním externím souboru transforms.inc ). #include transforms.inc camera{location < 5, 5, 25 > look at < 10.0, 1.0, 0.0 > light source{< 30, 15, 30 > color rgb 1 light source{< 50, 15, 30 > color rgb.7 shadowless background{color Blue plane{y, -1 pigment{color rgb Green #declare valec = pigment{checker White Black #declare valec draha= spline{ 0 < 0, 0, 0 > 0.1 < 1, 10, 0 > 0.2 < 2, 0, 0 > 0.3 < 3, 8, 0 > 0.4 < 4, 4, 0 > 0.5 < 5, 0, 0 > 0.6 < 6, 7, 0 > 0.7 < 7, 3, 0 > 0.8 < 8, 0, 0 > 0.9 < 9, 9, 0 > 1 < 10, 4, 0 > 1.5 < 10, 4, 0 > 1.6 < 11, 0, 0 > 1.7 < 13, 4, 0 > 1.8 < 15, 9, 0 > 1.9 < 17, 4, 0 > 2 < 18, 0, 0 > object{valec Spline Trans( valec draha, clock x,0,0) Dlouhá, Červenka 2013 85 VŠB-TU Ostrava
8.5.5 Úlohy k procvičení 1. Koule Vytvořte animaci, ve které se budou jednotlivé koule otáčet ve směru souřadných os. 2. Blob Vytvořte animaci, ve které se budou plynule měnit síly jednotlivých komponent implicitní plochy. 3. Schodiště Vytvořte animaci, ve které budou postupně přibývat stupně točitého schodiště. 4. Dáma Vytvořte animaci alespoň části partie dámy, kde pohnete s několika figurami a jednu vyhodíte. 5. Auto Vytvořte animaci reálného pohybu auta, kde několikrát zatočíte, zastavíte na přechodu atd. Zkuste nasvítit scénu reflektory auta. Dlouhá, Červenka 2013 86 VŠB-TU Ostrava