Skip to content
Nico Schertler edited this page Jul 9, 2018 · 3 revisions

Welcome to the Generalized Motorcycle Graph wiki!

Usage Instructions

When you start the application, you will see the following window:

Startup of application

The left pane is structured into three parts: The upper part is responsible for administrative stuff like loading data or display settings. The middle part is responsible for calculating the quad layout, and the bottom part is responsible for calculating a parametrization.

Administrative Functionality

You can load a mesh by clicking the "Load Mesh" button. This will let you load either a PLY or OBJ file. During this loading procedure, the chosen loading options apply:

Loading Options

Triangle Merging: The first two settings allow you to load triangle meshes that were originally quad meshes. If "Merge Triangulated Quads" is checked, the application will try to pair neighboring triangles to form quads. This will use a very simple greedy approach, so do not expect wonders from this function. The "Angle Threshold" determines how tolerant triangle pairing is. A pair is considered valid if the corners of the resulting quad are right angles (with a maximum deviation of the chosen angle threshold).

Focus On Model: If checked, the camera will focus on the loaded model. Otherwise, the camera will stay at its current location.

Scale Texture Coordinates: If "Load Mesh for Vis" is used, determines if the texture coordinates are scaled up by a factor of 1024 / averageEdgeLength to let them represent unnormalized pixel coordinates.

Load Mesh for Vis: If you load a mesh with this button, the dataset can only be used for visualization (i.e., show the parametrization and the patches). No further processing can be done with the mesh.

Save Untextured Mesh: Saves the current mesh to a PLY file. This mesh might not be identical to the one loaded. The following modifications might have been performed:

  • Catmull-Clark subdivision if the original mesh was not a pure quad mesh
  • Faces over non-manifold edges have been removed to make all edges manifold

Save Textured Mesh: Saves the current mesh to a OBJ file with texture coordinates. The texture coordinates may not be normalized, depending on what you did to calculate them.

Display Options: The following options are available:

Display Options

  • Show Faces: Shows the facets of the loaded mesh.
  • Show Wireframe: Shows a wireframe overlay over the mesh. Only the original edges are shown. The Catmull-Clark subdivision is not shown.
  • Wireframe Thickness: Sets the thickness of the wireframe overlay.
  • Show Singularities: Display singularities as spheres with color-coded degree.
  • Singularity Size: Sets the scale of the singularity spheres.
  • Show Motorcycle Graph: Shows the motorcycle graph on top of the mesh. Different colors represent different motorcycles.
  • Show Motorcycle Indices: Shows the index of each motorcycle at the center of its path.
  • Show Fenced Regions: Shows fenced regions if they are available. Fenced regions appear as colored overlays. Green regions are regular, orange regions have degree < 4, and blue regions have degree > 4.
  • Show Fenced Region Indices: Shows the index of each fenced region at an arbitrary vertex of its boundary.
  • Show Patches: Shows the generated texture patches (faces of the motorcycle graph) as colored overlays if available.
  • Show UV: Shows the parametrization of patches as a checkerboard texture if available.
  • Show Broken Arc Constraints: For invisible seams parametrization, highlights the arc constraints that have been removed from the system by thick red edges.
  • Show Vertex Indices: Shows the index of each vertex
  • Color by Patch Index: Colors texture patches by their index
  • Color by Patch Degree: Colors texture patches by their degree. If everything went well, all patches should be white (representing a degree of 4).
  • Motorcycle Graph Thickness: Thickness of the edges of the motorcycle graph
  • Param Grid Size: Sets the scale of the checkerboard texture used to visualize the parametrization.
  • Focus on Point: Lets the user input a 3D coordinate and focuses the camera on that point.
  • Focus on Vertex: Lets the user input a vertex id and focuses the camera on that vertex.

Quad Layout Functionality

The user can calculate the quad layout with "Calculate Quad Layout" after loading a mesh. The "Quad Layout Options" determine what steps are performed:

Quad Layout Options

  • Classify All Singularities: Tries to grow fenced regions around singularities. If this step is omitted, the original Motorcycle Graph formulation will be used.
  • Merge Fenced Regions: Tries to merge fenced regions after classification in order to increase regularity.
  • Calculate Motorcycle Graph: (Re-)Calculate the motorcycle graph.
  • Deactivate Unnecessary Motorcycles: Use only a subset of the motorcycles.
  • Extract Patches: Extract patches from the motorcycle graph.
  • Split Non-Rectangular Patches: Introduce new motorcycles to split highly non-rectangular patches.

Parametrization Funcationality

If a motorcycle graph has been calculated and the faces have been extracted, the user can calculate a parametrization using "Calculate Parametrization". The following options are available:

Parametrization Options

  • Parametric Edge Length: The length in parametric space that edges should have in average.
  • Parametrization Error Threshold: For invisible seam parametriation, the error above which more arc constraints are broken and patch parametrization is re-tried.
  • Optimization Time Limit: Time limit imposed on the integer optimizer (only applicable to invisible seam parametrization)
  • Texture Layout for MIP Level up to: Specify the MIP level for which the texture layout should be calculated.
  • Invisible Seams: Calculate a parametrization with as many invisible seams as possible. This option is only available if the application has been compiled with Gurobi.
  • Pack Texture: Pack the texture patches after parametrization into a quadrilateral texture and normalize texture coordinates.

Results

If all steps are performed, the result could look as follows. This result has been generated by keeping the options at their default values.

Application with Data