ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/util/genambpos.pl
(Generate patch)

Comparing ray/src/util/genambpos.pl (file contents):
Revision 2.1 by greg, Thu Apr 24 23:15:42 2014 UTC vs.
Revision 2.11 by greg, Tue Feb 15 04:08:26 2022 UTC

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines