Pomiń nawigację

krajniak.info (rozwiń)

Zabawy z povray

Wpis z dnia 2 maja 2007, 00:52:51 w kategoriach prywatne

Bawiłem się dzisiaj povray'em. W końcu czas najwyższy skończyć projekty na grafikę komputerową. Miał być jeden, są dwa, trudno. Pierwszy jaki też sobie obrałem to budzik, tu na szczęście miałem do dyspozycji własny model. Także powstała jakaś tam mniej więcej wierna replika, poza pałąkiem spinającym czasze dzwonków. Tego nadal nie wiem jak zrobić.

clock

Druga natomiast scena do zrobienia (szumnie się to nazywa projekt) to latarnia morska. Co prawda bez modelu, ale tu już dużo łatwiej się to robiło. Kilka cylindrów, różnic, sum i latarnia jak się patrzy.

Ogólnie to program jest świetny. Sceny piszę się w prostym języku, także cały czas ma się do czynienia z kodem. Nic nie trzeba przesuwać ręcznie myszką, tudzież oglądać obiektu z 4 stron, jak ma to miejsce w graficznych programach. Są jakieś nakładki które to oferują, tylko po co ;)

Najgorsze przy robieniu tych wszystkich scen to ustawienia świateł, szlag mnie po paru chwilach trafia i ciągle mi coś nie pasuje. Ta latarnia też, potrzebuje światło księżyca ;] znaczy się żeby było coś widać, a przede wszystkim żeby na wodzie był widoczny strumień światła z latarni. Także to poniżej to taki koncept całości. Scena już mi się renderuję 2 minuty, co mnie dodatkowo denerwuje.

lighthouse

Przy okazji prac na tymi rzeczami, powstał prosty skrypt do automatycznego renderingu scen. Całość sprowadza się do obserwowania czy czasami plik źródłowy nie został zapisany, jeśli tak, wykonywany jest rendering.

import gamin
import time
import os
import sys

def call(path,event):
	print "Got: %s, %s" % (path,event)
	if event == 2:
		os.spawnlp(os.P_WAIT,'render','render',os.path.basename(path))

mon = gamin.WatchMonitor()
mon.watch_file(sys.argv[1],call)
while 1:
    mon.handle_one_event()
mon.stop_watch(sys.argv[1])

I brakujący redner umieszczony gdzieś w ~/bin/

#!/bin/bash
render_scene() {
    file_name="`echo $1 | sed -e 's/\..*$//g;'`"
    time povray +A -I$file_name.pov
    if [ "`grep Error log`" ]; then
        cat log
        echo $file_name
    else


        echo "dd"
#       display $file_name.png
    fi
}

if [ "X$1" == "X" ]; then
    for i in *.pov; do
        echo "rendering: $i :: `basename $i`"
        render_scene "`basename $i`"
    done
else
    echo "rendering: $1::`basename $1`"
    render_scene "`basename $1`"
fi

Tak sobie oglądam Hall of Fame i co rusz trudno mi uwierzyć, że te zdjęcia są wygenerowane komputerowo, ot na przykład ta ulica. Wygląda jak prawdziwa ;]

Kod latarni

Tagi:
Przeczytaj poprzedni wpis eh to wystąpienie prof. Geremka lub przejdź do następnego wpoznaniu.info albo wróć do reszty wpisów

Komentarze do notki 'Zabawy z povray'

  1. Całkiem niewąski ten budzik, tylko ja bym dał w większym zbliżeniu. A latarni to już w ogóle prawie nei widać.

  2. Właśnie, to jest problem. Czy pokazać sam obiekt w dużym powiększeniu, czy też obiekt z otoczeniem.
    Taa a nad latarnią pracę trwają :-)

  3. W pzrypadku budzika - bezapelacyjnie zbliżyc, tak żeby budzik zajmował 50% kadru. Plus jakeś refleksy na powierzchni stołu.

  4. No no. Powinieneś tworzyć scenerie do gier :)

Dodaj komentarz:

Zastrzegam sobie prawo do usuwania komentarzy nie odnoszących się do treści wpisu.

Przeczytaj poprzedni wpis eh to wystąpienie prof. Geremka lub przejdź do następnego wpoznaniu.info albo wróć do reszty wpisów