06. Tekst w przestrzeni trójwymiarowej. Podstawy

Transkrypt

06. Tekst w przestrzeni trójwymiarowej. Podstawy
Temat 6: Tekst w przestrzeni trójwymiarowej. Podstawy tworzenia animacji. Instrukcja warunkowa if.
Program pozwala umieszczać na scenie nie tylko bryły, czy figury płaskie, ale też tekst. Polecenie
tworzące tekst ma postać:
text < ttf ”plik.ttf”, ”tekst”, głębokość, offset >
Głębokość jest liczbą rzeczywistą, zaś offset wynosi na ogół 0. Pierwsza litera znajduje się w początku
układu współrzędnych. Tekst możemy również skalować, obracać i przesuwać. Sprawdźmy w praktyce
różne parametry polecenia.
Ćwiczenie 041
Wpisz kod i zrenderuj scenę:
Przy dużej wielkości głębokości uzyskamy wrażenie nieskończoności:
Dla głębokości zerowej uzyskamy tekst płaski:
Nieoczekiwany efekt uzyskamy dla ujemnej wartości głębokości:
Grafika 3D – program POV-Ray
- 29 -
Prześledźmy teraz, co daje zmiana wartości offsetu. Dla wartości dodatnich tekst będzie rozrzedzony,
a kolejne litery wznosić się będą schodkowo do góry:
Dla ujemnych wartości offsetu tekst będzie ściśnięty, a litery zstępować będą schodkowo w dół:
Ćwiczenie 042
W kodzie poprzedniego ćwiczenia zmień rodzaj czcionki, a zamiast wyrazu „Tekst” wpisz wyraz
„Złość”. Wyświetlone zostaną tylko dwie litery – polskie znaki zostaną zignorowane:
W pomocy programu możemy przeczytać, że dowolny znak kodowany w utf-8 uzyskamy wpisując po
znaku „\” odpowiedni kod ASCII w notacji szesnastkowej (po literze c). Kody te łatwo znaleźć
w Internecie. W notacji przyjętej w POV-Ray są to:
Ą
u0104
Ć
u0106
Ę
u0118
Ł
u0141
Ń
u0143
Ó
u00D3
Ś
u015A
Ź
u0179
Ż
u017B
ą
u0105
ć
u0107
ę
u0119
ł
u0142
ń
u0144
ó
u00F3
ś
u015B
ź
u017A
ż
u017C
Po zastąpieniu polskich liter nie otrzymamy niestety jeszcze zadowalającego rezultatu:
Musimy jeszcze przed wstawieniem tekstu zadeklarować stronę kodową:
Grafika 3D – program POV-Ray
- 30 -
Ćwiczenie 043
Utwórz scenę zbliżoną do poniższej ilustracji:
Mamy już wystarczająco dużą wiedzę na temat tworzenia obiektów i scen aby utworzyć prostą
animację. Zacznijmy od budowy sceny zawierającej koło:
Ćwiczenie 044
Utwórz scenę:
Grafika 3D – program POV-Ray
- 31 -
Zapis rotate z*kąt oznacza obrót wokół osi z o podany kąt.
Użyjemy parametru clock. Parametr ten w trakcie renderingu klatek animacji wzrasta od zera do
jedności w tylu krokach, ile jest klatek. Zamiast rotate
z*0 wpiszemy zatem
rotate z*clock*360.
W linii komend wpisujemy +kff36 +ft, gdzie +kff36 oznacza polecenie utworzenia 36 klatek, a +ft
oznacza format TGA graficznych plików wynikowych.
Otrzymane ponumerowane kolejno pliki umieszczamy w osobnym folderze:
Do tego samego foldera kopiujemy plik pjBmp2Avi.exe. Po jego uruchomieniu
ustalamy typ plików (TGA), nazwę pliku wyjściowego (film.avi) i liczbę klatek na
sekundę (25). Po kliknięciu przycisku [Create] z listy rozwijalnej wybieramy
parametry kompresji i klikamy [OK]. Klip filmowy zostanie utworzony w naszym folderze.
Grafika 3D – program POV-Ray
- 32 -
Ćwiczenie 045
W poprzednim ćwiczeniu animowany obiekt przekształcany był przez obrót. Teraz wykonamy animację
w oparciu o przesunięcie. Animacja przedstawiać będzie strzałę zmierzającą w kierunku tarczy. Na
początek projektujemy scenę:
Współrzędna x czubka grotu strzały ma wartość 10, zaś dla tylnej ściany tarczy jest to -10. Aby strzała
trafiła w środek tarczy musi być przesunięta o -20 wzdłuż osi x. Zmieniamy zatem ostatnią linijkę kodu:
W linii komend wpisujemy +kff100 +ft, gdzie +kff100 oznacza polecenie utworzenia 100 klatek, a +ft
oznacza format TGA graficznych plików wynikowych.
Uruchamiamy rendering i generujemy 100 klatek filmu. Gotowy klip otrzymujemy wykonując operacje
analogiczne, jak w poprzednim ćwiczeniu.
Grafika 3D – program POV-Ray
- 33 -
Ćwiczenie 046
Wygenerowana przez nas animacja ma jedną wadę – po wbiciu strzały w tarczy animacja kończy się i nie
widać efektu trafienia (zatrzymania). Postaramy się to zmienić. Strzała będzie się przesuwać w kierunku
tarczy przez 0,8 czasu trwania animacji, a przez pozostałe 0,2 czasu będzie nieruchoma.
Jeśli strzała pokona dystans 20 jednostek przez 0,8 czasu, to przez cały czas pokonałaby 25 jednostek.
W miejsce ostatniej linii kodu wpisujemy zatem:
Zapis użytej instrukcji warunkowej oznacza:
jeżeli minęło co najwyżej 0,8 czasu to
zadeklaruj przesunięcie -25*czas
w przeciwnym razie
zadeklaruj przesunięcie -20
koniec
Wygeneruj klatki animacji i cały film przy ustawieniach jak w poprzednim ćwiczeniu. Efekt będzie dużo
lepszy.
Zapamiętaj!
Instrukcja warunkowa if w programie POV-Ray ma strukturę:
#if (warunek)
lista poleceń
#else
lista poleceń
#end
Polecenie #declare zmienna = wartość; pozwala zadeklarować różne wartości parametrów
w zależności od warunków.
Grafika 3D – program POV-Ray
- 34 -
Ćwiczenie 047
W ćwiczeniu 040 wygenerowaliśmy przezroczysty model sześcianu. Utworzymy animację w oparciu o
ten model.
Utwórz nowy plik i przekopiuj do niego kod utworzony w ćwiczeniu 040. Zmień kod tak, aby otrzymać
deklarację obiektu szescian i jego wywołanie:
Jak widać tym razem w kolejnych krokach animacji sześcian będzie obracany wokół każdej osi.
Utwórz animację generując uprzednio 72 klatki.
Grafika 3D – program POV-Ray
- 35 -