Assignment #3:
Mesh Deformation
Objective:
Develop and implement a mesh deformation tool. Select a linear deformation method among those taught in class and implement a variation of it. Experiment with using a linear solver library.
Tasks:
1. Develop a linear mesh deformation tool based on local coordinates.
2. Use an off-the-shelf linear solver (SuperLU) to efficiently solve the resulting linear system(s).
3. Develop a user friendly API and an effective visualization mechanism for your algorithm.
Instructions:
1. Develop an anchor based mesh deformation tool for closed manifold meshes. You can use either a Laplacian (vertex based) approach or a transformation gradient (triangle based) one. Start by implementing a method which does not support rotations. Then introduce a mechanism for rotation propagation throughout the region of influence (ROI).
2. For solving the linear system you obtain use the SuperLU solver built into Graphite. Pay attention to efficiency.
3. You can limit your method to changing one anchor at a time (this way you can have a fixed rotation axis for you ROI).
4. Bonuses:
1. If you make your method realtime (deformation as you go) you can get up to 10 extra points.
2. If you make the method handle general rotations (not fixed axis) you can get up to 10 extra points.
3. Note: please make sure your basic algorithm works before implementing the bonuses. There will be no bonus points given if the basic method has problems.
5. Your API should support the following mesh operations, performed repeatedly and in any order (pay attention to API ease of use):
1. Specify an anchor vertex or triangle.
2. Specify a region of influence.
3. Perform a deformation by moving the anchor around. Think of a mechanism to prescribe/change anchor normal. You can also provide a mechanism where the user specifies anchor rotations only (no translation).
6. To visualize the deformation process and ensure correctness you should provide the following visualization tools. You should provide an interface option (e.g. menu button) allowing the user to switch the visualization on and off.
1. Highlight the ROI and anchor. Highlight the normal of the anchor and ROI boundary.
2. Show the normal for the vertices/triangles in the ROI after propagation.
3. Please provide any additional useful visualizations you can think of.
7. Provide a README explaining clearly how to run your method & activate all the different features it has.
8. The assignment should be done separately by each student. If you want to do the assignment together with another student, you would need to implement the two bonuses for no extra credit and add extra features (contact Alla) for a bonus.
9. While you should work independently, it is a good idea to compare your results with other students, to verify code correctness.
Submission:
Send an email to Ian (iansouth@cs.ubc.ca) with the subject “DGP assign3” containing a zip file with your code. Submit your sources only – you must include the entire source-tree for your module.
Don't forget to include a README file explaining how to run your code.
In the email write your name and contact e-mail address.
All email should be received by Friday 10/31/08 at 23:59.
No late submissions will be accepted.
This assignment is 15% of your final grade.
|
|
|
|
|
|