Surface Subdivision
This project involved reading in a control mesh, and then subdividing each
resulting face (which must be a triangle) into four more faces. The vertices
of these new faces are then re-weighted with respect to neighboring vertices so
that the entire surface becomes smoother. I then implemented some additional
features, such as the ability to smooth shade or texture map the subdivided
surface, the ability to move vertices in the control mesh in a number of ways
and have those changes change the shape of the subdivided mesh as well. Also
implemented was detail elision, so that when the surface is moved (it is drawn
into an interactive OpenGL environment) fewer polygons have to be drawn at each
step of the motion. Subdivision was accomplished by storing hierarchical
meshes, where each mesh stores vertices, edges, and faces, all of which know
the corresponding things around them. In this way changes to parent meshes
can be peculated down to child meshes.
Implemented Features
- Subdivision
- Redefine the control and/or smooth surface meshes
- Smooth shading
- Textures
- Orthogonal dragging
- Normal dragging
- Neighborhood dragging
- Multiple vertex dragging
- Detail elision
Images
Spaceship
This spaceship is a manipulated cylinder, where the vertices at one end are all
pulled together, so that a point can be formed that doesn't get rounded out,
and the the rest of the surface is just done doing other vertex manipulation.
The texture is mapped to the original cylinder, and then manipulated along with
the rest of the object.
Landscape
The landscape was made just by getting a plane that was fairly subdivided, and
then manipulating some of the vertices to give it heights in different places,
so that the mountains (in the texture) are high, and the water is low.
Other Images
This is just a simple mesh, where the control mesh is represented by green
edges and vertices, and the subdivided mesh by white edges and vertices. This
is after two subdivisions, and does a good job of showing the vertex
repositioning as well.
This image shows how vertices that are dragged in the control mesh effect faces
in the subdivided mesh, in this case a single vertex was dragged out along it's
normal. The surface is also smooth shaded.