Harrison McKenzie Chapter
CalPoly, San Luis Obispo
While polygonal models have many good properties, the discretized nature of the surface takes a lot of data to represent. This translates into expensive rendering operations due to data transfer, and expensive physics computations.
In order to reduce the amount of data being processed, polygonal meshes may be simplified. The goal is to reduce the amount of data the mesh uses to represent an object while perserving the shape and character of the object.
The goal of this project is to create a plugin to Maya which makes it easy for artists to selectively reduce the complexity of some geometrical elements in a scene. In this project, a priority is placed on the application of this tool for creating resulting meshes useful for physical simulation.
After the mesh is acquired, the plugin associates a matrix Q with all vertices using the Fundamental Error Quadric K matrix for all that vertices' faces. The cost for each potential edge collapse can be found as where is the vertex location to collapse to.
Using these costs, a min-heap can be built which selects for the lowest cost edge to collapse. As collapses are performed, the integrity of the heap is ensured by readjusting the edges which have been affected by the edge collapse.
In the current implementation, the tool harvests the selected scene data from the Maya state, and uses it to generate sets of edge, face, and vertex data. Once this has been performed, the program does a selected number of collapses to the mesh, and writes it back to the Maya state.
Additionally, the API documentation is nearly non-existent. The best things that exist are the function and class documentation themselves, which are little more than the function prototypes. Further, that documentation is rife with occational copy/paste errors and misspellings.
Specifically to this project, Maya's organization of mesh components (vertices, edges, and faces) is difficult to work with when it is mutated. As all these components are indexed (a sound system, if by itself) an edge collapse can trigger a set of index remappings which are difficult to predict. As the documentation about the functionality is almost non-existent, its is very difficult to do consistently (I found there to be non-obvious edge case remappings based on experimentation in Maya). To make matters worse, the RTTI/Iterator system which Maya employs makes it difficult to store and compare some objects to one another. Even comparing two sets of MObjects (The base RTTI object handle), acquired in the same manner, produces unexpected results.
This document was generated using the LaTeX2HTML translator Version 2002-2-1 (1.71)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html -split 0 web.tex
The translation was initiated by on 2008-12-12