Spline Nodes
The spline nodes are spline curves and surface patches. They also include the sweep primitive.
bsplinecurve
SLIDE Definition |
tclinit Definition |
|
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 |
|
|
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 |
|
|
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:
1) minimizetorsion - minimizes the twisting of the intrinsic Frenet frame.
2) closed - specifies that the path is closed.
This changes the Frenet frames so that the first and last Frenet
frames are aligned using the symmetry of the crosssection.
For example, a square has symmetry 4, so when a path is
closed the Frenet Frames should be aligned within
(360/4)=90 degrees about the tangent.
3) azimuth - angle about the tangent that all Frenet frames will be rotated by.
4) twist - angle about the tangent that specifies the overall amount of twist from the first Frenet frame to the last.
5) warplist - sets each twist angle explicitly:
Three values are associated with each control point: scale in the
x-direction, scale in the y-direction, and a twist angle.
The scale values are for warping the swept object.
A path with N control points has a warplist that looks like:
warplist ( (sx0 sy0 an0) (sx1 sy1 an1) ... (sxN syN anN) )
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 |
|