NAME¶
gensurf - generate a RADIANCE or Wavefront description of a curved surface
SYNOPSIS¶
gensurf mat name 'x(s,t)' 'y(s,t)' 'z(s,t)' m n [
-e expr ][
-f
file ][
-s ][
-o ]
gensurf mat name 'x(s,t)' 'y(s,t)' dfile m n [
-e expr ][
-f
file ][
-s ][
-o ]
gensurf mat name dfile dfile dfile m n [
-s ][
-o ]
DESCRIPTION¶
Gensurf produces either a RADIANCE scene description or a Wavefront .OBJ
file of a functional surface defined by the parametric equations
x(s,t), y(s,t), and
z(s,t). The surface normal is defined
by the right hand rule as applied to
(s,t). S will vary from 0
to 1 in steps of
1/m, and
t will vary from 0 to 1 in steps of
1/n. The surface will be composed of
2*m*n or fewer triangles
and quadrilaterals. The expressions are of the same type used in RADIANCE
function files. Auxiliary expressions and/or files may be specified in any
number of
-e and
-f options. The
-s option adds smoothing
(surface normal interpolation) to the surface. The
-o option produces a
Wavefront .OBJ file rather than a RADIANCE scene description. This is most
useful as input to the
obj2mesh(1) program for producing a compiled
mesh. A single "usemtl" statement will appear at the beginning of
the .OBJ output, echoing the modifier given on the command line.
Rough holes may be cut in the mesh by defining a valid(s,t) function. Where this
function is positive, polygon vertices will be produced. Where it is negative,
no geometry will be output. Surface normal interpolation will ignore any
invalid vertices.
The second invocation form reads z data values from the file
dfile. This
file must give either m*n or (m+1)*(n+1) floating point z values. If m*n
values are given, then the values correspond to the centroid of each
quadrilateral region. If (m+1)*(n+1) values are given, then the values
correspond to the vertices of each quadrilateral region. The ordering of the
data in the file is such that the s values are changing faster than the t
values. If a minus ('-') is given for
dfile, then the values are read
from the standard input.
The third invocation form is used to read coordinate triplets from a file or the
standard input. The three
dfile arguments must all be the same, and the
corresponding file must contain three floating point values for each point
location. The ordering and other details are the same as those described for z
value files above.
EXAMPLE¶
To generate a tesselated sphere:
-
- gensurf crystal ball 'sin(PI*s)*cos(2*PI*t)' 'cos(PI*s)'
'sin(PI*s)*sin(2*PI*t)' 7 10
To generate a 10x20 smoothed height field from 12 recorded vertex z values:
-
- gensurf dirt ground '10*s' '20*t' height.dat 2 3 -s
AUTHOR¶
Greg Ward
BUGS¶
The smoothing operation requires that functions be defined beyond the [0,1]
boundaries of s and t.
SEE ALSO¶
genrbox(1),
genrev(1),
genworm(1),
icalc(1),
obj2mesh(1),
obj2rad(1),
rpict(1),
rvu(1),
xform(1)