UE::MeshDeformation::ConstructCotangentLaplacian

Construct a sparse matrix representation using a pre-multiplied cotangent-weighted Laplacian.

Windows
MacOS
Linux

References

Module

DynamicMesh

Header

/Engine/Plugins/Experimental/GeometryProcessing/Source/DynamicMesh/Public/Solvers/LaplacianMatrixAssembly.h

Include

#include "Solvers/LaplacianMatrixAssembly.h"

Syntax

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
        )
    }
}

Remarks

Construct a sparse matrix representation using a pre-multiplied cotangent-weighted Laplacian.

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.

Parameters

Parameter

Description

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

Help shape the future of Unreal Engine documentation! Tell us how we're doing so we can serve you better.
Take our survey
Dismiss