Spline Nodes

The spline nodes are spline curves and surface patches. They also include the sweep primitive.


bsplinecurve

SLIDE Definition tclinit Definition
bsplinecurve id
  drawcontrols drawcontrols_bool
order order_float
knotlist float
controlpointlist controlpoint_idlist
closed closed_bool
slices slices_int
surface surface_id
shading shading_flag
lod lod_flag
ribbegin "rib_string"
ribend "rib_string"
endbsplinecurve
slide create bsplinecurve id \
  -drawcontrols drawcontrols_bool \
-order order_float \
-knotlist float \
-controlpointlist controlpoint_idlist \
-closed closed_int \
-slices slices_int \
-surface surface_id \
-shading shading_flag \
-lod lod_flag \
-ribbegin "rib_string" \
-ribend "rib_string" \
SLIDE Defaults
bsplinecurve id
  drawcontrols 0
order 4.0
knots 8.0
knotlist (0 1 2 3 4 5 6 7)
controlpointlist   Note: these are the locations of the default control points;
              there are no corresponding slide points.
             ((-1.5 0.0 0.0) (-0.5 1.0 0.0) (0.5 1.0 0.0) (1.5 0.0 0.0))
slices 5
surface SLF_INHERIT
shading SLF_INHERIT
lod SLF_FULL
ribbegin SLF_NULL
ribend SLF_NULL
endbsplinecurve

A bsplinecurve statement describes a curve that approximates the control points defined by the controlpoint_idlist.

A bsplinecurve can be used as a sweep path. The dynamic values are: slices and the controlpointlist points.

The bsplinecurve parameters have the following constraints:

order >= 3
knots >= 2*order
slices <= 100
order + #control points = knots

Example:
point p1 (-1 -1 0) endpoint
point p2 (-2 0 0) endpoint
point p3 (-1 1 0) endpoint
point p4 ( 0 0 0) endpoint
point p5 ( 1 -1 0) endpoint
point p6 ( 2 0 0) endpoint
point p7 ( 1 1 0) endpoint

B-spline curve with yellow control polygon
bsplinecurve id
  order 4
knots 11
knotlist (0 1 2 3 4 5 6 7 8 9 10)
controlpointlist (p1 p2 p3 p4 p5 p6 p7)
slices 30
drawcontrols 1
endbsplinecurve


beziercurve

SLIDE Definition tclinit Definition
beziercurve id
  drawcontrols drawcontrols_bool
controlpointlist controlpoint_idlist
slices slices_int
surface surface_id
shading shading_flag
lod lod_flag
ribbegin "rib_string"
ribend "rib_string"
endbeziercurve
slide create beziercurve id \
  -drawcontrols drawcontrols_bool \
-controlpointlist controlpoint_idlist \
-slices slices_int \
-surface surface_id \
-shading shading_flag \
-lod lod_flag \
-ribbegin "rib_string" \
-ribend "rib_string" \
SLIDE Defaults
beziercurve id
  drawcontrols 0
controlpointlist   Note: these are the locations of the default control points;
              there are no corresponding slide points. 
             ((-1.5 0.0 0.0) (-0.5 1.0 0.0) (0.5 1.0 0.0) (1.5 0.0 0.0))
slices 5
surface SLF_INHERIT
shading SLF_INHERIT
lod SLF_FULL
ribbegin SLF_NULL
ribend SLF_NULL
endbeziercurve

A beziercurve statement describes a surface that interpolates the end points and approximates the other points defined by the controlpoint_idlist.

A beziercurve can be used as a sweep path. The dynamic values are: slices and the controlpointlist points.

The beziercurve parameters have the following constraints:

#control points >= 3
slices <= 100
order = #control points

Example:
point p1 (-1.5 -0.5 0) endpoint
point p2 (-0.5 0.5 0) endpoint
point p3 ( 0.5 0.5 0) endpoint
point p4 ( 1.5 -0.5 0) endpoint

Bezier curve with yellow control polygon
beziercurve id
  controlpointlist (p1 p2 p3 p4)
drawcontrols1
endbeziercurve


polyline

SLIDE Definition tclinit Definition
polyline id
  drawpoints onoff_flag
pointlist point_idlist
surface surface_id
shading shading_flag
lod lod_flag
ribbegin "rib_string"
ribend "rib_string"
endpolyline
slide create polyline id \
  -drawpoints onoff_flag \
-pointlist point_idlist \
-surface surface_id \
-shading shading_flag \
-lod lod_flag \
-ribbegin "rib_string" \
-ribend "rib_string" \
SLIDE Defaults
polyline id
  drawpoints 0
pointlist   Note: these are the locations of the default points;
              there are no corresponding slide points. 
             ((-2.0 -1.0 0.0) (-2.0 1.0 0.0) (0.0 1.0 0.0)
             (0.0 -1.0 0.0) (2.0 -1.0 0.0) (2.0 1.0 0.0))

surface SLF_INHERIT
shading SLF_INHERIT
lod SLF_FULL
ribbegin SLF_NULL
ribend SLF_NULL
endpolyline

A polyline statement describes 3D piecewise linear segments. There must be atleast 2 points in the pointlist.
A polyline can be used as a sweep path.

Example:
point p1 (-2.0 -2.0 0.0) endpoint
point p2 ( 1.0 1.0 0.0) endpoint
point p3 ( 2.0 -1.0 0.0) endpoint
point p4 ( 0.0 -1.0 0.0) endpoint
point p5 ( 3.0 1.0 0.0) endpoint

line segments with points drawn
polyline id
  pointlist (p1 p2 p3 p4 p5)
drawpoints 1
endpolyline


sweep

SLIDE Definition tclinit Definition
sweep id
  path id
minimizetorsion minimizetorsion_bool
closed closed_bool
symmetry symmetry_int
azimuth azimuth_float
twist twist_float
endpath 
crosssection id
orientation orienation_bool
begincap begincap_bool
endcap endcap_bool
surface surface_id
texture ( texture_triple ) [( texture_triple )]
        ( texture_triple ) [( texture_triple )]

transform
    transform_statement
endtransform
endcrosssection
...
...

meshtype mesh_flag
drawsweep drawsweep_bool
drawpath drawpath_bool
solid solid_flag
surface surface_id
shading shading_flag
lod lod_flag
ribbegin "rib_string"
ribend "rib_string"
endsweep
slide create sweep id \
  -path id \
-minimizetorsion minimizetorsion_bool \
-closed closed_bool \
-symmetry symmetry_int \
-azimuth azimuth_float \
-twist twist_float \

-crosssection id \
-orientation orientation_bool \
-begincap begincap_bool \
-endcap endcap_bool \
-surface surface_id \
-texture { texture_triple } [{ texture_triple }] { texture_triple } [{ texture_triple }\

-transform { { transform_statement } \
{ transform_statement } \
... \

... \
... \

-meshtype mesh_flag
-drawsweep drawsweep_bool \
-drawpath drawpath_bool \
-solid solid_flag \
-surface surface_id \
-shading shading_flag \
-lod lod_flag \
-ribbegin "rib_string" \
-ribend "rib_string" \
SLIDE Defaults tclinit Defaults
sweep id
  path id
minimizeTorsion 0
closed 0
azimuth 0.0
twist 0.0
warplist ((1.0 1.0 0.0) ... (1.0 1.0 0.0))
endpath
crosssection circle
radius 1.0
slices 5
symmetry 1
endcaps 0
endcrosssection
drawsweep 1
drawpath 0
texture ( 0.0 0.0 ) [( 1.0 0.0 )] ( 1.0 1.0 ) [( 0.0 1.0 )]
solid SLF_SOLID
surface SLF_INHERIT
shading SLF_INHERIT
lod SLF_FULL
ribbegin SLF_NULL
ribend SLF_NULL
endsweep
slide create sweep id \
  -path id \
-minimizeTorsion 0 \
-closed 0 \
-azimuth 0.0 \
-twist 0.0 \
-warplist { 1.0 1.0 0.0   1.0 1.0 0.0  ...}  \

-crosssection circle \
-radius 1.0 \
-slices 5 \
-symmetry 1 \
-endcaps 0 \

-drawsweep 1 \
-drawpath 0 \
-texture { 0.0 0.0 } [{ 1.0 0.0 }] { 1.0 1.0 } [{ 0.0 1.0 }\
-solid $SLF_SOLID \
-surface $SLF_INHERIT \
-shading $SLF_INHERIT \
-lod $SLF_FULL \
-ribbegin $SLF_NULL \
-ribend $SLF_NULL

A sweep statement describes the result of sweeping the crosssection along the path. The path must be a bsplinecurve, beziercurve, or polyline. Each path has a set of Frenet Frames (tangents, normals, & binormals) that are used to determine how the cross section will twist along the path. The user can control the twist in five ways and these options are additive in the order given below:


There are 4 crosssection types:
crosssection polyline id
endcrosssection
Reference to a polyline.
crosssection circle
radius radius_float
orientation orientation_bool
slices slices_int
endcrosssection
A circle with slices_int sides.
radius > 0
0 = outward; 1 = inward
slices >= 3
crosssection cresent
radius radius_float
theta theta_float
thickness thickness_float
orientation orientation_bool
slices slices_int
endcrosssection
A "C" shape with an arc determined by theta and the radius.
radius > 0
theta > 0
thickness > 0
0 = outward; 1 = inward
slices >= 1
crosssection star
innerradius innerradius_float
outerradius outerradius_float
orientation orientation_bool
slices slices_int
endcrosssection
A star with slices_int points.
innerradius > 0
outerradius > 0
0 = outward; 1 = inward
slices >= 2

Example:
point p1 ( 0.0 -1.0 0.0) endpoint
point p2 (-1.0 -1.0 0.0) endpoint
point p3 (-1.0 1.0 0.0) endpoint
point p4 ( 1.0 1.0 1.0) endpoint
point p5 ( 1.0 -1.0 0.0) endpoint

beziercurve id
  order 6
controlpointlist (p1 p2 p3 p4 p5 p1)
drawcontrols1
endbeziercurve

sweep id
  path
minimizetorsion 1
closed 1
endpath
crossection cresent
radius 0.5
theta 45
thickness 0.1
slices 20
endpath
drawsweep 1
drawpath 1
endsweep

Bezier curve, control points, & Frenet frames



Closed sweep


bsplinepatch

SLIDE Definition tclinit Definition
bsplinepatch id
  drawcontrols drawcontrols_bool
uorder uorder_float
uknots uknots_float
uknotlist float
vorder vorder_float
vknots vknots_float
vknotlist float_list
controlpointlist controlpoint_idlist
uslices uslices_int
vslices vslices_int
offset distance_float connected_bool
texture ( texture_triple ) [( texture_triple )] ( texture_triple ) [( texture_triple )]
solid solid_flag
surface surface_id
shading shading_flag
lod lod_flag
ribbegin "rib_string"
ribend "rib_string"
endbsplinepatch
slide create bsplinepatch id \
  -drawcontrols drawcontrols_bool \
-uorder uorder_float \
-uknots uknots_float \
-uknotlist float \
-vorder vorder_float \
-vknots vknots_float \
-vknotlist float_list \
-controlpointlist controlpoint_idlist \
-uslices uslices_int \
-vslices vslices_int \
-offset distance_float connected_bool \
-texture { texture_triple } [{ texture_triple }] { texture_triple } [{ texture_triple }\
-solid solid_flag \
-surface surface_id \
-shading shading_flag \
-lod lod_flag \
-ribbegin "rib_string" \
-ribend "rib_string" \
SLIDE Defaults
bsplinepatch id
  drawcontrols (0)
uorder (4.0)
uknots (8.0)
uknotlist ((0 1 2 3 4 5 6 7))
vorder (4.0)
vknots (8.0)
vknotlist ((0 1 2 3 4 5 6 7))
controlpointlist   Note: these are the locations of the default control points;
              there are no corresponding slide points.
             ((-1.5 -1.5 -1.0) (-1.5 -0.5 0.0) (-1.5 0.5 0.0) (-1.5 1.5 -1.0)
              (-0.5 -1.5  0.0) (-0.5 -0.5 1.0) (-0.5 0.5 1.0) (-0.5 1.5  0.0)
              ( 0.5 -1.5  0.0) ( 0.5 -0.5 1.0) ( 0.5 0.5 1.0) ( 0.5 1.5  0.0)
              ( 1.5 -1.5 -1.0) ( 1.5 -0.5 0.0) ( 1.5 0.5 0.0) ( 1.5 1.5 -1.0))
uslices (5)
vslices (5)
texture ( 0.0 0.0 ) [( 1.0 0.0 )] ( 1.0 1.0 ) [( 0.0 1.0 )
solid SLF_SOLID
surface SLF_INHERIT
shading SLF_INHERIT
lod SLF_FULL
ribbegin SLF_NULL
ribend SLF_NULL
endbsplinepatch

A bsplinepatch statement describes a surface that approximates the control mesh defined by the controlpoint_idlist. The surface normals point in the u cross v direction.

The bsplinepatch parameters have the following constraints:

uorder, vorder > 1
uknots >= 2*uorder
vknots >= 2*vorder
uslices, vslices <= 100
uorder + #control points in the u-direction = uknots
vorder + #control points in the v-direction = vknots

The dynamic values are: uslices, vslices, and the controlpointlist points.

Example:
point p0 (1 5 12) endpoint
...
point p19 (17 6 -2) endpoint

Connectivety of the control points
bsplinepatch id
  uorder 4
uknots 9
uknotlist (0 1 2 3 4 5 6 7 8)
vorder 4
vknots 8
vknotlist (2.3 5.1 6.3 6.4 7.2 8.9 9.2 14)
controlpointlist (p0   p1   p2  p3   p4
                              p5   p6   p7   p8   p9
                              p10 p11 p12 p13 p14
                              p15 p16 p17 p18 p19) 
endbsplinepatch


bezierpatch

SLIDE Definition tclinit Definition
bezierpatch id
  drawcontrols drawcontrols_bool
uorder uorder_float
vorder vorder_float
controlpointlist controlpoint_idlist
uslices uslices_int
vslices vslices_int
offset distance_float connected_bool
texture ( texture_triple ) [( texture_triple )] ( texture_triple ) [( texture_triple )]
solid solid_flag
surface surface_id
shading shading_flag
lod lod_flag
ribbegin "rib_string"
ribend "rib_string"
endbezierpatch
slide create bezierpatch id \
  -drawcontrols drawcontrols_bool \
-uorder uorder_float \
-vorder vorder_float \
-controlpointlist controlpoint_idlist \
-uslices uslices_int \
-vslices vslices_int \
-offset distance_float connected_bool \
-texture { texture_triple } [{ texture_triple }] { texture_triple } [{ texture_triple }\
-solid solid_flag \
-surface surface_id \
-shading shading_flag \
-lod lod_flag \
-ribbegin "rib_string" \
-ribend "rib_string" \
SLIDE Defaults
bezierpatch id
  drawcontrols (0)
uorder (4.0)
vorder (4.0)
controlpointlist   Note: these are the locations of the default control points;
              there are no corresponding slide points. 
               ((-1.5 -1.5 -1.0) (-1.5 -0.5 0.0) (-1.5 0.5 0.0) (-1.5 1.5 -1.0)
                (-0.5 -1.5  0.0) (-0.5 -0.5 1.0) (-0.5 0.5 1.0) (-0.5 1.5  0.0)
                ( 0.5 -1.5  0.0) ( 0.5 -0.5 1.0) ( 0.5 0.5 1.0) ( 0.5 1.5  0.0)
                ( 1.5 -1.5 -1.0) ( 1.5 -0.5 0.0) ( 1.5 0.5 0.0) ( 1.5 1.5 -1.0))
uslices (5)
vslices (5)
texture ( 0.0 0.0 ) [( 1.00.0)] (1.0 1.0 ) [(0.01.0)
solid SLF_SOLID
surface SLF_INHERIT
shading SLF_INHERIT
lod SLF_FULL
ribbegin SLF_NULL
ribend SLF_NULL
endbezierpatch

A bezierpatch statement describes a surface that interpolates the four corner points of the control mesh and approximates the other points defined by the controlpoint_idlist. The surface normals point in the u cross v direction.

The bezierpatch parameters have the following constraints:

uorder, vorder > 1
uslices, vslices <= 100
uorder = #control points in the u-direction
vorder = #control points in the v-direction

The dynamic values are: uslices, vslices, and the controlpointlist points.

Example:
point p0 (-6 4 8) endpoint
...
point p11 (2 32 -7) endpoint

Connectivety of the control points
bezierpatch id
  uorder 4
vorder 3
controlpointlist (p0  p1  p2   p3  
                              p4  p5  p6     p7 
                              p8  p9  p10  p11)
endbezierpatch