bin/compamb.pl
changeset 33 02f1d30160d0
equal deleted inserted replaced
32:ea86d26c63ed 33:02f1d30160d0
       
     1 #!/bin/perl
       
     2 # RCSid: $Id: compamb.csh,v 3.7 2008/08/25 04:50:32 greg Exp $
       
     3 #
       
     4 # Compute best ambient value for a scene and append to rad input file
       
     5 # This is a re-write of Greg's CSH script compamb.csh
       
     6 # (c) Axel Jacobs, Nov 2011
       
     7 
       
     8 use strict;
       
     9 use warnings;
       
    10 use File::Temp qw/ tempdir /;
       
    11 
       
    12 my $doexpos = 0;
       
    13 my $docolor = 0;
       
    14 my $radfile;
       
    15 my $oct;
       
    16 
       
    17 sub usage() {
       
    18 	print "Usage: $0 [-e] [-c] rad_input_file.rad\n";
       
    19 	exit 1;
       
    20 }
       
    21 
       
    22 while ($#ARGV > 0) {
       
    23 	$_ = shift @ARGV;
       
    24 	if (m/-e/) {
       
    25 		$doexpos = 1;
       
    26 	} elsif (m/-c/) {
       
    27 		$docolor = 1;
       
    28 	} else {
       
    29 		&usage;
       
    30 	}
       
    31 }
       
    32 
       
    33 if ($#ARGV == 0) {
       
    34 	$radfile = $ARGV[0];
       
    35 	if (! -f $radfile) {
       
    36 		die ("Cannot open Radiance input file $ARGV[0]\n");
       
    37 	}
       
    38 } else {
       
    39 	&usage;
       
    40 }
       
    41 
       
    42 my $td = tempdir( CLEANUP => 1 );
       
    43 #set oct=`rad -w -s -e -v 0 $argv[1] QUA=High AMB=$tf.amb OPT=$tf.opt | sed -n 's/^OCTREE= //p'`
       
    44 my $radout = `rad -w -s -e -v 0 $radfile QUA=High AMB=$td/compamb.amb OPT=$td/compamb.opt`;
       
    45 exit 1;
       
    46 #...my $oct = sed -n 's/^OCTREE= //p'`
       
    47 my $rpictargs = '-av 0 0 0 -aw 16 -dv- -S 1 -x 16 -y 16 -ps 1';
       
    48 system "rad -n -s -V $radfile | rpict @$td/compamb.opt $rpictargs $oct | ra_rgbe - '\!pvalue -h -H -d' > $td/compamb.dat";
       
    49 #rad -n -s -V $argv[1] \
       
    50 	#| rpict @$tf.opt -av 0 0 0 -aw 16 -dv- -S 1 -x 16 -y 16 -ps 1 $oct \
       
    51 	#| ra_rgbe - '\!pvalue -h -H -d' > $tf.dat
       
    52 
       
    53 #echo \# Rad input file modified by $0 `date` >> $argv[1]
       
    54 my $now = localtime();
       
    55 open (FHrad, ">>$radfile") or
       
    56 		die("Unable to append to file $radfile\n");
       
    57 print FHrad "# Rad input file modified by $0 $now";
       
    58 
       
    59 if ($doexpos == 1) {
       
    60 	my $expo = `total -u $td/compamb.dat | rcalc -e '$1=2/(.265*$1+.670*$2+.065*$3)'`;
       
    61 	#chomp $expo;
       
    62 	#(echo -n 'EXPOSURE= '; \
       
    63 		#total -u $tf.dat | rcalc -e '$1=2/(.265*$1+.670*$2+.065*$3)') \
       
    64 		#>> $argv[1]
       
    65 	print FHrad "EXPOSURE= $expo\n";
       
    66 }
       
    67 
       
    68 #lookamb -h -d $tf.amb | rcalc -e '$1=$10;$2=$11;$3=$12' >> $tf.dat
       
    69 system ("lookamb -h -d $td/compamb.amb | rcalc -e '$1=$10;$2=$11;$3=$12' >> $td/compamb.dat");
       
    70 
       
    71 #set lavg=`rcalc -e '$1=lum;lum=.265*$1+.670*$2+.065*$3;cond=lum-1e-5' $tf.dat | total -m -p`
       
    72 my $lavg = `rcalc -e '$1=lum;lum=.265*$1+.670*$2+.065*$3;cond=lum-1e-5' $td/compamb.dat | total -m -p`;
       
    73 
       
    74 my $av = "$lavg $lavg $lavg";
       
    75 if ($docolor == 1) {
       
    76 	my $cavg = `total -m $td/compamb.dat`;
       
    77 	my ($ravg, $gavg, $bavg) = split(/\t/, $cavg);
       
    78 	my $sf = $lavg / (.265*$ravg + .670*$gavg + .065*$bavg);
       
    79 	#my $av = `rcalc -n -e "r=$ravg;g=$gavg;b=$bavg;sf=$lavg/(.265*r+.670*g+.065*b)" -e '$1=sf*r;$2=sf*g;$3=sf*b'`)
       
    80 	my $av = "$sf*$ravg $sf*$gavg $sf*$bavg";
       
    81 }
       
    82 
       
    83 print FHrad "render= -av $av";
       
    84 close (FHrad);
       
    85 
       
    86 #EOF