UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
UE::Geometry::TAttrBasedQuadricError< RealType > Class Template Reference

#include <QuadricError.h>

+ Inheritance diagram for UE::Geometry::TAttrBasedQuadricError< RealType >:

Public Types

typedef RealType ScalarType
 
typedef TVolPresQuadricError< RealType > BaseClass
 
typedef TQuadricError< RealType > BaseStruct
 
- Public Types inherited from UE::Geometry::TVolPresQuadricError< RealType >
typedef TQuadricError< RealType > BaseStruct
 
- Public Types inherited from UE::Geometry::TQuadricError< RealType >
typedef RealType ScalarType
 

Public Member Functions

 TAttrBasedQuadricError (const TVector< RealType > &P0, const TVector< RealType > &P1, const TVector< RealType > &P2, const TVector< RealType > &N0, const TVector< RealType > &N1, const TVector< RealType > &N2, const TVector< RealType > &NFace, const TVector< RealType > &CenterPoint, RealType AttrWeight)
 
 TAttrBasedQuadricError ()
 
 TAttrBasedQuadricError (const TAttrBasedQuadricError &Aother, const TAttrBasedQuadricError &Bother)
 
void Add (RealType w, const TAttrBasedQuadricError &other)
 
bool OptimalPoint (UE::Math::TVector< RealType > &OptPoint, RealType minThresh=1000.0 *TMathUtil< RealType >::Epsilon) const
 
RealType Evaluate (const TVector< RealType > &point, const TVector< RealType > &InAttr) const
 
void ComputeAttributes (const TVector< RealType > &point, TVector< RealType > &attr) const
 
RealType Evaluate (const TVector< RealType > &point) const
 
- Public Member Functions inherited from UE::Geometry::TVolPresQuadricError< RealType >
 TVolPresQuadricError ()
 
 TVolPresQuadricError (const TVector< RealType > &Normal, const TVector< RealType > &Point)
 
 TVolPresQuadricError (const TVolPresQuadricError &a, const TVolPresQuadricError &b)
 
 TVolPresQuadricError (const TVolPresQuadricError &a, const TVolPresQuadricError &b, const FPlaneData &DuplicatePlaneData)
 
void Add (RealType w, const TVolPresQuadricError &b)
 
bool OptimalPoint (UE::Math::TVector< RealType > &OutResult, RealType minThresh=1000.0 *TMathUtil< RealType >::Epsilon) const
 
- Public Member Functions inherited from UE::Geometry::TQuadricError< RealType >
 TQuadricError ()
 
 TQuadricError (const TVector< RealType > &Normal, const TVector< RealType > &Point)
 
 TQuadricError (const TQuadricError &a, const TQuadricError &b)
 
void Add (RealType w, const TQuadricError &b)
 
void Add (const TQuadricError &b)
 
void Subtract (const TQuadricError &b)
 
void AddSeamQuadric (const TQuadricError &b)
 
void SubtractSeamQuadric (const TQuadricError &b)
 
void Scale (RealType w)
 
RealType Evaluate (const UE::Math::TVector< RealType > &pt) const
 
TVector< RealType > MultiplyA (const UE::Math::TVector< RealType > &pt) const
 
bool SolveAxEqualsb (UE::Math::TVector< RealType > &OutResult, const RealType bvecx, const RealType bvecy, const RealType bvecz, const RealType minThresh=1000.0 *TMathUtil< RealType >::Epsilon) const
 
bool OptimalPoint (UE::Math::TVector< RealType > &OutResult, RealType minThresh=1000.0 *TMathUtil< RealType >::Epsilon) const
 

Static Public Member Functions

static TAttrBasedQuadricError Zero ()
 
- Static Public Member Functions inherited from UE::Geometry::TVolPresQuadricError< RealType >
static TVolPresQuadricError Zero ()
 
- Static Public Member Functions inherited from UE::Geometry::TQuadricError< RealType >
static TQuadricError Zero ()
 
static bool InvertSymmetricMatrix (const RealType SM[6], RealType InvSM[6], RealType minThresh=1000.0 *TMathUtil< RealType >::Epsilon)
 
static TVector< RealType > MultiplySymmetricMatrix (const RealType SM[6], const RealType vec[3])
 
static TVector< RealType > MultiplySymmetricMatrix (const RealType SM[6], const UE::Math::TVector< RealType > &vec)
 

Public Attributes

RealType a
 
RealType attrweight = 1.
 
TVector< RealType > grad [3]
 
RealType d [3]
 
- Public Attributes inherited from UE::Geometry::TVolPresQuadricError< RealType >
FPlaneData PlaneData
 
- Public Attributes inherited from UE::Geometry::TQuadricError< RealType >
RealType Axx
 
RealType Axy
 
RealType Axz
 
RealType Ayy
 
RealType Ayz
 
RealType Azz
 
RealType bx
 
RealType by
 
RealType bz
 
RealType c
 

Detailed Description

template<typename RealType>
class UE::Geometry::TAttrBasedQuadricError< RealType >

Quadric Error type for use in volume memory-less simplification with volume preservation constraints. using the normal as three additional attributes to contribute to the quadric error. See: http://hhoppe.com/newqem.pdf

Member Typedef Documentation

◆ BaseClass

template<typename RealType >
typedef TVolPresQuadricError<RealType> UE::Geometry::TAttrBasedQuadricError< RealType >::BaseClass

◆ BaseStruct

template<typename RealType >
typedef TQuadricError<RealType> UE::Geometry::TAttrBasedQuadricError< RealType >::BaseStruct

◆ ScalarType

template<typename RealType >
typedef RealType UE::Geometry::TAttrBasedQuadricError< RealType >::ScalarType

Constructor & Destructor Documentation

◆ TAttrBasedQuadricError() [1/3]

template<typename RealType >
UE::Geometry::TAttrBasedQuadricError< RealType >::TAttrBasedQuadricError ( const TVector< RealType > &  P0,
const TVector< RealType > &  P1,
const TVector< RealType > &  P2,
const TVector< RealType > &  N0,
const TVector< RealType > &  N1,
const TVector< RealType > &  N2,
const TVector< RealType > &  NFace,
const TVector< RealType > &  CenterPoint,
RealType  AttrWeight 
)
inline

Given a scalar attribute 'a' defined at the vertices e.g. a0, a1, a2 (in this case the attribute is a single component of the vertex normal)

solve 4x4 system: (p0^t 1) (g[0]) = (a0) (p1^t 1) (g[1]) (a1) (p2^t 1) (g[2]) (a2) (n^t 0) ( d ) (0 )

for the interpolating gradient 'g' – note this is really p.dot(g) + d = a0 and n.dot(g) = 0

this system can be re-written as < e_20 | g > = (a2-a0) < e_10 | g > = (a1-a0) < n | g > = 0 and
< p0 | g > + d = a0. where e_20 is the edge vector p2 - p0 e_10 is the edge vector p1 - p0.

the first 3 equations can be solved for the vector 'g' either as a 3x3 matrix system or one could solve a 2x2 system since 'g' must be in the plane spanned by {e20, e10}
( give 'n' is orthogonal to the triangle face).

For this quadric, each component of the normal is treated as separate attribute.

◆ TAttrBasedQuadricError() [2/3]

template<typename RealType >
UE::Geometry::TAttrBasedQuadricError< RealType >::TAttrBasedQuadricError ( )
inline

◆ TAttrBasedQuadricError() [3/3]

template<typename RealType >
UE::Geometry::TAttrBasedQuadricError< RealType >::TAttrBasedQuadricError ( const TAttrBasedQuadricError< RealType > &  Aother,
const TAttrBasedQuadricError< RealType > &  Bother 
)
inline

Member Function Documentation

◆ Add()

template<typename RealType >
void UE::Geometry::TAttrBasedQuadricError< RealType >::Add ( RealType  w,
const TAttrBasedQuadricError< RealType > &  other 
)
inline

Area Weighted Add

◆ ComputeAttributes()

template<typename RealType >
void UE::Geometry::TAttrBasedQuadricError< RealType >::ComputeAttributes ( const TVector< RealType > &  point,
TVector< RealType > &  attr 
) const
inline

◆ Evaluate() [1/2]

template<typename RealType >
RealType UE::Geometry::TAttrBasedQuadricError< RealType >::Evaluate ( const TVector< RealType > &  point) const
inline

◆ Evaluate() [2/2]

template<typename RealType >
RealType UE::Geometry::TAttrBasedQuadricError< RealType >::Evaluate ( const TVector< RealType > &  point,
const TVector< RealType > &  InAttr 
) const
inline

◆ OptimalPoint()

template<typename RealType >
bool UE::Geometry::TAttrBasedQuadricError< RealType >::OptimalPoint ( UE::Math::TVector< RealType > &  OptPoint,
RealType  minThresh = 1000.0*TMathUtil<RealType>::Epsilon 
) const
inline

The optimal point minimizing the quadric error with respect to a volume conserving constraint

◆ Zero()

template<typename RealType >
static TAttrBasedQuadricError UE::Geometry::TAttrBasedQuadricError< RealType >::Zero ( )
inlinestatic

Member Data Documentation

◆ a

template<typename RealType >
RealType UE::Geometry::TAttrBasedQuadricError< RealType >::a

◆ attrweight

template<typename RealType >
RealType UE::Geometry::TAttrBasedQuadricError< RealType >::attrweight = 1.

◆ d

template<typename RealType >
RealType UE::Geometry::TAttrBasedQuadricError< RealType >::d[3]

◆ grad

template<typename RealType >
TVector<RealType> UE::Geometry::TAttrBasedQuadricError< RealType >::grad[3]

The documentation for this class was generated from the following file: