ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/util/genambpos.pl
Revision: 2.9
Committed: Wed Sep 3 14:05:55 2014 UTC (10 years, 2 months ago) by greg
Content type: text/plain
Branch: MAIN
CVS Tags: rad4R2P2, rad5R0, rad4R2P1
Changes since 2.8: +6 -1 lines
Log Message:
Added corral flag highlighting

File Contents

# User Rev Content
1 greg 2.1 #!/usr/bin/perl -w
2 greg 2.9 # RCSid $Id: genambpos.pl,v 2.8 2014/05/15 17:30:53 greg Exp $
3 greg 2.1 #
4     # Visualize ambient positions and gradients
5     #
6     use strict;
7     sub userror {
8 greg 2.5 print STDERR "Usage: genambpos [-l lvl][-w minwt][-r rad][-s sf][-p][-d] scene.amb > ambloc.rad\n";
9 greg 2.1 exit 1;
10     }
11     my $lvlsel = -1;
12     my $scale = 0.25;
13     my $doposgrad = 0;
14     my $dodirgrad = 0;
15 greg 2.2 my $minwt = 0.5001**6;
16 greg 2.5 my $fixedrad="";
17 greg 2.1 my $savedARGV = "genambpos @ARGV";
18     # Get options
19     while ($#ARGV >= 0) {
20     if ("$ARGV[0]" =~ /^-p/) {
21     $doposgrad=1;
22     } elsif ("$ARGV[0]" =~ /^-d/) {
23     $dodirgrad=1;
24     } elsif ("$ARGV[0]" =~ /^-l/) {
25     $lvlsel = $ARGV[1];
26     shift @ARGV;
27 greg 2.2 } elsif ("$ARGV[0]" =~ /^-w/) {
28     $minwt = $ARGV[1];
29     shift @ARGV;
30 greg 2.1 } elsif ("$ARGV[0]" =~ /^-s/) {
31     $scale = $ARGV[1];
32     shift @ARGV;
33 greg 2.5 } elsif ("$ARGV[0]" =~ /^-r/) {
34     $fixedrad = "-e psiz:$ARGV[1]";
35     shift @ARGV;
36 greg 2.1 } elsif ("$ARGV[0]" =~ /^-./) {
37     userror();
38     } else {
39     last;
40     }
41     shift @ARGV;
42     }
43     userror() if ($#ARGV != 0);
44     my $cmd = "getinfo < $ARGV[0] " .
45 greg 2.3 q[| sed -n 's/^.* -aa \([.0-9][^ ]*\) .*$/\1/p'];
46 greg 2.1 my $ambacc=`$cmd`;
47     die "Missing -aa setting in header\n" if (! $ambacc );
48 greg 2.6 die "Zero -aa setting in header\n" if ($ambacc <= .00001);
49 greg 2.4 $scale *= $ambacc;
50     my $ambfmt = '
51 greg 2.1 void glow posglow
52     0
53     0
54     4 ${agr} ${agg} ${agb} 0
55    
56     posglow sphere position${recno}
57     0
58     0
59 greg 2.6 4 ${ px } ${ py } ${ pz } ${ psiz }
60 greg 2.4 ';
61     my $posgradfmt = '
62 greg 2.2 void glow arrglow
63     0
64     0
65     4 ${wt*agr} ${wt*agg} ${wt*agb} 0
66    
67     arrglow cone pgarrow${recno}
68 greg 2.1 0
69     0
70     8
71 greg 2.7 ${ cx0 } ${ cy0 } ${ cz0 }
72     ${ cx1 } ${ cy1 } ${ cz1 }
73     ${ cr0 } 0
74 greg 2.4
75 greg 2.1 void brightfunc pgpat
76     2 posfunc ambpos.cal
77     0
78     6 ${ px } ${ py } ${ pz } ${ pgx } ${ pgy } ${ pgz }
79    
80 greg 2.9 pgpat colorfunc pgpat
81     4 1 if(corralled,.1,1) if(corralled,.1,1) ambpos.cal
82     0
83     7 ${ px } ${ py } ${ pz } ${ ux } ${ uy } ${ uz } ${ cflags }
84    
85 greg 2.1 pgpat glow pgval
86     0
87     0
88     4 ${avr} ${avg} ${avb} 0
89    
90     void mixfunc pgeval
91     4 pgval void ellipstencil ambpos.cal
92     0
93     9 ${ px } ${ py } ${ pz } ${ux/r0} ${uy/r0} ${uz/r0} ${vx/r1} ${vy/r1} ${vz/r1}
94    
95     pgeval polygon pgellipse${recno}
96     0
97     0
98     12
99 greg 2.7 ${ px1 } ${ py1 } ${ pz1 }
100     ${ px2 } ${ py2 } ${ pz2 }
101     ${ px3 } ${ py3 } ${ pz3 }
102     ${ px4 } ${ py4 } ${ pz4 }
103 greg 2.1 ';
104 greg 2.4 $posgradfmt .= '
105 greg 2.1 void glow tipglow
106     0
107     0
108     4 ${2*agr} ${2*agg} ${2*agb} 0
109    
110     tipglow sphere atip
111     0
112     0
113 greg 2.7 4 ${ cx1 } ${ cy1 } ${ cz1 } ${psiz/7}
114 greg 2.4 ' if ($dodirgrad);
115     my $dirgradfmt='
116 greg 2.1 void brightfunc dgpat
117     2 dirfunc ambpos.cal
118     0
119     9 ${ px } ${ py } ${ pz } ${ nx } ${ ny } ${ nz } ${ dgx } ${ dgy } ${ dgz }
120    
121     dgpat glow dgval
122     0
123     0
124     4 ${avr} ${avg} ${avb} 0
125    
126     dgval ring dgdisk${recno}a
127     0
128     0
129     8
130 greg 2.8 ${ px+dgx/dg*eps*.5 } ${ py+dgy/dg*eps*.5 } ${ pz+dgz/dg*eps*.5 }
131 greg 2.1 ${ dgx } ${ dgy } ${ dgz }
132 greg 2.7 0 ${ r0/2 }
133 greg 2.1
134     dgval ring dgdisk${recno}b
135     0
136     0
137     8
138 greg 2.8 ${ px-dgx/dg*eps*.5 } ${ py-dgy/dg*eps*.5 } ${ pz-dgz/dg*eps*.5 }
139 greg 2.1 ${ -dgx } ${ -dgy } ${ -dgz }
140 greg 2.7 0 ${ r0/2 }
141 greg 2.1 ';
142     # Load & convert ambient values
143     print "# Output produced by: $savedARGV\n";
144 greg 2.2 system "lookamb -h -d $ARGV[0] | rcalc -e 'LV:$lvlsel;MW:$minwt;SF:$scale'" .
145 greg 2.5 " -f rambpos.cal -e cond=acond $fixedrad -o '$ambfmt'";
146 greg 2.4 if ($doposgrad) {
147     system "lookamb -h -d $ARGV[0] " .
148     "| rcalc -e 'LV:$lvlsel;MW:$minwt;SF:$scale'" .
149 greg 2.5 " -f rambpos.cal -e cond=pcond $fixedrad -o '$posgradfmt'";
150 greg 2.4 }
151     if ($dodirgrad) {
152     system "lookamb -h -d $ARGV[0] " .
153     "| rcalc -e 'LV:$lvlsel;MW:$minwt;SF:$scale'" .
154     " -f rambpos.cal -e cond=dcond -o '$dirgradfmt'";
155     }
156 greg 2.1 exit;