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