3D-Modeler
John Spatz & Kris Schmelzer
Surfaces of Revolution
A surface of revolution is a surface generated by rotating
a two-dimensional curve about an axis.
This rotation will create a 3D object.
Eric W. Weisstein. "Apple." From MathWorld--A
Wolfram Web Resource. http://mathworld.wolfram.com/Apple.html
The above shows a simple surface of revolution called "The Apple". This
surface of revolution was defined by Johannes Kepler.
It consists of more than half of a circular arc rotated about an axis passing
through the endpoints of the arc.
The above is taken from our C++ code to create a surface
of revolution. The image on the left is the resulting wireframe image
that our
algorithm creates, and the image on the right, is the points it used to
create the wireframe.
To accomplish the creation of the above object, an input file is read in.
This imput file contains two types of information:
1. The number of points to be used initially to create the two-dimensional
curve that is to be rotated.
2. Each of those points coordinates, written in X, Y form.
For example, the above objects input file is displayed below in its entirety.
9
0 0
3 1
4 2
7 3
10 4
7 5
4 6
3 7
0 8
The first line would be read in as the number of points, and each subsequent
line thereafter would be read in as a set of X and Y values that make
up the first, second, third and so on points. The program will then
take the first point in the file (in the above case (0, 0)) and rotates this
point
around the y-axis in a complete 360 degree circle, creating a new point
in 10 degree intervals and storing these points into an array.
This process is then repeated for every subsequent point in the file, in
the end this will give you the image on the right.
You then have the option, by right clicking to bring up a menu, to connect
these points with solid lines, thereby creating a wireframe of the object
(seen on the left).
More Examples:
Input File
Problems encountered:
Doing the computations
for an object that doesn't have its first
and last points connected to the y-axis is difficult. That is why our
examples and our code deal with objects that have points incident with the
y-axis.
A Bad Input File Example
Extrusion
"Extrusion is the simplest of a set of modeling transformations which involve
moving a uniform cross-section along a path in space. Thus, extrusion involves
a 2D shape (s) and a straight line-segment (p1-p2) in space, as shown in the
figure at right. The 2D shape determines the cross-section of the extruded
form. The line-segment marks the starting and ending points of the extruded
form in space. The resulting form is generated in two steps. In the
first step, the cross-section shape is duplicated to create the top and bottom
of the result. In the second step, the top and bottom are joined together
with parallel sides. Faces are generated in each case such that they face
outward. " - http://online.caup.washington.edu/courses/arch481/00HomePage/1.Tapestry%20Reader/1.Data/4.Modeling/1.Extrusion.html
Example of Extrusion:
Input File
A more complicated version of extrusion is known as Sweeping. Sweeps,
while in concept very similar to extrusions, can involve a much more complicated
path.
More complicated Example:
http://online.caup.washington.edu/courses/arch481/00HomePage/1.Tapestry%20Reader/1.Data/4.Modeling/3.Sweeps.html
In the above example known as the form•Z sweep, "The red rectangle
is going to be swept along the splined path to form a complex meshed object
using Nurbs. The resulting form is generated by moving the cross-section
in steps along the path, each time perpendicular to the local path segment,
and connecting it with the polygons already generated. "
- http://online.caup.washington.edu/courses/arch481/00HomePage/1.Tapestry%20Reader/1.Data/4.Modeling/3.Sweeps.html
Again we will take input from a input file. First we will extrude that surface
by some line that will also be given in the file. This will bascially construct
a 3D version of the object. Then we will extend this to be extruded by multiple
lines. So that the object is not only a straight prism, but a combination
of movement(turns in the shape).
For this we make the assumption that the object will be extruded by straight
lines.
Problems Encountered:
When extruding a surface by something other than a straight line
there is added difficulty because you have to figure out how to connect the
polygons when the direction of the extruding is changed. This is
illistrated in the complex image above.
A Bad Input File Example
Lofting
The concept of lofting is simply connecting two polygonal contours together
with a triangular mesh, producing a surface. However, actually connecting
the surfaces using a triangle mesh is only needed when there is a difference
in the number of points used to define the surface. Lofting is often
referred to as skinning or surface reconstruction. Lofting can be used
to create complicated objects projected along paths with varying cross sections.
Basic Lofting can be broken in two important sections:
Correspondence & Tiling
Correspondence is matching the contours of your object that should be connected.
Tiling is the actual generation of the triangle mesh or strip that connects
those contours.
For our example, we simply used surfaces that are defined using the same
number of points for each.
Again input will be read from a file, but in this instance for multiple
polygons. These polygons will then be connected to make a 3D object.
A few assumptions are made in order for this to work:
1. The
polygons will have the same number of sides.
2. The points will be ordered
in the same way (clockwise or counter-clockwise).
3. The polygons that are entered
must be entered in sequential order.
A simple lofting example:
Another Example:
Input File
More Complicated Lofting Example:
"Lofting between circles of different sizes and numbers of segments. "
image taken from http://www.raudins.com/glenn/projects/lofting/default.htm
Problems Encountered:
Correspondence is one of the main difficulties. Finding a
correspondence between polygons that do not have the same amount of
vertices so that a triangle mesh can be made is difficult.
Useful Links
Work Log
Source Code
David Meyers
Dissertation (Lofting)
Henry
Fuchs Paper on Lofting
Surfaces
of Revolution
Mathworld
Surfaces of Revolution Images
Extrusion
and Sweeps Information
Information
on Lofting