1 |
.\" RCSid "$Id: rfluxmtx.1,v 1.13 2023/12/12 16:31:45 greg Exp $" |
2 |
.TH RFLUXMTX 1 07/22/14 RADIANCE |
3 |
.SH NAME |
4 |
rfluxmtx - compute flux transfer matrix(es) for RADIANCE scene |
5 |
.SH SYNOPSIS |
6 |
.B rfluxmtx |
7 |
[ |
8 |
.B \-v |
9 |
][ |
10 |
.B "rcontrib options" |
11 |
] |
12 |
.B "{ sender.rad | - }" |
13 |
.B receivers.rad |
14 |
.B "[ -i system.oct ]" |
15 |
.B "[ system.rad .. ]" |
16 |
.SH DESCRIPTION |
17 |
.I Rfluxmtx |
18 |
samples rays uniformly over the surface given in |
19 |
.I sender.rad |
20 |
and records rays arriving at surfaces in the file |
21 |
.I receivers.rad, |
22 |
producing a flux transfer matrix per receiver. |
23 |
A system octree to which the receivers will be appended may be given with a |
24 |
.I \-i |
25 |
option following the receiver file. |
26 |
Additional system surfaces may be given in one or more |
27 |
.I system.rad |
28 |
files, which are compiled before the receiver file into an octree sent to the |
29 |
.I rcontrib(1) |
30 |
program to do the actual work. |
31 |
If a single hyphen ('-') is given in place of the sender file, then |
32 |
.I rfluxmtx |
33 |
passes ray samples from its standard input directly to |
34 |
.I rcontrib |
35 |
without interpretation. |
36 |
By default, all resulting matrix data are interleaved and sent to the standard output |
37 |
in ASCII format, but this behavior is typically overridden using inline options |
38 |
as described below. |
39 |
.PP |
40 |
The |
41 |
.I \-v |
42 |
option turns on verbose reporting for the number of samples and the executed |
43 |
.I rcontrib |
44 |
command. |
45 |
All other supported options are passed on to |
46 |
.I rcontrib(1). |
47 |
However, the |
48 |
.I \-f, |
49 |
.I \-e, |
50 |
.I \-p, |
51 |
.I \-b, |
52 |
.I \-bn, |
53 |
.I \-m, |
54 |
and |
55 |
.I \-M |
56 |
options are controlled by |
57 |
.I rfluxmtx |
58 |
and may not be set by the user. |
59 |
Also, the |
60 |
.I \-x, |
61 |
.I \-y, |
62 |
and |
63 |
.I \-ld |
64 |
options are ignored unless |
65 |
.I rfluxmtx |
66 |
is invoked in the pass-through mode, |
67 |
in which case they may be needed to generate RADIANCE views from |
68 |
.I vwrays(1). |
69 |
The sample count, unless set by the |
70 |
.I \-c |
71 |
option, defaults to 10000 when a sender file is given, or to 1 for pass-through mode. |
72 |
.SH VARIABLES |
73 |
The sender and receiver scene files given to |
74 |
.I rfluxmtx |
75 |
contain controlling parameters in special comments of the form: |
76 |
.nf |
77 |
|
78 |
#@rfluxmtx variable=value .. |
79 |
|
80 |
.fi |
81 |
At minimum, both sender and receiver must specify one of the |
82 |
hemisphere sampling types, and there must be at least |
83 |
one surface in each file. |
84 |
.TP 10n |
85 |
.BI h =u |
86 |
Set hemisphere sampling to "uniform," meaning a single bin |
87 |
of (cosine-distributed) samples. |
88 |
In the case of distant "source" primitives, this is the only |
89 |
sampling method that supports arbitrary receiver sizes. |
90 |
The other methods below require a full hemispherical source. |
91 |
.TP |
92 |
.BI h =kf |
93 |
Divide the hemisphere using the LBNL/Klems "full" sampling basis. |
94 |
(Use "h=-kf" for left-handed coordinates.) |
95 |
.TP |
96 |
.BI h =kh |
97 |
Divide the hemisphere using the LBNL/Klems "half" sampling basis. |
98 |
(Use "h=-kh" for left-handed coordinates.) |
99 |
.TP |
100 |
.BI h =kq |
101 |
Divide the hemisphere using the LBNL/Klems "quarter" sampling basis. |
102 |
(Use "h=-kq" for left-handed coordinates.) |
103 |
.TP |
104 |
.BI h =rN |
105 |
Divide the hemisphere using Reinhart's substructuring of the Tregenza |
106 |
sky pattern with |
107 |
.I N |
108 |
divisions in each dimension. |
109 |
If it is not given, |
110 |
.I N |
111 |
defaults to 1, which is just the Tregenza sky. |
112 |
(Use "h=-rN" for left-handed coordinates.) |
113 |
.TP |
114 |
.BI h =cie |
115 |
Divide the hemisphere into CIE sky scanner directions, which is |
116 |
similar to Tregenza but with different starting azimuths and |
117 |
reversing row direction at each new altitude. |
118 |
(Use "h=-cie" for left-handed coordinates.) |
119 |
.TP |
120 |
.BI h =scN |
121 |
Subdivide the hemisphere using the Shirley-Chiu square-to-disk mapping with an |
122 |
.I NxN |
123 |
grid over the square. |
124 |
(Use "h=-scN" for left-handed coordinates.) |
125 |
.TP |
126 |
.BI u =[-]{X|Y|Z|ux,uy,uz} |
127 |
Orient the "up" direction for the hemisphere using the indicated axis or direction |
128 |
vector. |
129 |
.TP |
130 |
.BI o =output_spec |
131 |
Send the matrix data for this receiver to the indicated file or command. |
132 |
Single or double quotes may be used to contain strings with spaces, and |
133 |
commands must begin with an exclamation mark ('!'). |
134 |
The file format will be determined by the command-line |
135 |
.I \-fio |
136 |
option and will include an information header unless the |
137 |
.I \-h |
138 |
option was used to turn headers off. |
139 |
(The output file specification is ignored for senders.)\0 |
140 |
.PP |
141 |
In normal execution, only a single sender surface is sampled, but it may be |
142 |
comprised of any number of subsurfaces, as in a triangle mesh or similar. |
143 |
The surface normal will be computed as the average of all the constituent |
144 |
subsurfaces. |
145 |
The subsurfaces themselves must be planar, thus only |
146 |
.I polygon |
147 |
and |
148 |
.I ring |
149 |
surface primitives are supported. |
150 |
Other primitives will be silently ignored and will have no effect on the calculation. |
151 |
.PP |
152 |
In the receiver file, the |
153 |
.I source |
154 |
primitive is supported as well, and multiple receivers (and multiple output |
155 |
matrices) may be identified by different modifier names. |
156 |
(Make sure that surfaces using the same modifier are grouped together, |
157 |
and that the modifiers are unique and not used elsewhere in the |
158 |
scene description.)\0 |
159 |
Though it may be counter-intuitive, receivers are often light sources, |
160 |
since samples end up there in a backwards ray-tracing system such as RADIANCE. |
161 |
When using local geometry, the overall aperture shape should be close to flat. |
162 |
Large displacements may give rise to errors due to a convex receiver's |
163 |
larger profile at low angles of incidence. |
164 |
.PP |
165 |
Rays always emanate from the back side of the sender surface and arrive at the |
166 |
front side of receiver surfaces. |
167 |
In this way, a receiver surface may be reused as a sender in a subsequent |
168 |
.I rfluxmtx |
169 |
calculation and the resulting matrices will concatenate properly. |
170 |
(Note that it is important to keep receiver surfaces together, otherwise a |
171 |
"duplicate modifier" error will result.)\0 |
172 |
.SH EXAMPLES |
173 |
To generate a flux transfer matrix connecting input and output apertures |
174 |
on a light pipe: |
175 |
.IP "" .3i |
176 |
rfluxmtx int_aperture.rad ext_aperture.rad lpipe.rad > lpipe.mtx |
177 |
.SH AUTHOR |
178 |
Greg Ward |
179 |
.SH "SEE ALSO" |
180 |
genBSDF(1), getinfo(1), rcalc(1), rcollate(1), rcomb(1), rcontrib(1), |
181 |
rcrop(1), rmtxop(1), vwrays(1), wrapBSDF(1) |