Skip to content

Orbifold Tutte Embeddings

Implementation of the Orbifold Tutte Embedding technique from Noam Aigerman and Yaron Lipman.

This method embeds a sphere-topology mesh into an Euclidean orbifold, that is a chart that paves the plane up to some rotation. In practice, it defines cuts between a set of prescribed cones on the surface which become virtual seams. The parametrization's distortion only depends on the position of the cones.

They are four ways to perform such an embedding:
1) Square orbifold : 3 cones of \(\pi/2\), \(\pi\) and \(\pi/2\)
2) Diamond orbifold : 3 cones \(2\pi/3\), \(2*\pi/3\) and \(2*\pi/3\)
3) Triangle orbifold : 3 cones of \(\pi\), \(2\pi/3\) and \(\pi/3\)
4) Parallelogram orbifold : 4 cones of \(\pi\), \(\pi\), \(\pi\) and \(\pi\)

A visual description of the 4 types of Euclidean orbifolds and how their sides correspond to one another

Four types of orbifolds (respectively square, diamond, triangle and parallelogram). Figure from the paper.

Note

Only the "square" and the "parallelogram" are currently implemented in mouette.

Usage

import mouette as M
mesh = M.mesh.load(args.model)
orbifold_type = "parallelogram" # 4 cones, or "square" for 3 cones
orbTutte = M.parametrization.OrbifoldTutteEmbedding(mesh, orbifold_type, cones)
orbTutte.run()

OrbifoldTutteEmbedding(mesh, orbifold_type, cones, use_cotan=True, verbose=False, **kwargs)

Bases: BaseParametrization

Orbifold Tutte's embedding generalizes Tutte's embedding to spherical topologies. Using periodic conditions on a virtually defined boundary, it creates a parametrization that is a tiling of the plane, leading to a seamless parametrization of meshes with sphere topologies

References

[1] Orbifold Tutte Embeddings, Noam Aigerman and Yaron Lipman, ACM Transaction on Graphics, 2015

Parameters:

Name Type Description Default
mesh SurfaceMesh

the mesh to embed. Should be a surface with disk topology.

required
orbifold_type str

which orbifold to project to. Choices are ["square", "diamond", "triangle", "parallelogram"].

required
cones iterable

Cone points that define the virtual boundary (three or four points, depending on the orbifold type). Need to be valid vertex indices. If not specified, will be generated automatically. Defaults to None.

required
use_cotan bool

whether to use Tutte's original barycentric embedding [1], or use cotangents as weights in the laplacian matrix ([2]). Defaults to True.

True
verbose bool

verbose mode. Defaults to True.

False

cones_as_pointcloud property

Returns the cone distribution as a point cloud

flat_mesh property

A flat representation of the mesh where uv-coordinates are copied to xy.

Returns:

Name Type Description
SurfaceMesh SurfaceMesh

the flat mesh

OrbifoldType

Bases: Enum

The four types of Euclidean orbifold.
SQUARE = 1
DIAMOND = 2
TRIANGLE = 3
PARALLELOGRAM = 4