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.

Oznaczone jako → 
Share →