CS 285: SOLID MODELING
Lecture #4 -- Monday, Sept. 12, 2011
PREVIOUS < - -
- - > CS 285 HOME < - -
- - > CURRENT < - -
- - > NEXT
Brain-storming: Outline a good structure for a roller-coaster track generator
that generates an interesting, convoluted, knotted track.
For instance, your client has a rectangular field on which he wants to place a densly intertwined roller-coaster track,
but with limited use of the third dimension to keep cost down. He wants a variety of different track proposals to choose from...
If you have access to a WINDOWS machine:
A simple roller-coaster-track implementation program for WINDOWS:
see also Assignment#7 of CS 184, Spring 2011.
Today's Topics:
Knots, Celtic Knots, Space Curves, Mitred Solid Sweeps, Hamiltonian Cycles,
SLIDE Semantics, Hierarchical Scene Descriptions.
What is a (mathematical) Knot?
-- Knot table.
Structured, 2-layer knots.
-- Celtic knots.
Other structured ways for generating (polygonal, piece-wise linear) paths through 3D space:
-- Hamiltonian cycles on (regular) polyhedra (PPT);
-- Recursive formulations: e.g., Hilbert curve (PPT).
Wrap-up on Smooth Space Curves and Sweeps (look also at notes in Lecture #2)
The Frenet frame: An intrinsic coordiante system defined by a local neighborhood on a curve:
- Tangent Vector and the Normal Plane perpendicular to it.
-
Normal Vector: Points in direction in which the tangent will change.
- Binormal Vector is the cross product between Tangent and Normal.
-
Osculating Plane and Osculating Circle: best fit to a small local neighborhood of the curve.
- There is a difference between Normal and second derivative.
-
The three coordinate planes and their relations to the basic 3 coordinate vectors. (diagram).
B-reps of solid sweeps along (polygonal, piece-wise linear) paths through 3D space:
-- Examples of mitered joints (by Koos Verhoeff): 1 2 3 4 (by CHS): 5
-- Closing a loop without visual mismatch:
Note: the individual segments should look completely free of twist!
However, overall there may be some built-in torsion: if you slide
once around the whole curve, always staying in the same "face,"
you may end up on a different facet than the one that you started in! -- The simplest case (This space curve has an inherent twist of 90-degrees).
-- Proper mitring at each corner:
Default construction: Keep a cross-section of constant geometry and always positioned perpendicular to the tangent vector.
This can be achieved by constructing "ribs" in the angle-divider plane at all segment junctions,
and stretching them
by 1/cos(half-angle) in the direction of the normal vector. Now, we still have to fix the azimuth angle.
A "natural" orientation of the cross section would be based on the Frenet frame (x-axis pointing in curve-normal direction),
but it would lead to serious torsional twisting around inflection points.
A better orientation of the cross section can be chosen so as to minimize torsion;
(also called rotation-minimizing frames = RMFs):
The vertices of the cross-sectional polygon are projected forward from
one angle-divider plane to the next, parallel to the tangent vector.
-- Construction of the complete B-rep:
Once the cross-sectional ribs have been constructed at all the joints,
corresponding vertices of subsequent ribs are connected,
and the B-rep
of a (possibly twisted) track is constructed by constructing prism faces between pairs of subsequent ribs.
All these faces together will form a "water-tight" B-rep of a generalized sweep, in particular, a toridal structure of genus 1 (ONE loop).
Any smooth space curve will be sampled finely and thereby converted into a piece-wise linear approximation.
Example of a triply twisted Moebius band forming a trefoil knot
-- and a more finely segmented version with the control polygon shown.
-- and finally a smooth version with the twist properly adjusted to close that small mismatch.
SLIDE
The sweep description in SLIDE
Comments on the Semantics of SLIDE;
Hierarchical Scene Descriptions:
vertices
<-- faces <-- objects <--
instances of objects (and/or groups) <-- groups
<-- instances of groups
(Unlimited upward extension of this hierarchy).
Install SLIDE on your own computer:
A recent experience:
I found that I had to download a
different distribution than what was on
http://www.cs.berkeley.edu/~ug/slide/viewer/
Instead of
http://www.cs.berkeley.edu/~ug/slide/viewer/slide2004/slide2004.tar.gz ,
which only contained Windows-specific libraries, etc.,
I looked
http://www.cs.berkeley.edu/~ug/slide/viewer/slide2004/
and downloaded
http://www.cs.berkeley.edu/~ug/slide/viewer/slide2004/old_slide2004.tar.gz
That works fine without any need for compilation.
I just followed the
README at http://www.cs.berkeley.edu/~ug/slide/viewer/slide2004/README.
These were the successful parameter settings:
ITCL_LIBRARY c:/slide/lib/itcl3.0/itcl/library
ITK_LIBRARY c:/slide/lib/itcl3.0/itk/library
Path c:\slide\bin;c:\slide\bin\SYSTEM\NT;%Path%
SLIDE_LIBRARY "c:/slide/lib"
TCL_LIBRARY c:/slide/lib/tcl8.0/library
TK_LIBRARY c:/slide/lib/tk8.0/library
More information for the Windows system are here: http://www.cs.berkeley.edu/~ug/slide/pipeline/assignments/instructions.shtml
(see comments on "Installation")
Escape hatch: Later in the course you may use whatever software modeling environment you are comfortable with.
To help with creating your own environment:
Here's a link to the sweep framework (with gui) that we used in CS 184 last semester.
It should work on windows, mac and linux (tested on the hive cluster in soda 330).
http://eecs.berkeley.edu/~jima/sweep_skeletoncode_aug2011.zip
Comments on Homework Assignment (9/7 to 9/14):
PREVIOUS < - -
- - > CS 285 HOME < - -
- - > CURRENT < - -
- - > NEXT
Page Editor:
Carlo H. Séquin