Tworzenie grafiki trójwymiarowej na Linuksie jest fascynującym zajęciem. Dysponujemy znakomitymi narzędziami do renderowania i nieco trudnymi w obsłudze programami do modelowania. Najtrudniej jednak o narzędzia do animacji. Szczerze mówiąc, prawie ich nie ma. Uzytkownik musi sam tworzyć programy, które — korzystająć np. z libribout — stworzą odpowiednie klatki animacji. Ktoś, kto nie ma ochoty korzystać z Blendera, ma bardzo ograniczone pole manewru.
Właśnie po to, aby pomóc wszystkim użytkownikom Moonlight Ateliera, AC3D czy Mopsa, powstał screenhack. Jest to niewielki program, pozwalający ożywić statyczne klatki w płynny obraz. Poniżej postaram się przedstawić jak można stworzyć film w formacie MPEG korzystając jedynie z darmowych narzędzi.
[Uwaga: jeśli czytając dalsze akapity zaczniecie się zastanawiać o czym bredzę, odwiedźcie najpierw www.renderman.org, nastepnie zainstalujcie u siebie BMRT (www.bmrt.org) oraz jakiś program eksportujący do formatu RIB (np. Moonlight Atelier czy Mops). Przykład posłużenia się tym ostatnim mozna obejrzeć tutaj: http://www.linuxpl.org/teksty/pingwin/ping.html.]
Przede wszystkim powinniśmy stworzyć scenę. Screenhack nie obsługuje na razie(*na razie!*) deformacji obiektów, jedynie ruch, więc powinniśmy wziąć to pod uwagę tworząc scenę. Całość eksportujemy do pliku .rib. Następnie wycinamy z niego obiekty: statyczne (Props), ruchome (Actors) i (opcjonalnie) światła i zapisujemy w oddzielnych plikach .rib. Taki plik jest bezużyteczny dla BMRT, ale screenhack zmontuje je w spójną całość. W plikach tych umieszczamy fragment od „AttributeBegin” do „AttributeEnd”, a więc razem z przekształceniami i przypisaniami szaderów.
Następnie zabieramy się do najważniejszego: stworzenia pliku z definicją ruchu.
#komentarz sobie darujemy DSceneBegin #liczba klatek w animacji DNumberOfFrames 240 # definiujemy pierwsze dwa światła DLight "ambientlight" "time" [0 10.0] "intensity" [0.1] DLight "pointlight" "time" [0 10.0] "from" [500 50 0] "to" [0 0 0] "intensity" 30000
To był początek. teraz przechodzimy do najistotniejszego elementu pliku .scr, a mianowicie defincji trajektorii. W poniższym przykładzie będziemy poruszać obiektami zawartymi w plikach „8.rib” i „lights.rib”, a równocześnie skorzystamy ze stojących świateł:
DActor "RIB_file" "8.rib" "time" [0 10.0] "tag" "8" "trajectory" [300.0*sin(t*1.2566371) 0.0 -500+200*t] DActor "RIB_file" "lights.rib" "time" [0 10.0] "tag" "lights" "trajectory" [300.0*sin(t*1.2566371) 0.0 -500+200*t] DProp "RIB_file" "lights.rib" "time" [0 10.0] "position" [200.0 0 -250] DSceneEnd
Najistotniejsza jest dyrektywa „trajectory”, zawierająca trajektorię obiekttu w układzie [x,y,z], przy czym można korzystać (w niemal nieograniczony sposób) z formuł i zmiennej t. Do dyspozycji mamy m.in. funkcje trygonometryczne. Jeśli ktoś ma problemy z wizualizacją krzywych, może skorzystać z programów takich jak GNU Equation Grapher, który służy do tworzenia wykresów funkcji.
Następnie przepuszczamy wygenerowany program przez screenhacka:
screenhack naszplik.scr
(Powinniśmy otrzymać naszplik.rib). Następnie tworzymy plik opis.param, zawierający parametry potzrebne programowi kodującemu MPEG. Może on wyglądać np. tak:
PATTERN IBBPBBPBBPBBPBBP # Animacja ma zostać zapisana do pliku: OUTPUT film01.mpg BASE_FILE_FORMAT PNM # oczywiście powinniśmy mieć zainstalowany tifftopnm. rpmowcy: rpm -Uvh # netpbm-progs. Debianowcy: apt-get install netpbm-progs || # alien... Slackware'owcy: rpm2cpio netpbm-progs-9.5-5.i386.rpm ;-p INPUT_CONVERT tifftopnm * GOP_SIZE 16 SLICES_PER_FRAME 1 # katalog z klatkami: INPUT_DIR /home/users/b/bolek/usr/local/rozrywka/grafika/anim/test3/ # na wejściu pobieramy pliki .tiff o nazwach f0[numer].tiff, gdzie #[numer] to liczba z zakresu 000-239 INPUT f0*.tiff [000-239] END_INPUT PIXEL FULL RANGE 10 PSEARCH_ALG LOGARITHMIC BSEARCH_ALG CROSS2 IQSCALE 4 PQSCALE 5 BQSCALE 15 REFERENCE_FRAME DECODED BIT_RATE 1000000 BUFFER_SIZE 327680 FRAME_RATE 30
Następnie renderujemy klatki animacji:
rendrib naszplik.rib
I wreszcie sam film:
mpeg_encode opis.param
Przykładową animację (prawie 1 MB…) można znaleźć tutaj. Możemy teraz uruchomić gtv i cieszyć się rezulatem naszej pracy :).
Copyright 2001 Free Software Foundation. Tekst na licencji FDL.
Archiwalny news dodany przez użytkownika: arturs.
Kliknij tutaj by zobaczyć archiwalne komentarze.