trimesh_subdivide_loop

compas.datastructures.trimesh_subdivide_loop(mesh, k=1, fixed=None)[source]

Subdivide a triangle mesh using the Loop algorithm.

Parameters:
meshcompas.datastructures.Mesh

The mesh object that will be subdivided.

kint, optional

The number of levels of subdivision.

fixedlist[int], optional

A list of fixed vertices.

Returns:
compas.datastructures.Mesh

A new subdivided mesh.

Examples

Make a low poly mesh from a box shape. Triangulate the faces.

>>> from compas.geometry import Box
>>> from compas.datastructures import Mesh
>>> box = Box.from_corner_corner_height([0.0, 0.0, 0.0], [1.0, 1.0, 0.0], 1.0)
>>> mesh = Mesh.from_shape(box)
>>> mesh.quads_to_triangles()

Subdivide 2 times.

>>> k = 2
>>> subd = trimesh_subdivide_loop(mesh, k=k)

Compare low-poly cage with subdivision mesh.

>>> mesh is subd
False
>>> type(mesh) is type(subd)
True
>>> subd.number_of_faces() == mesh.number_of_faces() * (3 + 1) ** k
True