Skip to content
Sébastien Mestrallet edited this page Jan 10, 2025 · 7 revisions

M. Livesu, N. Vining, A. Sheffer, J. Gregson, and R. Scateni, "PolyCut: Monotone Graph-Cuts for PolyCube Base-Complex Construction", ACM Transactions on Graphics, Volume 32, Issue 6 (SIGGRAPH ASIA 2013 Papers), p.853‑860, doi: 10.1145/1186562.1015810

Project page : http://www.cs.ubc.ca/labs/imager/tr/2013/polycut/

Patented, see https://patentscope.wipo.int/search/en/detail.jsf?docId=WO2015061914 (but "withdrawn" status at European Patent Office since 2020)

Demo executables

http://www.cs.ubc.ca/labs/imager/tr/2018/HexDemo/

There is also an executable for their untangler (Edge-Cone Rectification)

Important

Executable provided for Windows only.

Important

This is not written in their webpage nor their README: the demo executable polycut.exe only processes tet-meshes with < 300k cells.

Important

Contrary to what is written in the 8th clause of their software license agreement, the demo is available for 7 days, not 30. You will need a new Windows VM if you exceed 7 days since first use. Or try to remove the whole 'University of British Columbia' folder inside Documents\, which contains PolyCut\license.dat?

Input file format

The required file format for the polycut.exe inputs is VTU (.vtu): VTKFile of type UnstructuredGrid and version 0.1.

They provide a MEDIT-to-VTU converter, mesh2vtu.exe. First positional argument is the input VTU, the second is the output MEDIT/Gamma (.mesh).

Important

This is not written in their README : the input MEDIT tetrahedral mesh must contain the surface (triangle) mesh in the same file. See this program and this commit to generate such a mesh with Geogram.

Note

One of the provided .vtu example meshes (asm_tets) have raw binary embedded. meshio can read but cannot write such VTU files (not valid XML, see issue #483), but mesh2vtu.exe and other example meshes shows that polycut.exe accepts other kinds of VTUs, those with a base64 section instead of embedded raw binary. So meshio could be used to substitute mesh2vtu.exe.

Pipeline

From their pipeline.bat :

polycut.exe tet-mesh.vtu tet-mesh_segm.vtu 3
# for a compactness factor of 3

cusy2.exe tet-mesh_segm.vtu tet-mesh_segm_deform.vtu
# also writes 'segmentation_XYZ.obj' and 'segmentation.mtl'

optimizer.exe tet-mesh_segm_deform.vtu tet-mesh_segm_deform_opt.vtu 100
# for an element size (min hex size) of 100

integerizer.exe tet-mesh_segm_deform_opt.vtu hex-mesh.vtu

vtu2mesh.exe hex-mesh.vtu hex-mesh.mesh

untangler.exe --in hex-mesh.mesh`
# writes 'hex_features.obj', 'hex_scaled.mesh', 'hex_smooth.mesh', 'hex_smooth_scaled.mesh'
# and (most of the time?) 'hex_highest_quality.mesh'

Output file format

Polycube labeling

I do not know if it is possible to retrieve the polycube labeling from the output of polycut.exe (*_segm.vtu).

Like Evocube, in validity‐first‐polycube‐labeling the labeling is extracted from the material names of segmentation_XYZ.obj, the latter being generated by cusy2.exe.

Material name Corresponding label
red 0 (+X)
darkred 1 (-X)
green 2 (+Y)
darkgreen 3 (-Y)
blue 4 (+Z)
darkblue 5 (-Z)

Hexahedral mesh

Output hexahedral meshes are in the MEDIT (.mesh) format.