skshapes.triangle_mesh package¶
Functions related to triangle meshes.
Submodules¶
skshapes.triangle_mesh.edge_topology module¶
Specific functions for triangle meshes.
- class skshapes.triangle_mesh.edge_topology.EdgeTopology(triangles)¶
Bases:
object
Topology of the edges of a triangle mesh.
This class is initialized from the triangles connectivity of a triangle mesh. It computes : - the edges of the mesh - the degrees of the edges (number of adjacent triangles)
For manifold edges (degree 2), it also computes : - the adjacent triangles - the adjacent points
For boundary edges (degree 1), it also computes : - the adjacent triangle - the adjacent point
Manifold edges and boundary edges can be accessed separately using the attributes manifold_edges and boundary_edges.
The indices of manifold edges and boundary edges can be accessed using the attributes is_manifold and is_boundary.
- Parameters:
triangles (
Int64[Tensor, '_ 3']
) – Triangles of the mesh
- property boundary_edges¶
Boundary edges of the mesh.
- property manifold_edges¶
Manifold edges of the mesh.
skshapes.triangle_mesh.energy module¶
Energy functions for triangle meshes.
- skshapes.triangle_mesh.energy.bending_energy(*, points_undef, points_def, triangles, edge_topology=None)¶
Compute the bending energy of the mesh.
The mathematical formulation is given in page 4 of: https://ddg.math.uni-goettingen.de/pub/HeRuSc14.pdf
The implementation provided here is a pytorch version of the cpp implementation available at: https://gitlab.com/numod/shell-energy/-/blob/main/src/bending_energy.cpp
- Parameters:
points_undef (torch.Tensor) – The undeformed points of the mesh. Shape: (n_points, dim) for a single mesh and (n_points, n_poses, dim) for a sequence of poses of the same mesh.
points_def (torch.Tensor) – The deformed points of the mesh. Shape: (n_points, dim) for a single mesh and (n_points, n_poses, dim) for a sequence of poses of the same mesh.
triangles (torch.Tensor) – The triangles of the mesh(es). Shape: (n_triangles, 3).
weight (float, optional) – The weight of the bending energy. Default: 0.001.
- Return type:
Float32[Tensor, '']
|Float32[Tensor, '_']
- skshapes.triangle_mesh.energy.membrane_energy(*, points_undef, points_def, triangles)¶
Compute the membrane energy of the mesh.
The mathematical formulation is given by equation (8) of: https://ddg.math.uni-goettingen.de/pub/HeRuWaWi12_final.pdf
The implementation provided here is a pytorch version of the cpp implementation available at: https://gitlab.com/numod/shell-energy/-/blob/main/src/membrane_energy.cpp
- Parameters:
points_undef (torch.Tensor) – The undeformed points of the mesh. Shape: (n_points, dim) for a single mesh and (n_points, n_poses, dim) for a sequence of poses of the same mesh.
points_def (torch.Tensor) – The deformed points of the mesh. Shape: (n_points, dim) for a single mesh and (n_points, n_poses, dim) for a sequence of poses of the same mesh.
triangles (torch.Tensor) – The triangles of the mesh(es). Shape: (n_triangles, 3).
- Return type:
Float32[Tensor, '']
|Float32[Tensor, '_']
- skshapes.triangle_mesh.energy.shell_energy(*, points_undef, points_def, triangles, edge_topology=None, weight=0.001)¶
Compute the shell energy.
The shell energy is defined as the sum of the membrane and weight * bending energies.
- Parameters:
points_undef (torch.Tensor) – The undeformed points of the mesh. Shape: (n_points, dim) for a single mesh and (n_points, n_poses, dim) for a sequence of poses of the same mesh.
points_def (torch.Tensor) – The deformed points of the mesh. Shape: (n_points, dim) for a single mesh and (n_points, n_poses, dim) for a sequence of poses of the same mesh.
triangles (torch.Tensor) – The triangles of the mesh(es). Shape: (n_triangles, 3).
weight (float, optional) – The weight of the bending energy. Default: 0.001.
- Return type:
Float32[Tensor, '']
|Float32[Tensor, '_']
skshapes.triangle_mesh.geometry module¶
Geometric properties of a triangular mesh.
This module provides functions to compute geometric properties of a triangle mesh such as triangle areas, edge lengths, dihedral angles, etc.
In addition, it is possible to compute these properties for a set of triangle meshes at the same time, if they have the same topology. This is useful when we need to compute the same property along a sequence of deformation of a triangle mesh.
All the function on this module are implemented in PyTorch. They take the points and triangles of the mesh as input and return a tensor with the computed property.
Arguments points can be either a tensor of shape: - (d_points, dim) for a single mesh - (n_meshes, n_poses, dim) for a sequence of poses of the same mesh
- skshapes.triangle_mesh.geometry.dihedral_angles(*, points, triangles, edge_topology=None)¶
Dihedral angles of the edges of a triangular mesh.
- Parameters:
points (
Float32[Tensor, '_ 2']
|Float32[Tensor, '_ 3']
|Float32[Tensor, '_ _ 2']
|Float32[Tensor, '_ _ 3']
) – Points or sequence of points with shape (n_points, n_poses, dim).triangles (
Int64[Tensor, '_ 3']
) – Triangles of the mesh.edge_topology (
EdgeTopology
|None
) – Edge topology of the mesh. If not provided, it will be computed from the triangles.
- Return type:
Float32[Tensor, '_']
|Float32[Tensor, '_ _']
- Returns:
The dihedral angles of the edges with shape (n_edges,) for a single mesh or (n_edges, n_poses) for a sequence of meshes.
- skshapes.triangle_mesh.geometry.edge_centers(points, triangles, edge_topology=None)¶
Centers of the edges of a triangular mesh.
- Parameters:
points (
Float32[Tensor, '_ 2']
|Float32[Tensor, '_ 3']
|Float32[Tensor, '_ _ 2']
|Float32[Tensor, '_ _ 3']
) – Points or sequence of points with shape (n_points, n_poses, dim).triangles (
Int64[Tensor, '_ 3']
) – Triangles of the mesh.edge_topology (
EdgeTopology
|None
) – Edge topology of the mesh. If not provided, it will be computed from the triangles.
- Return type:
Float32[Tensor, '_ _']
|Float32[Tensor, '_ _ _']
- Returns:
_description_
- skshapes.triangle_mesh.geometry.edge_lengths(*, points, triangles, edge_topology=None)¶
Lengths of the edges of a triangular mesh.
- Parameters:
points (
Float32[Tensor, '_ 2']
|Float32[Tensor, '_ 3']
|Float32[Tensor, '_ _ 2']
|Float32[Tensor, '_ _ 3']
) – Points or sequence of points with shape (n_points, n_poses, dim).triangles (
Int64[Tensor, '_ 3']
) – Triangles of the mesh.edge_topology (
EdgeTopology
|None
) – Edge topology of the mesh. If not provided, it will be computed from the triangles.
- Return type:
Float32[Tensor, '_']
|Float32[Tensor, '_ _']
- Returns:
The lengths of the edges with shape (n_edges,) for a single mesh or (n_edges, n_poses) for a sequence of meshes.
- skshapes.triangle_mesh.geometry.triangle_areas(*, points, triangles)¶
Areas of the triangles of a triangular mesh.
- Parameters:
points (
Float32[Tensor, '_ 2']
|Float32[Tensor, '_ 3']
|Float32[Tensor, '_ _ 2']
|Float32[Tensor, '_ _ 3']
) – Points or sequence of points with shape (n_points, n_poses, dim).triangles (
Int64[Tensor, '_ 3']
) – Triangles of the mesh.
- Return type:
Float32[Tensor, '_']
|Float32[Tensor, '_ _']
- Returns:
The areas of the triangles with shape (n_triangles,) for a single mesh or (n_triangles, n_poses) for a sequence of meshes.
- skshapes.triangle_mesh.geometry.triangle_centers(*, points, triangles)¶
Centers of the triangles of a triangular mesh.
- Parameters:
points (
Float32[Tensor, '_ 2']
|Float32[Tensor, '_ 3']
|Float32[Tensor, '_ _ 2']
|Float32[Tensor, '_ _ 3']
) – Points or sequence of points with shape (n_points, n_poses, dim).triangles (
Int64[Tensor, '_ 3']
) – Triangles of the mesh.
- Return type:
Float32[Tensor, '_ _']
|Float32[Tensor, '_ _ _']
- Returns:
The centers of the triangles with shape (n_triangles, dim) for a single mesh or (n_triangles, n_poses, dim) for a sequence of meshes.
- skshapes.triangle_mesh.geometry.triangle_normals(*, points, triangles)¶
Triangle normals of a triangular mesh.
- Parameters:
points (
Float32[Tensor, '_ 2']
|Float32[Tensor, '_ 3']
|Float32[Tensor, '_ _ 2']
|Float32[Tensor, '_ _ 3']
) – Points or sequence of points with shape (n_points, n_poses, dim).triangles (
Int64[Tensor, '_ 3']
) – Triangles of the mesh.
- Return type:
Float32[Tensor, '_ _']
|Float32[Tensor, '_ _ _']
- Returns:
The normals of the triangles with shape (n_triangles, dim) for a single mesh or (n_meshes, n_triangles, dim) for a sequence of meshes.