#include <MeshFaceSelection.h>
|
| | FMeshFaceSelection (const FDynamicMesh3 *mesh) |
| |
| GEOMETRYCORE_API | FMeshFaceSelection (const FDynamicMesh3 *mesh, const FMeshVertexSelection &convertV, int minCount=3) |
| |
| | FMeshFaceSelection (const FDynamicMesh3 *mesh, int group_id) |
| |
| TSet< int >::TRangedForIterator | begin () |
| |
| TSet< int >::TRangedForConstIterator | begin () const |
| |
| TSet< int >::TRangedForIterator | end () |
| |
| TSet< int >::TRangedForConstIterator | end () const |
| |
| int | Num () const |
| |
| bool | IsSelected (int tid) const |
| |
| bool | Contains (int tid) const |
| |
| void | Select (int tid) |
| |
| template<typename EnumerableType , typename E = decltype(DeclVal<EnumerableType>().begin())> |
| void | Select (const EnumerableType &Enumerable) |
| |
| void | Select (TFunctionRef< bool(int)> SelectF) |
| |
| void | SelectVertexOneRing (int vid) |
| |
| void | SelectVertexOneRings (TArrayView< const int > Vertices) |
| |
| void | SelectEdgeTris (int eid) |
| |
| void | Deselect (int tid) |
| |
| void | Deselect (TArrayView< const int > Triangles) |
| |
| template<typename EnumerableType > |
| void | Deselect (const EnumerableType &Enumerable) |
| |
| void | DeselectAll () |
| |
| void | SelectGroup (int gid) |
| |
| void | SelectGroupInverse (int gid) |
| |
| void | DeselectGroup (int gid) |
| |
| template<typename EnumerableType , typename StorageType > |
| void | SetDifference (const EnumerableType &SubtractSet, StorageType &DifferenceStorage) const |
| |
| template<typename EnumerableType , typename StorageType > |
| void | SetIntersection (const EnumerableType &IntersectSet, StorageType &IntersectionStorage) const |
| |
| const TSet< int > & | AsSet () const |
| |
| TArray< int > | AsArray () const |
| |
| TBitArray< FDefaultBitArrayAllocator > | AsBitArray () const |
| |
| TPair< bool, bool > | IsSelectionBoundaryEdge (int32 eid) const |
| |
| TArray< int > | FindNeighbourTris () const |
| |
| TArray< int > | FindBorderTris () const |
| |
| void | ExpandToFaceNeighbours (const TUniqueFunction< bool(int)> &FilterF=nullptr) |
| |
| void | ExpandToFaceNeighbours (int rounds, const TUniqueFunction< bool(int)> &FilterF=nullptr) |
| |
| GEOMETRYCORE_API void | ExpandToOneRingNeighbours (const TUniqueFunction< bool(int)> &FilterF=nullptr) |
| |
| GEOMETRYCORE_API void | ExpandToOneRingNeighbours (int nRings, const TUniqueFunction< bool(int)> &FilterF=nullptr) |
| |
| GEOMETRYCORE_API void | ContractBorderByOneRingNeighbours (int NumRings=1, bool bContractFromMeshBoundary=false, const TUniqueFunction< bool(int)> &FilterF=nullptr) |
| |
| void | FloodFill (int tSeed, const TUniqueFunction< bool(int)> &TriFilterF=nullptr, const TUniqueFunction< bool(int)> &EdgeFilterF=nullptr) |
| |
| void | FloodFill (const TArray< int > &Seeds, const TUniqueFunction< bool(int)> &TriFilterF=nullptr, const TUniqueFunction< bool(int)> &EdgeFilterF=nullptr) |
| |
| bool | ClipFins (bool bClipLoners) |
| |
| bool | FillEars (bool bFillTinyHoles) |
| |
| bool | LocalOptimize (bool bClipFins, bool bFillEars, bool bFillTinyHoles=true, bool bClipLoners=true, bool bRemoveBowties=false) |
| |
| bool | LocalOptimize (bool bRemoveBowties=true) |
| |
| bool | RemoveBowties () |
| |
| bool | remove_bowties () |
| |
◆ FMeshFaceSelection() [1/3]
| UE::Geometry::FMeshFaceSelection::FMeshFaceSelection |
( |
const FDynamicMesh3 * |
mesh | ) |
|
|
inline |
◆ FMeshFaceSelection() [2/3]
◆ FMeshFaceSelection() [3/3]
| UE::Geometry::FMeshFaceSelection::FMeshFaceSelection |
( |
const FDynamicMesh3 * |
mesh, |
|
|
int |
group_id |
|
) |
| |
|
inline |
◆ AsArray()
| TArray< int > UE::Geometry::FMeshFaceSelection::AsArray |
( |
| ) |
const |
|
inline |
◆ AsBitArray()
◆ AsSet()
| const TSet< int > & UE::Geometry::FMeshFaceSelection::AsSet |
( |
| ) |
const |
|
inline |
◆ begin() [1/2]
| TSet< int >::TRangedForIterator UE::Geometry::FMeshFaceSelection::begin |
( |
| ) |
|
|
inline |
DO NOT USE DIRECTLY STL-like iterators to enable range-based for loop support.
◆ begin() [2/2]
| TSet< int >::TRangedForConstIterator UE::Geometry::FMeshFaceSelection::begin |
( |
| ) |
const |
|
inline |
◆ ClipFins()
| bool UE::Geometry::FMeshFaceSelection::ClipFins |
( |
bool |
bClipLoners | ) |
|
|
inline |
◆ Contains()
| bool UE::Geometry::FMeshFaceSelection::Contains |
( |
int |
tid | ) |
const |
|
inline |
◆ ContractBorderByOneRingNeighbours()
| void FMeshFaceSelection::ContractBorderByOneRingNeighbours |
( |
int |
NumRings = 1, |
|
|
bool |
bContractFromMeshBoundary = false, |
|
|
const TUniqueFunction< bool(int)> & |
FilterF = nullptr |
|
) |
| |
remove all triangles in vertex one-rings of current selection to set. On a large selection this is quite expensive as we don't know the boundary, so we have to iterate over all selected triangles.
Return false from FilterF to prevent triangles from being deselected.
◆ Deselect() [1/3]
◆ Deselect() [2/3]
| void UE::Geometry::FMeshFaceSelection::Deselect |
( |
int |
tid | ) |
|
|
inline |
◆ Deselect() [3/3]
| void UE::Geometry::FMeshFaceSelection::Deselect |
( |
TArrayView< const int > |
Triangles | ) |
|
|
inline |
◆ DeselectAll()
| void UE::Geometry::FMeshFaceSelection::DeselectAll |
( |
| ) |
|
|
inline |
◆ DeselectGroup()
| void UE::Geometry::FMeshFaceSelection::DeselectGroup |
( |
int |
gid | ) |
|
|
inline |
◆ end() [1/2]
| TSet< int >::TRangedForIterator UE::Geometry::FMeshFaceSelection::end |
( |
| ) |
|
|
inline |
◆ end() [2/2]
| TSet< int >::TRangedForConstIterator UE::Geometry::FMeshFaceSelection::end |
( |
| ) |
const |
|
inline |
◆ ExpandToFaceNeighbours() [1/2]
| void UE::Geometry::FMeshFaceSelection::ExpandToFaceNeighbours |
( |
const TUniqueFunction< bool(int)> & |
FilterF = nullptr | ) |
|
|
inline |
◆ ExpandToFaceNeighbours() [2/2]
| void UE::Geometry::FMeshFaceSelection::ExpandToFaceNeighbours |
( |
int |
rounds, |
|
|
const TUniqueFunction< bool(int)> & |
FilterF = nullptr |
|
) |
| |
|
inline |
◆ ExpandToOneRingNeighbours() [1/2]
Add all triangles in vertex one-rings of current selection to set. On a large selection this is quite expensive as we don't know the boundary, so we have to iterate over all selected triangles.
Return false from FilterF to prevent triangles from being included.
◆ ExpandToOneRingNeighbours() [2/2]
| void FMeshFaceSelection::ExpandToOneRingNeighbours |
( |
int |
nRings, |
|
|
const TUniqueFunction< bool(int)> & |
FilterF = nullptr |
|
) |
| |
Expand selection by N vertex one-rings. This is significantly faster than calling ExpandToOnering() multiple times, because we can track the growing front and only check the new triangles.
Return false from FilterF to prevent triangles from being included.
◆ FillEars()
| bool UE::Geometry::FMeshFaceSelection::FillEars |
( |
bool |
bFillTinyHoles | ) |
|
|
inline |
◆ FindBorderTris()
| TArray< int > UE::Geometry::FMeshFaceSelection::FindBorderTris |
( |
| ) |
const |
|
inline |
find set of tris just inside border of selection
◆ FindNeighbourTris()
| TArray< int > UE::Geometry::FMeshFaceSelection::FindNeighbourTris |
( |
| ) |
const |
|
inline |
find set of tris just outside border of selection
◆ FloodFill() [1/2]
Grow selection outwards from seed triangles, until it hits boundaries defined by triangle and edge filters. Edge filter is not effective unless it (possibly combined w/ triangle filter) defines closed loops.
◆ FloodFill() [2/2]
Grow selection outwards from seed triangle, until it hits boundaries defined by triangle and edge filters. Edge filter is not effective unless it (possibly combined w/ triangle filter) defines closed loops.
◆ IsSelected()
| bool UE::Geometry::FMeshFaceSelection::IsSelected |
( |
int |
tid | ) |
const |
|
inline |
◆ IsSelectionBoundaryEdge()
| TPair< bool, bool > UE::Geometry::FMeshFaceSelection::IsSelectionBoundaryEdge |
( |
int32 |
eid | ) |
const |
|
inline |
- Returns
- pair (bIsSelectionBoundaryEdge, bIsMeshBoundaryEdge) for a given edge
◆ LocalOptimize() [1/2]
◆ LocalOptimize() [2/2]
| bool UE::Geometry::FMeshFaceSelection::LocalOptimize |
( |
bool |
bRemoveBowties = true | ) |
|
|
inline |
◆ Num()
| int UE::Geometry::FMeshFaceSelection::Num |
( |
| ) |
const |
|
inline |
◆ remove_bowties()
| bool UE::Geometry::FMeshFaceSelection::remove_bowties |
( |
| ) |
|
|
inline |
◆ RemoveBowties()
| bool UE::Geometry::FMeshFaceSelection::RemoveBowties |
( |
| ) |
|
|
inline |
Find any "bowtie" vertices - ie vertex v such taht there is multiple spans of triangles selected in v's triangle one-ring - and deselect those one-rings. Returns true if selection was modified.
◆ Select() [1/3]
◆ Select() [2/3]
| void UE::Geometry::FMeshFaceSelection::Select |
( |
int |
tid | ) |
|
|
inline |
◆ Select() [3/3]
◆ SelectEdgeTris()
| void UE::Geometry::FMeshFaceSelection::SelectEdgeTris |
( |
int |
eid | ) |
|
|
inline |
◆ SelectGroup()
| void UE::Geometry::FMeshFaceSelection::SelectGroup |
( |
int |
gid | ) |
|
|
inline |
◆ SelectGroupInverse()
| void UE::Geometry::FMeshFaceSelection::SelectGroupInverse |
( |
int |
gid | ) |
|
|
inline |
◆ SelectVertexOneRing()
| void UE::Geometry::FMeshFaceSelection::SelectVertexOneRing |
( |
int |
vid | ) |
|
|
inline |
◆ SelectVertexOneRings()
| void UE::Geometry::FMeshFaceSelection::SelectVertexOneRings |
( |
TArrayView< const int > |
Vertices | ) |
|
|
inline |
◆ SetDifference()
| void UE::Geometry::FMeshFaceSelection::SetDifference |
( |
const EnumerableType & |
SubtractSet, |
|
|
StorageType & |
DifferenceStorage |
|
) |
| const |
|
inline |
Find the elements in current selection that are not in SubtractSet, and store in DifferenceStorage
◆ SetIntersection()
| void UE::Geometry::FMeshFaceSelection::SetIntersection |
( |
const EnumerableType & |
IntersectSet, |
|
|
StorageType & |
IntersectionStorage |
|
) |
| const |
|
inline |
Find the elements in current selection that are also in IntersectSet, and store in IntersectionStorage
The documentation for this class was generated from the following files: