set d [open head.pyg r]
set t [read $d]
close $d
for {set i 0} {$i<50} {incr i 2} {
set f [open rn.pyg w]
puts $f $t
puts $f "Rotate ( $i, 0,0,1)"
puts $f "Rotate ( 0, 0, 0, 1 )"
puts $f "Input (\"teapot.pyg\")"
puts $f "PopAttributes ()"
puts $f ""
puts $f "Render (\"camera\")";
puts $f ""
close $f
catch {exec gelato -iv -o im$i.tiff rn.pyg}
puts "finished i=$i";
}That's 25 frames, which can be made into an animation (can be added to the tcl script) by using ffmpeg (I used 'ffmpeg -s 1920x1080 -i imageout%d.jpg -r 25 -s 1920x1080 -b 50000 -f mpeg2video -y ani.mpg', and played it back using (heavy) HW accelerated PureVideo on a 1080 HD compatible screen).
for {set i 0} {$i < 50} {incr i 2} {
exec tifftopnm T/im$i.tiff 2&>/dev/null | cjpeg -q 95 -outfile imageout[format "%d"; [expr int($i/2)]].jpg
}In this case I used a 1920x1080 (HD) resolution, which made this 1 second 'animation' rendered in about 30 secs IIRC. Quite doable. Oh, I added the envmap on the teapot myself; let me see if I will get requests to put all the files together.Perfect TCL use!TV (May 1 '08) Recently I did a similar 'trick,' but then with the caustic example from the most recent Gelato distribution, where I changed the light direction and rotated the whole scene various directions and then made a short HD movie of the resulting frames, transcoding them over h246 (for motion estimation), one of the scripts I used was:
set d [open gather_h1a.pyg r]
set th2a [read $d]
close $d
set d [open gather_h1b.pyg r]
set th2b [read $d]
close $d
set d [open gather_h2.pyg r]
set th2 [read $d]
close $d
set d [open gather_b.pyg r]
set t2 [read $d]
close $d
set d [open shoot_h.pyg r]
set u [read $d]
close $d
set d [open shoot_b.pyg r]
set u2 [read $d]
close $d
set j 111
set f [open rn2.pyg w]
puts $f $u
# puts $f "Rotate ( [expr 130+$i], 1, 0, 0 )"
puts $f "Rotate ( [expr 170], 1, 0, 0 )"
puts $f $u2
close $f
if { $j == 0 } { catch "exec gelato rn2.pyg" }
puts -nonewline "finished shooting j=$j ";
flush stdout
for { set i 111 } { $i<200 } { incr i 1 } {
set f [open rn.pyg w]
puts $f $th2a
puts $f "Rotate ( [expr $i/2.0], 0, 0, 1 )"
puts $f $th2b
puts $f "Output (\"im[ format "%03d" $j].tiff\", \"tiff\", \"rgb\", \"perspShape\" )"
incr j
puts $f $th2
# puts $f "Rotate ( [expr 130+$i], 1, 0, 0 )"
puts $f "Rotate ( [expr 170], 1, 0, 0 )"
puts $f $t2
close $f
# catch "exec gelato -iv -ivpage 1 rn.pyg"
catch "exec gelato rn.pyg"
puts "finished i=$i";
flush stdout
}The header files contain the relevant parts of the original Gelato graphics file, which of course is a bit clumsy, but it works fine....I didn't make a tcl script to define parameter progressions for the whole animation, which may be a good idea.The result is a 1920x1080 25fps mp4 file, to which I added an audio track with Cinelerra (Open Source Video Edit software), and in fact I could put the rest of the production process in a tcl script with the right ffmpeg calls, but didn't yet. Nicer would be a good Tk UI with parameter settings, and menus and explanations.The above script starts rendering at frame 111 from the 200, so is a partial render. That is because for some reason the computer I used to make all these big frames with (a power soaking 3GHz Pentium D with a bulky NVidia graphics card) had a problem I think with the monitor power off, and in fact I have suspected the combined tcl/gelato memory householding under fedora 8/64, because it had frozen at frame 110, which was probably after about an hour, I don't recall.A frame from a down-converted 720 movie file:http://www.theover.org/Diary/Ldi46/geltrac4.mp4If somebody is interested here is a jpg converted original frame from the sequence ( http://www.theover.org/Diary/Ldi46/im066.jpg( 84 MB , 1920x1080 , 25 fps , mpeg4 video/sound ) http://www.theover.org/Diary/Ldi46/geltrac4_720.mp4
( 8.4 MB , 1280x720 , downconverted)
).TV June 2008 NVidia has in their wisdom decided to make Gelato Pro freely downloadable, which is great to play with like on this page.TV (Dec 1 ' 08) I've done a new animation with a bit different tcl main animation script approach, main and utility scripts and examples frames and short animation movie segments are here [2] . Impression a a resulting frame:See also DataViewer (? This a demo of Final Film Frame Rendering, not 3D data viewing)

