Advanced
Topics in Computer Graphics
Mesh Editing exercise
IMPORTANT:
Please contact me by e-mail to schedule a date for final submission. You need
to come to my lab (Schreiber 002) and present the project, as well as to submit
the source code with some documentation (user manual and your algorithmic
decisions). The submission has to be next week
(15–19/6).
IMPORTANT: You must
submit a design document right after Passover vacations (April, 27). The
document should contain 3-4 pages
where you describe what are you going to implement, the precise choice of your
algorithms (such as hierarchy strategy, any special
data structures, the numerical solver you have chosen, etc.). Of course we
recommend you to start implementing as well, since the end
of the semester usually approaches faster than one expects.
General:
The goal of this exercise is to
design and implement a small editing system for 3D triangle meshes. The user
should be able
to load a mesh from a VRML file and manipulate its geometric shape by selecting
and moving vertices. The deformation that
is caused to the mesh surface as a result of moving vertices, should be smooth,
i.e. the resulting mesh should approximate
a smooth surface. Moreover, several levels of control should be available: on
the coarsest level, moving a vertex causes
a "large" (global) change to the surface, and on the finest level,
only a small local change should happen. This is meant for making
the modeling process simpler for the artist: on the course level, he/she shapes
the overall look of the mesh, and on finer level
smaller and finer details are shaped.
The method:
The problem you need to solve
is how to deform the mesh surface smoothly when one mesh vertex is moved by the
user.
The deformation should be proportional to the "level" selected by the
user. Your assignment is to use relative coordinates
for this purpose. Get a detailed explanation here.
Download:
Mesh renderer sources (containing GLUI library) and
gtbmouse project
(if you need to recompile it)
Sample VRML files and some
more files
We provide a Visual Studio
6.0 project that loads and renders meshes. The project uses OpenGL for
rendering,
GLUT and GLUI for managing the windows and gui. If you don't have GLUT
installed, follow the links below
to obtain it. The GLUI library and header are included in the project, but you
may want to look at the documentation
on the GLUI homepage, to
learn how to use it and add new controls to the application (it is very
simple).
The application allows to load
a triangle mesh from a VRML file and render it in different modes (solid,
wireframe,
solid with edges, draw vertices as small balls, etc...). To choose specific
rendering options, work with the Rendering Modes menu.
Navigation: to rotate
the mesh, hold down the left mouse button and move the cursor. To zoom in/out,
also hold down the Ctrl key.
To move the mesh, hold down the Shift key.
Picking: the also code
provides a basis for "picking" vertices: you can choose a vertex by
right-clicking on it (the selected vertex is marked by
a yellow ball), and move it around while holding the right mouse button (only
the vertex itself moves right now, you need to implement the
deformation of the rest of the mesh). When you also hold down the Ctrl key, the
picked vertex moves in the viewing direction (orthogonal
to the screen); if you don't hold Ctrl, the vertex moves in the plane parallel
to the screen.
Output: you can also
save the result in VRML format or get a screen capture to a PPM image (can be
viewed with Irfanview). To do this,
open
the Save As... menu, enter the filename you want (and Enter) and click on the
appropriate button.
To learn about the modules and the data structures in the project, refer to the readme.txt file.
You can of course use another
renderer and/or write your own application if you like. The provided
application is by no means guaranteed
to be bug-free or particularly efficient. It can be a reasonable basis to
start, and you can modify and augment it at your own will.
Links:
Here you can download the GLUT
library if you don’t have it:
GLUT page
GLUT for Windows
GLUI homepage (additional
GUI such as buttons, arcballs, checkboxes, etc., built on GLUT)
There you can also find references to books on OpenGL. Recommended
crash-course
in OpenGL and GLUT – OpenGL Superbible (available at
the library).
Irfanview (a viewer for PPM and PGM
images)
TAUCS (library
for solving least-squares problems)
Contact:
If you have questions about the
code (or if you find serious bugs), contact Olga Sorkine:
e-mail: sorkine@tau.ac.il
Phone: 03-6405360
Schreiber 002
You can also ask other
questions, but keep in mind that this is a research assignment, so I don't
know the answers to many questions, it's up to you to invent them :-)