Skip to content

Gallery

Each example runs a component, or a pipeline of them, on one of the example meshes, from the current code: CI runs them again whenever the code they depend on changes (docs/gallery/examples.yaml).

The input is on the left, the output on the right. Drag to rotate, scroll to zoom, right-drag to pan. On a tet mesh, the cut hides the tets on one side of a plane: pick its axis and move it with the slider. Cells are colored by element quality (the AMIPS energy, on a log scale from the mesh's best element to its worst) or by region; the faces of a tet mesh's boundary are gray.

The tutorials

The first run of each tutorial.

Shortest edge collapse on the Octocat

Explained in the tutorial.

The options: docs/examples/json/shortest_edge_collapse.json
{
  "application": "shortest_edge_collapse",
  "input": "Octocat.obj",
  "output": "octocat_sec.obj",
  "target_rel": 0.1,
  "eps_rel": 0.002,
  "num_threads": 4
}

QSlim on the Octocat

Explained in the tutorial.

The options: docs/examples/json/qslim.json
{
  "application": "qslim",
  "input": "Octocat.obj",
  "output": "octocat_qslim.obj",
  "target_rel": 0.1,
  "eps_rel": 0.002,
  "num_threads": 4
}

Isotropic remeshing of the bunny

Explained in the tutorial.

The options: docs/examples/json/isotropic_remeshing.json
{
  "application": "isotropic_remeshing",
  "input": "bunny.obj",
  "output": "bunny_remeshed.obj",
  "length_rel": 0.01,
  "report": "bunny_report.json"
}

TetWild on a Thingi10K snowman

Explained in the tutorial.

The options: docs/examples/json/tetwild.json
{
  "application": "tetwild",
  "input": ["thingi_366725.stl"],
  "output": "snowman",
  "filter": "tracked",
  "stop_energy": 10,
  "num_threads": 4,
  "report": "snowman_report.json"
}

TriWild on five overlapping curves

Explained in the tutorial.

The options: docs/examples/json/triwild.json
{
  "application": "triwild",
  "input": [
    "triwild_blob1.obj",
    "triwild_blob2.obj",
    "triwild_circle.obj",
    "triwild_ellipse.obj",
    "triwild_rectangle.obj"
  ],
  "input_names": ["blob1", "blob2", "circle", "ellipse", "rectangle"],
  "output": "shapes",
  "filter": "input",
  "stop_energy": 10,
  "num_threads": 4,
  "report": "shapes_report.json"
}

A topological offset around a bar

Explained in the tutorial.

The options: docs/examples/json/topological_offset.json
{
  "application": "topological_offset",
  "input": "127891.msh",
  "output": "127891_offset",
  "offset_selection": "127891",
  "offset_output_tags": ["offset"],
  "target_distance": 0.4,
  "optimize_offset": false,
  "report": "127891_offset.json"
}

Manifold extraction of two touching spheres

Explained in the tutorial.

The options: docs/examples/json/manifold_extraction.json
{
  "application": "manifold_extraction",
  "input": "double_sphere_hole.msh",
  "output": "double_sphere_manifold",
  "tag_selection": "tag_0 | tag_1",
  "fill_tags": [],
  "write_surface": true,
  "report": "double_sphere_manifold.json"
}

A pattern carried from the dense bunny to its tet mesh

Explained in the tutorial.

The pipeline is tracking in docs/gallery/scenes.py.

Workflows

Pipelines of several components.

TetWild keeping feature curves and points

Explained in the workflow.

The pipeline is workflow_tetwild_features in docs/gallery/scenes.py.

Inputs from the wild

TetWild on inputs as they come: triangle soups with self-intersections, holes, non-manifold edges and inconsistent orientations, from Thingi10K among others.

TetWild on the Octocat

Explained in the tutorial.

The options of tetwild, on Octocat.obj
{
  "input": [
    "octocat"
  ],
  "filter": "input",
  "num_threads": 8
}

TetWild on Thingi10K 1017012 (10,524 triangles)

Explained in the tutorial.

The options of tetwild, on challenging_tetwild_1017012.stl
{
  "input": [
    "thingi_1017012"
  ],
  "filter": "input",
  "num_threads": 8
}

TetWild on Thingi10K 104188 (20,220 triangles)

Explained in the tutorial.

The options of tetwild, on challenging_tetwild_104188.stl
{
  "input": [
    "thingi_104188"
  ],
  "filter": "input",
  "num_threads": 8
}

TetWild on Thingi10K 101168 (22,824 triangles)

Explained in the tutorial.

The options of tetwild, on challenging_tetwild_101168.stl
{
  "input": [
    "thingi_101168"
  ],
  "filter": "input",
  "num_threads": 8
}

TetWild on Thingi10K 108010 (8,382 triangles)

Explained in the tutorial.

The options of tetwild, on challenging_tetwild_108010.stl
{
  "input": [
    "thingi_108010"
  ],
  "filter": "input",
  "num_threads": 8
}

TetWild on Thingi10K 1047980 (7,592 triangles)

Explained in the tutorial.

The options of tetwild, on challenging_tetwild_1047980.stl
{
  "input": [
    "thingi_1047980"
  ],
  "filter": "input",
  "num_threads": 8
}