The conventional file suffixes for Bezier surface files are .bbp or .bez. A file with either suffix may contain either type of patch.
[ST]BBP -or- [C]BEZ<Nu><Nv><Nd>[_ST] # Nu, Nv are u- and v-direction # polynomial degrees in range 1..6 # Nd = dimension: 3->3-D, 4->4-D (rational) # (The '<' and '>' do not appear in the input.) # Nu,Nv,Nd are each a single decimal digit. # BBP form implies Nu=Nv=Nd=3 so BBP = BEZ333. # Any number of patches follow the header # (Nu+1)*(Nv+1) patch control points # each 3 or 4 floats according to header vertex(u=0,v=0) vertex(1,0) ... vertex(Nu,0) vertex(0,1) ... vertex(Nu,1) ... vertex(0,Nv) ... vertex(Nu,Nv) # ST texture coordinates if mentioned in header
T(Nu,Nv) # 4-component float (0..1) R G B A colors # for each patch corner if mentioned in header
These formats represent collections of Bezier surface patches, of degrees up to 6, and with 3-D or 4-D (rational) vertices.
The header keyword has the forms
>[_ST] (the '<' and '>' are
not part of the keyword.
ST prefix on
_ST suffix on
BEZuvn, indicates that each patch includes four pairs of
floating-point texture-space coordinates, one for each corner of the
C prefix on
BEZuvn indicates a colored patch,
including four sets of four-component floating-point colors (red, green,
blue, and alpha) in the range 0..1, one color for each corner.
Nu and Nv, each a single digit in the range 1..6, are the patch's polynomial degree in the u and v direction respectively.
Nd is the number of components in each patch vertex, and must be
3 for 3-D or
4 for homogeneous coordinates, that
is, rational patches.
BBP patches are bicubic patches with 3-D vertices, so
Any number of patches follow the header. Each patch comprises a series of patch vertices, followed by optional (s,t) texture coordinates, followed by optional (r,g,b,a) colors.
Each patch has (Nu+1)*(Nv+1) vertices in v-major order, so that if we designate a vertex by its control point indices (u,v) the order is
(0,0) (1,0) (2,0) ... (Nu,0) (0,1) (1,1) (2,1) ... (Nu,1) ... (0,Nv) ... (Nu,Nv)
with each vertex containing either 3 or 4 floating-point numbers as specified by the header.
If the header calls for ST coordinates, four pairs of floating-point numbers follow: the texture-space coordinates for the (0,0), (Nu,0), (0,Nv), and (Nu,Nv) corners of the patch, respectively.
If the header calls for colors, four four-component (red, green, blue, alpha) floating-point colors follow, one for each patch corner.
The series of patches ends at end-of-file, or with a closebrace if incorporated in an object reference.