Navigation
API > API/Plugins > API/Plugins/DynamicMesh
Description
Construct a sparse matrix representation of a valence-weighted Laplacian. The valence weighted Laplacian is defined solely in terms of the connectivity of the mesh. Note, by construction this should be a symmetric matrix.
The mesh itself is assumed to have N interior vertices, and M boundary vertices.
Row i represents the Laplacian at vert_i, the non-zero entries correspond to the incident one-ring vertices vert_j.
L_{ij} = 1/\sqrt(valence(i) + valence(j)) if vert_j is in the one-ring of vert_i L_{ii} = -Sum{ L_{ij}, j != i}
LaplacianInterior * Vector_InteriorVerts + LaplacianBoundary * Vector_BoundaryVerts = Full Laplacian applied to interior vertices.
| Name | UE::MeshDeformation::ConstructValenceWeightedLaplacian |
| Type | function |
| Header File | /Engine/Plugins/Runtime/GeometryProcessing/Source/DynamicMesh/Public/Solvers/LaplacianMatrixAssembly.h |
| Include Path | #include "Solvers/LaplacianMatrixAssembly.h" |
namespace UE
{
namespace MeshDeformation
{
template<typename RealType>
void UE::MeshDeformation::ConstructValenceWeightedLaplacian
(
const FDynamicMesh3 & DynamicMesh,
const FVertexLinearization & VertexMap,
UE::Solvers::TSparseMatrixAssembler < RealType > & LaplacianInterior,
UE::Solvers::TSparseMatrixAssembler < RealType > & LaplacianBoundary
)
}
}
Parameters
| Name | Remarks |
|---|---|
| DynamicMesh | The triangle mesh |
| VertexMap | Additional arrays used to map between vertexID and offset in a linear array (i.e. the row). The vertices are ordered so that last M ( = VertexMap.NumBoundaryVerts() ) correspond to those on the boundary. |
| LaplacianInterior | On return, the laplacian operator that acts on the interior vertices: sparse N x N matrix |
| LaplacianBoundary | On return, the portion of the operator that acts on the boundary vertices: sparse N x M matrix |