Zabawy z povray
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ć.
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.
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 ;]
Komentarze do notki 'Zabawy z povray'
Dodaj komentarz:
Zastrzegam sobie prawo do usuwania komentarzy nie odnoszących się do treści wpisu.


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 maja 2007 07:21:50Właśnie, to jest problem. Czy pokazać sam obiekt w dużym powiększeniu, czy też obiekt z otoczeniem.
2 maja 2007 10:06:20Taa a nad latarnią pracę trwają :-)
W pzrypadku budzika - bezapelacyjnie zbliżyc, tak żeby budzik zajmował 50% kadru. Plus jakeś refleksy na powierzchni stołu.
2 maja 2007 16:01:56No no. Powinieneś tworzyć scenerie do gier :)
4 maja 2007 23:25:37