ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/Development/ray/doc/man/man1/rxfluxmtx.1
Revision: 1.2
Committed: Fri Oct 24 16:52:14 2025 UTC (2 weeks ago) by greg
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +17 -8 lines
Log Message:
docs(rxfluxmtx): wording corrections and clarifications

File Contents

# User Rev Content
1 greg 1.2 .\" RCSid "$Id: rxfluxmtx.1,v 1.1 2025/10/23 23:34:59 greg Exp $"
2 greg 1.1 .TH RXFLUXMTX 1 10/23/2025 RADIANCE
3     .SH NAME
4     rxfluxmtx - compute flux transfer matrix(es) for RADIANCE scene
5     .SH SYNOPSIS
6     .B rxfluxmtx
7     [
8     .B \-W
9     ] [
10     .B "rcontrib options"
11     ]
12     .B "{ sender.rad | view | - }"
13     .B receivers.rad
14     .B "[ -i system.oct ]"
15     .B "[ system.rad .. ]"
16     .SH DESCRIPTION
17     .I rxfluxmtx
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 used
29     to perform the simulation.
30     .PP
31     If a single hyphen ('-') is given in place of the view or sender file, then
32     .I rxfluxmtx
33     computes matrix rows based upon the provided ray sample origins and directions,
34     which may be surface normals if the
35     .I \-I+
36     option is applied.
37     The
38     .I \-y
39     option is required to specify the number of output rows for pass-through mode.
40     .PP
41     Alternatively, a view specification may be given on the command-line
42     to produce coefficient picture output, in which case both the
43     .I \-x
44     and
45     .I \-y
46     options must be present to set the desired picture dimensions.
47     The related
48     .I \-pj,
49     .I \-pd,
50     and
51     .I \-pa
52     options may be used to set the pixel jitter, depth-of-field, and
53     aspect ratio, respectively.
54     This avoids the need to call
55     .I vwrays(1),
56     as required by
57     .I rfluxmtx.
58     .PP
59     The
60     .I \-W+
61     option turns on verbose mode, and the
62     .I \-t
63     option sets the number of seconds between progress reports, similar to
64     .I rcontrib(1).
65     However, the
66     .I rcontrib
67     options
68     .I \-p,
69     .I \-b,
70     .I \-bn,
71     .I \-m,
72     and
73     .I \-M
74     options are controlled by
75     .I rxfluxmtx
76     and may not be set by the user.
77     .PP
78     The sample count, unless set by the
79     .I \-c
80     option, defaults to 10000 when a sender file is given, or to 1 for
81     view and pass-through modes.
82     .SH VARIABLES
83     The sender and receiver scene files given to
84     .I rxfluxmtx
85     contain controlling parameters in special comments of the form:
86     .nf
87    
88     #@rxfluxmtx variable=value ..
89     or:
90     #@rfluxmtx variable=value ..
91    
92     .fi
93     At minimum, both sender and receiver must specify one of the
94     hemisphere sampling types, and there must be at least
95     one surface in each file.
96     .TP 10n
97     .BI h =u
98     Set hemisphere sampling to "uniform," meaning a single bin
99     of (cosine-distributed) samples.
100     In the case of distant "source" primitives, this is the only
101     sampling method that supports arbitrary receiver sizes.
102     The other methods below require a full hemispherical source.
103     .TP
104     .BI h =kf
105     Divide the hemisphere using the LBNL/Klems "full" sampling basis.
106     (Use "h=-kf" for left-handed coordinates.)
107     .TP
108     .BI h =kh
109     Divide the hemisphere using the LBNL/Klems "half" sampling basis.
110     (Use "h=-kh" for left-handed coordinates.)
111     .TP
112     .BI h =kq
113     Divide the hemisphere using the LBNL/Klems "quarter" sampling basis.
114     (Use "h=-kq" for left-handed coordinates.)
115     .TP
116     .BI h =rN
117     Divide the hemisphere using Reinhart's substructuring of the Tregenza
118     sky pattern with
119     .I N
120     divisions in each dimension.
121     If it is not given,
122     .I N
123     defaults to 1, which is just the Tregenza sky.
124     (Use "h=-rN" for left-handed coordinates.)
125     .TP
126     .BI h =cie
127     Divide the hemisphere into CIE sky scanner directions, which is
128     similar to Tregenza but with different starting azimuths and
129     reversing row direction at each new altitude.
130     (Use "h=-cie" for left-handed coordinates.)
131     .TP
132     .BI h =scN
133     Subdivide the hemisphere using the Shirley-Chiu square-to-disk mapping with an
134     .I NxN
135     grid over the square.
136     (Use "h=-scN" for left-handed coordinates.)
137     .TP
138     .BI u =[-]{X|Y|Z|ux,uy,uz}
139     Orient the "up" direction for the hemisphere using the indicated axis or direction
140     vector.
141     .TP
142     .BI o =output_spec
143 greg 1.2 Send the matrix data for this receiver to the indicated file specification.
144     Single or double quotes may be used to contain strings with spaces, and
145     the usual "%s" and "%d" formats incorporate the modifier name and/or
146     bin number, as with
147     .I rcontrib.
148 greg 1.1 Command (piped) output is not supported.
149 greg 1.2 .PP
150     If no output_spec directive is given, it must be specified by a
151     .I \-o
152     setting on the command-line, since output to stdout is not supported.
153     The input and output file formats are controlled by the
154 greg 1.1 .I \-fio
155 greg 1.2 option, which may use a single letter for identical i/o formats.
156     The input format matters only in pass-through mode, for which
157 greg 1.1 ASCII input is supported.
158     ASCII output is unsupported, since it interferes with
159     efficient recovery in the
160     .I \-r
161     mode.
162 greg 1.2 The default setting is
163     .I \-faf.
164 greg 1.1 .PP
165     In normal execution, only a single sender surface is sampled, but it may be
166     comprised of any number of subsurfaces, as in a triangle mesh or similar.
167     The surface normal will be computed as the average of all the constituent
168     subsurfaces.
169     The subsurfaces themselves must be planar, thus only
170     .I polygon
171     and
172     .I ring
173     surface primitives are supported.
174     Other primitives will be silently ignored and will have no effect on the calculation.
175     .PP
176     In the receiver file, the
177     .I source
178     primitive is supported as well, and multiple receivers (and multiple output
179     matrices) may be identified by different modifier names.
180     (Make sure that surfaces using the same modifier are grouped together,
181     and that the modifiers are unique and not used elsewhere in the
182     scene description.)\0
183     Though it may be counter-intuitive, receivers are often light sources,
184     since samples end up there in a backwards ray-tracing system such as RADIANCE.
185     When using local geometry, the overall aperture shape should be close to flat.
186     Large displacements may give rise to errors due to a convex receiver's
187     larger profile at low angles of incidence.
188     .PP
189     Rays always emanate from the back side of the sender surface and arrive at the
190     front side of receiver surfaces.
191     In this way, a receiver surface may be reused as a sender in a subsequent
192     .I rxfluxmtx
193     calculation and the resulting matrices will concatenate properly.
194     (Note that it is important to keep receiver surfaces together, otherwise a
195     "duplicate modifier" error will result.)\0
196     .SH EXAMPLES
197     To generate a flux transfer matrix connecting input and output apertures
198     on a light pipe:
199     .IP "" .2i
200     rxfluxmtx int_aperture.rad ext_aperture.rad lpipe.rad > lpipe.mtx
201     .PP
202 greg 1.2 To generate a set of DC view component pictures with 9 jittered samples/pixel:
203 greg 1.1 .IP "" .2i
204 greg 1.2 rxfluxmtx -vf v1.vf -x 512 -y 512 -c 9 -pj .8 -fc reinhart_M4.rad -i scene1.oct
205 greg 1.1 .PP
206     To compute a workplane irradiance matrix for each window in a space:
207     .IP "" .2i
208     rxfluxmtx -faf - windows_kf.rad -i scene2.oct < workplane_pts.txt
209     .SH NOTES
210     The main differences between
211     .I rfluxmtx(1)
212     and
213     .I rxfluxmtx
214     is that the latter does not run a separate
215     .I rcontrib
216     process.
217     Instead, it relies on a unix-only C++ class definition that offers full
218     control over i/o.
219     This allows an unlimited number of receivers, a
220     .I \-r
221     recovery option, and simplifies internal operations.
222     .SH AUTHOR
223     Greg Ward
224     .SH "SEE ALSO"
225     genBSDF(1), getinfo(1), pvsum(1), rcalc(1), rcollate(1), rcomb(1), rcontrib(1),
226     rcrop(1), rfluxmtx(1), rmtxop(1), vwrays(1), wrapBSDF(1)