Source code for capytaine.new_meshes.export

import numpy as np
from typing import List

from capytaine.tools.optional_imports import import_optional_dependency

[docs] def mesh_to_pyvista( vertices: np.ndarray, faces: List[List[int]] ) -> "pv.UnstructuredGrid": """ Build a PyVista UnstructuredGrid from a list of faces (triangles or quads). """ pv = import_optional_dependency("pyvista") # flatten into the VTK cell‐array format: [n0, i0, i1, ..., in-1, n1, j0, j1, ...] flat_cells = [] cell_types = [] for face in faces: n = len(face) flat_cells.append(n) flat_cells.extend(face) if n == 3: cell_types.append(pv.CellType.TRIANGLE) elif n == 4: cell_types.append(pv.CellType.QUAD) else: # if you ever have ngons, you can map them as POLYGON: cell_types.append(pv.CellType.POLYGON) cells_array = np.array(flat_cells, dtype=np.int64) cell_types = np.array(cell_types, dtype=np.uint8) return pv.UnstructuredGrid(cells_array, cell_types, vertices.astype(np.float32))