PGP

Basics

1) Load an object

for instance, use this one (courtesy of Stanford university)

2) Compute a guidance direction field:

     Atlas->global->smooth direction field

3) [Optional] Visualize the direction field:

     Shaders pane: select Vectors
     attribute 1: K1
     attribute 2: K2
     click 'tensor' checkbox
     scaling: 0.005

4) Compute the periodic global parameterization

    Atlas->global->periodic global parameterization

5) Visualize the periodic global parameterization

    Shaders pane: select PGP 

6) Create the quad-mesh

    Atlas->global->create quad-dominant mesh from PGP

7) visualize the result

    Object list-> select 'surface'
    Viewer controls (top left)->selected only
    Shader pane-> mesh style

8) save the result

    File->save current
       bunny_quad.obj

Improving the result

1) re-select the initial object

  Object list->bunny

2) Generate a smoother guidance field:

  Atlas->global->smooth direction field
     smoothing: 0.99999
     nb outer iters: 6

3) Compute curl-correction

  Atlas->global->compute curl correction

4) Compute PGP with curl-correction

  Atlas->global->periodic global parameterization
    Check 'use_curl_correction'

5) Create quad-dominant mesh from PGP

To tune the result you can:

  • Change the 'wavelength' used by PGP at step 4

small wavelength generate small quads, but may yield a larger number of singularities

  • Change the 'pgp_sampling_factor' used at step 5

higher sampling factor generates smaller quads, this corresponds to the number of iso-theta and iso-phi lines used when generating the quad mesh.


Notes:

  • This is alpha software, and will probably crash often.
  • Known bugs and limitations
    • sometimes we got an ordering problem that creates twisted quads in the mesh.
    • modulo=1 is broken in this version, use modulo=4.
    • singularity fixing and mesh-to-T-Spline conversion are not available in this version.