42 lines
1.1 KiB
C
42 lines
1.1 KiB
C
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "CoreMinimal.h"
|
|
|
|
|
|
/**
|
|
* Types of Laplacian weights.
|
|
* This enum is used to indicate which type of Mesh Laplacian should be used in various Mesh Deformation solvers.
|
|
* See LaplacianMatrixAssembly.h for specifics
|
|
*/
|
|
enum class ELaplacianWeightScheme
|
|
{
|
|
/** Weight on each vertex is 1 */
|
|
Uniform,
|
|
/** Weight on each vertex is 1/N, where N is valence of vertex */
|
|
Umbrella,
|
|
/** Weight on each vertex is 1/ Sqrt(Valence + Nbr_Valence) */
|
|
Valence,
|
|
/** Mean-Value weight on each vertex, where Mean Value weight is defined by formula 9 in https://www.inf.usi.ch/hormann/papers/Floater.2006.AGC.pdf */
|
|
MeanValue,
|
|
/** */
|
|
Cotangent,
|
|
/** */
|
|
ClampedCotangent,
|
|
/** Cotan for Intrinsic Delaunay triangulation*/
|
|
IDTCotanget,
|
|
};
|
|
|
|
|
|
/**
|
|
* Utility to map the enum names for debuging etc.
|
|
*/
|
|
FString DYNAMICMESH_API LaplacianSchemeName(const ELaplacianWeightScheme Scheme);
|
|
|
|
|
|
/**
|
|
* @return true if Laplacian scheme produces a symmetric matrix
|
|
*/
|
|
bool DYNAMICMESH_API bIsSymmetricLaplacian(const ELaplacianWeightScheme Scheme);
|