openalea.cellcomplex.property_topomesh.property_topomesh_optimization.property_topomesh_vertices_deformation¶
-
openalea.cellcomplex.property_topomesh.property_topomesh_optimization.property_topomesh_vertices_deformation(topomesh, iterations=1, omega_forces={'taubin_smoothing': 0.65}, sigma_deformation=0.1, gradient_derivatives=None, gaussian_sigma=10.0, resolution=(1.0, 1.0, 1.0), target_normal=None, target_areas=None, fix_borders=False)[source]¶ Optimize the positions of the mesh vertices along multiple criteria.
The ‘barycenter’ property of the elements of degree 0 is updated following a different “force” vector for each vertex. This vector is computed as the opposite of the gradient of a composite energy functional defined over the mesh. The weights of the energy terms are to be specified in the function arguments. The deformation is constrained to a possibly small range around each vertex.
The function can for instance be used to apply a smoothing to the mesh (laplacian, curvature flow, taubin), or for more complex optimization such as planarization of interfaces, or triangle quality enhancement.
Parameters: - topomesh (
openalea.cellcomplex.property_topomesh.PropertyTopomesh) – The structure on which to apply the optimization. - iterations (int) – The number of times the deformation is repeated.
- omega_forces (dict) –
- The weights (float) associated to each energy term:
- regularization: energy optimizing triangle eccentricity
- area: energy optimizing triangle size homogeneity
- gradient: energy pushing vertices towards local maxima of a gradient field
- laplacian: energy regularizing cell edges towards straight lines
- planarization: energy regularizing cell interfaces towards planar surfaces
- epidermis_planarization: energy regularizing outer cell surfaces towards planar surfaces
- convexity: energy regularizing outer cell surfaces towards spherical surfaces
- laplacian_smoothing: energy regularizing the mesh using a Laplacian operator
- gaussian_smoothing: energy regularizing the mesh using a Gaussian operator
- curvature_flow_smoothing: energy regularizing the mesh using a Cotangent Laplacian operator
- taubin_smoothing: energy regularizing the mesh using two-pass Gaussian operator
- sigma_deformation (float) – The maximal allowed amplitude of a deformation of a vertex at each iteration.
- gaussian_sigma (float) – The standard deviation used to compute gaussian weights in gaussian/taubin smoothing.
- gradient_derivatives (
openalea.image.SpatialImage) – The 3 derivatives of the gradient field (x, y, z) used for gradient optimization. - target_normal (
numpy.array, optional) – The normal of the desired plane for the interface planarization optimization. If None, the direction linking cell centers is chosen. - target_areas (
numpy.array, optional) – The values of areas to which the mesh triangles should tend in the area optimization. If None, the average area value is chosen. - fix_borders (bool) – Whether the border vertices should be fixed or not (in the case of open surfaces).
Returns: None
Note
The PropertyTopomesh passed as argument is updated.
- topomesh (