Navigation
API > API/Plugins > API/Plugins/DynamicMesh
Overloads
| Name | Remarks | Include Path | Unreal Specifiers |
|---|---|---|---|
void UE::MeshDeformation::ConstructCotangentLaplacian
(
const FDynamicMesh3& DynamicMesh, |
Construct a sparse matrix representation using a cotangent-weighted Laplacian. | Solvers/LaplacianMatrixAssembly.h | |
void UE::MeshDeformation::ConstructCotangentLaplacian
(
const FDynamicMesh3& DynamicMesh, |
Construct a sparse matrix representation using a pre-multiplied cotangent-weighted Laplacian. | Solvers/LaplacianMatrixAssembly.h |
UE::MeshDeformation::ConstructCotangentLaplacian(const FDynamicMesh3 &, const FVertexLinearization &, UE::Solvers::TSparseMatrixAssembler< RealType > &, UE::Solvers::TSparseMatrixAssembler< RealType > &, UE::Solvers::TSparseMatrixAssembler< RealType > &)
Description
Construct a sparse matrix representation using a cotangent-weighted Laplacian. but returns the result in two symmetric parts.
The mesh itself is assumed to have N interior vertices, and M boundary vertices.
(AreaMatrix^{-1}) * L_hat = Cotangent weighted Laplacian.
AreaMatrix^{-1} * ( LaplacianInterior * Vector_InteriorVerts + LaplacianBoundary * Vector_BoundaryVerts) = Full Laplacian applied to interior vertices.
| Name | UE::MeshDeformation::ConstructCotangentLaplacian |
| 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::ConstructCotangentLaplacian
(
const FDynamicMesh3 & DynamicMesh,
const FVertexLinearization & VertexMap,
UE::Solvers::TSparseMatrixAssembler < RealType > & AreaMatrix,
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. |
| AreaMatrix | On return, the mass matrix for the internal vertices. sparse N x N matrix |
| LaplacianInterior | On return, the laplacian operator that acts on the interior vertices: sparse N x N matrix - symmetric |
| LaplacianBoundary | On return, the portion of the operator that acts on the boundary vertices: sparse N x M matrix |
UE::MeshDeformation::ConstructCotangentLaplacian(const FDynamicMesh3 &, const FVertexLinearization &, UE::Solvers::TSparseMatrixAssembler< RealType > &, UE::Solvers::TSparseMatrixAssembler< RealType > &, const bool)
Description
Construct a sparse matrix representation using a pre-multiplied cotangent-weighted Laplacian. NB: there is no reason to expect this to be a symmetric matrix.
This computes the laplacian scaled by the average area A_ave: ie. LScaled = A_ave/(2A_i) ( Cot alpha_ij + Cot beta_ij )
The mesh itself is assumed to have N interior vertices, and M boundary vertices.
LaplacianInterior * Vector_InteriorVerts + LaplacianBoundary * Vector_BoundaryVerts = Full Laplacian applied to interior vertices.
| Name | UE::MeshDeformation::ConstructCotangentLaplacian |
| 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::ConstructCotangentLaplacian
(
const FDynamicMesh3 & DynamicMesh,
const FVertexLinearization & VertexMap,
UE::Solvers::TSparseMatrixAssembler < RealType > & LaplacianInterior,
UE::Solvers::TSparseMatrixAssembler < RealType > & LaplacianBoundary,
const bool bClampWeights
)
}
}
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, scaled laplacian operator that acts on the interior vertices: sparse N x N matrix |
| LaplacianBoundary | On return, scaled portion of the operator that acts on the boundary vertices: sparse N x M matrix |
| bClampAreas | Indicates if (A_ave / A_i) should be clamped to (0.5, 5) range. in practice this is desirable when creating the biharmonic operator, but not the mean curvature flow operator |