timesnapper 2.74 KiB
#! /usr/bin/perl
($me = $0) =~ s'.*/'';
$res = "";
$fovy = "";
sub scanopts {
while(@ARGV) {
if($ARGV[0] =~ /^-n/) {
$nowait = shift(@ARGV);
} elsif($ARGV[0] =~ /^-res/) {
shift(@ARGV);
$res = shift(@ARGV) . " " . shift(@ARGV);
} elsif($ARGV[0] =~ /^-fov/) {
shift(@ARGV);
$fovy = shift(@ARGV);
} elsif($ARGV[0] =~ /^-asp/) {
shift(@ARGV), shift(@ARGV);
} elsif($ARGV[0] =~ /^-subcam/) {
shift(@ARGV);
@subcams = grep($_ ne "", split(/[\s,]/, shift(@ARGV)));
} else {
return;
}
}
}
&scanopts();
unless(@ARGV >= 3 && ($ARGV[1].$ARGV[2]) =~ /^\d+$/ && $ARGV[2] >= $ARGV[1]) {
print STDERR "Usage: $me [-res XSIZE YSIZE] [-fovy FOVY] [-subcam cam1,cam2,...] [ stemname starttime endtime [timestep]
Command partiview to take successive snapshots, varying datatime (\"step\")
and moving along any currently-loaded (rdata) path (\"frame\").
(If no path is loaded, uses current camera position. Try a slow spin!)
Output images are named stemname.NNNN.png unless stemname includes % sign,
in which case it's taken as a printf format string (including suffix).
Use -subcam to render for one or several subcameras (which must be
defined to partiview too, with e.g.: 'read \$RDATA/params/subcam-params'
Use as e.g., in partiview command box,
async $me wow 0.0 10.0 0.2
or async $me -subcam hp0,hp1,hp2,hp3,hp4 wow.@.%04d.tif 0 3 0.02
";
exit(1);
}
$stem = shift(@ARGV);
$min = shift(@ARGV);
$max = shift(@ARGV);
$step = ($ARGV[0] =~ /^\d+$/) ? shift(@ARGV) : 1;
$min = 1 if $min <= 0;
&scanopts();
$stem = "$stem.%04d.png" unless $stem =~ /%/;
$stem =~ s/\%/\@.\%/ if @subcams && $stem !~ /\@/;
$| = 1;
print "{\nwinsize $res\n}\n" if $res;
$set_fovy = "fovy $fovy" if $fovy;