ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/doc/man/man1/obj2mesh.1
Revision: 1.12
Committed: Fri Jan 24 01:26:44 2014 UTC (10 years, 4 months ago) by greg
Branch: MAIN
CVS Tags: rad4R2P2, rad5R0, rad4R2, rad4R2P1
Changes since 1.11: +1 -4 lines
Log Message:
Hopeful fix to triangulation code for obj2mesh with N-sided polygons

File Contents

# User Rev Content
1 greg 1.12 .\" RCSid "$Id: obj2mesh.1,v 1.11 2008/11/10 19:08:17 greg Exp $"
2 greg 1.1 .TH OBJ2MESH 1 03/11/03 RADIANCE
3     .SH NAME
4     obj2mesh - create a compiled RADIANCE mesh file from Wavefront .OBJ input
5     .SH SYNOPSIS
6     .B obj2mesh
7     [
8 greg 1.8 .B "\-a matfile"
9     ][
10     .B "\-l matlib"
11 greg 1.3 ][
12 greg 1.1 .B "\-n objlim"
13     ][
14     .B "\-r maxres"
15     ][
16     .B \-w
17     ]
18     [
19     .B "input.obj"
20     [
21     .B "output.rtm"
22     ]
23     ]
24     .SH DESCRIPTION
25     .I Obj2mesh
26     reads a Wavefront .OBJ file from
27     .I input.obj
28     (or the standard input) and compiles it into a RADIANCE triangle mesh,
29     which is sent to
30     .I output.rtm
31     (or standard output).
32 greg 1.3 Any RADIANCE material descriptions included via one or more
33     .I \-a
34     options will be compiled and stored in the mesh as well.
35 greg 1.8 If the
36     .I \-l
37     option is used to specify a material file, the RADIANCE library
38     locations are searched.
39 greg 1.1 This mesh may be included in a RADIANCE scene description via the
40     .I mesh
41     primitive, thus:
42     .IP "" .2i
43     mod mesh id
44     .br
45     1+ output.rtm [xform args]
46     .br
47     0
48     .br
49     0
50     .PP
51 greg 1.2 The syntax and semantics are identical to the RADIANCE
52 greg 1.1 .I instance
53 greg 1.3 primitive.
54     If
55     .I mod
56     is "void", then the stored mesh materials will be applied during rendering.
57     Otherwise, the given material will be substituted on
58     all the mesh surfaces.
59 greg 1.1 .PP
60     The
61     .I \-n
62     option specifies the maximum surface set size for
63     each voxel.
64 greg 1.9 Larger numbers result in quicker mesh generation,
65     but potentially slower rendering.
66 greg 1.2 Values below 6 are not recommended, since this is the median
67     valence for a mesh vertex (the number of adjacent faces),
68     and smaller values will result in pointless octree subdivision.
69 greg 1.9 The default setting is 9.
70 greg 1.1 .PP
71     The
72     .I \-r
73     option specifies the maximum octree resolution.
74     This should be greater than or equal to the ratio of the mesh bounding
75     box to the smallest triangle.
76     The default is 16384.
77     .PP
78     The
79     .I \-w
80     option suppresses warnings.
81     .PP
82     Although the mesh file format is binary, it is meant to be portable
83     between machines.
84     The only limitation is that machines with radically different integer
85     sizes will not work together.
86 greg 1.2 .SH DETAILS
87     The following Wavefront statements are understood and compiled by
88     .I obj2mesh.
89     .TP 10n
90     .BI v " x y z"
91     A vertex location, given by its Cartesian coordinates.
92     The final mesh position may of course be modified by
93     the transform arguments given to the
94     .I mesh
95     primitive in the Radiance scene description.
96     .TP
97     .BI vn " dx dy dz"
98     A vertex normal vector, given by its three
99     direction components, which will be normalized by
100     .I obj2mesh.
101     Normals will be interpolated over the mesh
102     during rendering to produce a smooth surface.
103 greg 1.7 If no vertex normals are present, the mesh will appear tesselated.
104 greg 1.2 A zero length normal (i.e., 0 0 0) will generate a syntax error.
105     .TP
106     .BI vt " u v"
107     A local vertex texture coordinate.
108     These coordinates will be interpolated and passed
109     to the "Lu" and "Lv" variables during rendering.
110     Local coordinates can extend over any desired range of values.
111 greg 1.3 .TP
112     .BI usemtl " mname"
113     A material name.
114     The following faces will use the named material, which is
115     taken from the material definitions in the
116     .I \-a
117     input file(s).
118     .TP
119     .BI g " gname"
120     Group association.
121     The following faces are associated with the named group.
122     If no "usemtl" statement has been
123     encountered, the current group is used for the surface material
124     identifier.
125 greg 1.2 .TP
126     .BI f " v1/t1/n1 v2/t2/n2 v3/t3/n3" " .."
127     A polygonal face.
128     Polygon vertices are specified as three indices separated
129     by slashes ('/').
130     The first index is the vertex location, the
131     second index is the local (u,v) texture coordinate, and the
132     third index is the vertex surface normal.
133     Positive indices count from the beginning of the input,
134     where the first vertex position (
135     .I v
136     statement) is numbered 1, and likewise
137     for the first texture coordinate and the first surface normal.
138     Negative indices count backward from the current position in
139 greg 1.10 the input, where \-1 is the last vertex encountered, \-2
140 greg 1.2 is the one before that, etc.
141     An index of 0 may be used for the vertex texture or normal to
142     indicate none, or these may be left off entirely.
143     All faces will be broken into triangles in the final mesh.
144     .PP
145     All other statement types will be ignored on the input.
146     Statements understood by
147     .I obj2rad(1)
148     will be ignored silently; other statements will generate
149     a warning message after translation to indicate how much was missed.
150 greg 1.1 .SH DIAGNOSTICS
151     There are four basic error types reported by obj2mesh:
152     .IP
153     warning - a non-fatal input-related error
154     .IP
155     fatal - an unrecoverable input-related error
156     .IP
157     system - a system-related error
158     .IP
159     internal - a fatal error related to program limitations
160     .IP
161     consistency - a program-caused error
162     .PP
163     Most errors are self-explanatory.
164     However, the following internal errors should be mentioned:
165     .IP "Set overflow in addobject (id)"
166     This error occurs when too many surfaces are close together in a
167     scene.
168 greg 1.2 Sometimes a dense mesh can be accommodated by increasing
169 greg 1.1 the maximum resolution (by powers of two) using the
170     .I \-r
171     option, but usually this error indicates something is wrong.
172     Either too many surfaces are lying right on top of each other,
173     or the bounding cube is inflated from disparate geometry
174     in the input.
175     Chances are, the face number "id" is near
176     those causing the problem.
177     .IP "Hash table overflow in fullnode"
178     This error is caused by too many surfaces, and there is
179     little hope of compiling this mesh.
180 greg 1.7 .SH EXAMPLES
181 greg 1.5 To create a compiled triangle mesh from the scene file mesh.obj
182     using materials from the file mesh.mat:
183 greg 1.1 .IP "" .2i
184 greg 1.10 obj2mesh \-a mesh.mat mesh.obj mesh.rtm
185 greg 1.7 .PP
186     To use local coordinates to place a square tiled image on a mesh object:
187     .sp
188     .nf
189     void colorpict tiled_pat
190 greg 1.11 7 red green blue mytile.hdr . frac(Lu) frac(Lv)
191 greg 1.7 0
192     0
193    
194     tiled_pat plastic tiled_mat
195     0
196     0
197     5 .9 .9 .9 0 0
198    
199     tiled_mat mesh tiled_mesh
200     1 mymesh.rtm
201     0
202     0
203     .fi
204 greg 1.8 .SH ENVIRONMENT
205     RAYPATH the directories to search for material files.
206 greg 1.1 .SH AUTHOR
207     Greg Ward
208     .SH "SEE ALSO"
209 greg 1.2 gensurf(1), getinfo(1), make(1), obj2rad(1),
210 greg 1.6 oconv(1), rpict(1), rvu(1), rtrace(1), xform(1)