| AMBER Archive (2002)Subject: Re: How to make mpeg files from amber trajectories (fwd)
From: Jake Isaacs (rjisaa0_at_uky.edu)Date: Tue Aug 27 2002 - 08:48:24 CDT
 
 
 
 
If you use VMD for viewing trajectories (which I prefer to Moilview) 
here is what I've done in the past:
 
 1.  Once the trajectory is how you want it (specific atoms/residues, 
rotation removed, colored, rendered, etc.) run this "make_frames.tcl"
 script in VMD:
 
 for { set i 0 } { $i < 5001 } { set i [ expr $i + 1 ] } {
if { $i < 1 } {
 set nm "0000"
 } elseif { $i < 10 } {
 set nm "000$i"
 } elseif { $i < 100 } {
 set nm "00$i"
 } elseif { $i < 1000 } {
 set nm "0$i"
 } else {
 set nm $i
 }
 animate goto $i
 render Raster3D $nm.r3d
 }
 
 You will need to edit the number of frames and the skip increment, if 
you want.  This will create a xxxx.r3d file for each frame.
 
 2.  I like to change the lighting, so I use this "fix_r3d.pl" perl 
script:
 
 for ($i = 0; $i <= 5001; $i++) {
if ( $i < 1 ) {$nm = "0000"}
 elsif ( $i < 10 ) {$nm = "000$i"}
 elsif ( $i < 100 ) {$nm = "00$i"}
 elsif ( $i < 1000 ) {$nm = "0$i"}
 else {$nm = $i}
 open(IN,"$nm.r3d") || die "cannot open $nm.r3d file!\n";
 open(OUT,">f$nm.r3d") || die "cannot write f$nm.r3d file!\n";
 while (<IN>) {
 $_ =~ s/1.00           secondary light
 contribution/0.00           secondary light contribution/;
 $_ =~ s/0.10           ambient light
 contribution/0.40           ambient light contribution/;
 print OUT;
 }
 }
 
 This will give you a "fixed" fxxxx.r3d file for each frame.
 3.  I liked the results using mpeg_encode (can probably get from sgi 
website) over dmconvert, so you'll need to create a ppm file for each
 frame.  To do this I use the programs render, fromtiff, and toppm.  I
 use this "make_script.pl" perl script to make a composite executable:
 
 open(OUT,">make_ppm.com") || die "cannot open output file!\n";
for ($i=0; $i<5001; $i++) {
 if ( $i < 1 ) {$nm = "0000"}
 elsif ( $i < 10 ) {$nm = "000$i"}
 elsif ( $i < 100 ) {$nm = "00$i"}
 elsif ( $i < 1000 ) {$nm = "0$i"}
 else {$nm = $i}
 print OUT "render < f$nm.r3d -tiff $nm.tif\nfromtiff $nm.tif
 $nm.rgb\ntoppm $nm.rgb $nm.ppm\nrm $nm.r3d f$nm.r3d $nm.tif $nm.rgb\n";
 }
 
 You can remove the rm line if you have plenty of disk space and want to 
keep all the files.  This will leave you with an xxxx.ppm file for each
 frame.
 
 4.  I use mpeg_encode with this "mpeg.input" parameter file:
 PATTERN I
OUTPUT movie-long.mpg
 INPUT_DIR .
 INPUT
 *.ppm [0000-5000]
 END_INPUT
 BASE_FILE_FORMAT PPM
 YUV_SIZE        160x80
 INPUT_CONVERT cat *
 GOP_SIZE 30
 SLICES_PER_FRAME 1
 PIXEL HALF
 RANGE 10
 PSEARCH_ALG LOGARITHMIC
 BSEARCH_ALG CROSS2
 IQSCALE 8
 PQSCALE 10
 BQSCALE 25
 REFERENCE_FRAME DECODED
 
 Which leaves you with a rather large mpeg file.  This file seems to 
always work on sgi and mac, but with pc's it works only sometimes,
 depending on OS and what program you use to view.
 
 I should stress that this is a highly empirically derived process and 
there are probably more elegant ways of doing it.  There are plenty of
 parameters that I don't understand, especially in the mpeg.input file.
 That said, it works for me and produces nice looking movies.  If anyone
 has suggestions for improvements, I'd love to hear them.
 
 
 
 |