MeshSmoothingOperators::ComputeSmoothing_BiHarmonic

Note: for discussion of implicit / explicit integration of diffusion and biharmonic equations see "Implicit Fairing of Irregular Meshes using Diffusion and Curvature Flow" - M Desbrun 99.

Windows
MacOS
Linux

References

Module

MeshSolverUtilities

Header

/Engine/Plugins/Experimental/GeometryProcessing/Source/MeshSolverUtilities/Public/MeshSmoothingUtilities.h

Include

#include "MeshSmoothingUtilities.h"

Source

/Engine/Plugins/Experimental/GeometryProcessing/Source/MeshSolverUtilities/Private/LaplacianMeshSmoother.cpp

Syntax

namespace MeshSmoothingOperators
{
    void MeshSmoothingOperators::ComputeSmoothing_BiHarmonic
    (
        const ELaplacianWeightScheme WeightingScheme,
        const FDynamicMesh3 & OriginalMesh,
        const double Speed,
        const double Weight,
        const int32 NumIterations,
        TArray< FVector3d > & PositionArray
    )
}

Remarks

Note: for discussion of implicit / explicit integration of diffusion and biharmonic equations see "Implicit Fairing of Irregular Meshes using Diffusion and Curvature Flow" - M Desbrun 99. although the following suggests an additional source term could be included in the implicit solve for better accuracy. or "Generalized Surface Flows for Mesh Processing" Eckstein et al. 2007 This is equivalent to taking a single backward Euler time step of bi-harmonic diffusion where L is the Laplacian (Del^2) , and L^T L is an approximation of the Del^4.

dp/dt = - k*k L^T L[p]

p{n+1} + dt * k * k L^TL [p^{n+1}] = p{n}

re-write as L^TL[p^{n+1}] + weight * weight p{n+1} = weight * weight p{n} with weight = 1 / (k * Sqrt[dt] )

The result is returned in the PositionArray

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