Source code for geomfum.wrap.pymeshlab

"""pymeshlab wrapper."""

import pymeshlab

from geomfum.sample import BaseSampler


[docs] class PymeshlabPoissonSampler(BaseSampler): """Poisson disk sampling. Parameters ---------- min_n_samples : int Minimum number of samples to target. """ def __init__(self, min_n_samples): super().__init__() self.min_n_samples = min_n_samples
[docs] def sample(self, shape): """Sample using Poisson disk sampling. Parameters ---------- shape : TriangleMesh Mesh. Returns ------- samples : array-like, shape=[n_samples, 3] Coordinates of samples. """ ms = pymeshlab.MeshSet() ms.add_mesh( pymeshlab.Mesh(vertex_matrix=shape.vertices, face_matrix=shape.faces) ) ms.generate_sampling_poisson_disk(samplenum=self.min_n_samples) return ms.current_mesh().vertex_matrix()