#include <IsoTriangulator.h>
|
| | FIsoTriangulator (FGrid &InGrid, FFaceMesh &OutMesh, const FMeshingTolerances &InTolerance) |
| |
| bool | Triangulate () |
| |
| void | BuildNodes () |
| |
| void | BuildLoopSegments () |
| |
| void | BuildInnerSegments () |
| |
| void | GetThinZonesMesh () |
| |
| void | GetThinZoneMesh (const TMap< int32, FLoopNode * > &IndexToNode, const FThinZone2D &ThinZone) |
| |
| void | FillMeshNodes () |
| |
| void | BuildInnerSegmentsIntersectionTool () |
| |
| void | FindInnerGridCellSurroundingSmallLoop () |
| |
| void | ConnectCellLoops () |
| |
| void | FindCellContainingBoundaryNodes (TArray< FCell > &Cells) |
| |
| void | FindCandidateToConnectCellCornerToLoops (FCell &Cell) |
| |
| void | SelectSegmentsToLinkInnerToLoop () |
| |
| void | InitCellCorners (FCell &Cell) |
| |
| void | TriangulateOverCycle (const EGridSpace Space) |
| |
| bool | FindCycle (FIsoSegment *StartSegment, bool bLeftSide, TArray< FIsoSegment * > &Cycle, TArray< bool > &CycleOrientation) |
| |
| void | MeshCycle (const TArray< FIsoSegment * > &Cycle, const TArray< bool > &CycleOrientation) |
| |
| void | MeshLargeCycle (const TArray< FIsoSegment * > &Cycle, const TArray< bool > &CycleOrientation) |
| |
| template<uint32 Dim> |
| void | MeshCycleOf (const TArray< FIsoSegment * > &Cycle, const TArray< bool > &CycleOrientation, FMeshPolygonFunc MeshPolygonFunc) |
| |
| bool | CanCycleBeMeshed (const TArray< FIsoSegment * > &Cycle, FIntersectionSegmentTool &CycleIntersectionTool) |
| |
| void | TriangulateInnerNodes () |
| |
| void | SortLoopNodes () |
| |
| const FGrid & | GetGrid () const |
| |
◆ FIsoTriangulator()
◆ BuildInnerSegments()
| void UE::CADKernel::FIsoTriangulator::BuildInnerSegments |
( |
| ) |
|
◆ BuildInnerSegmentsIntersectionTool()
| void UE::CADKernel::FIsoTriangulator::BuildInnerSegmentsIntersectionTool |
( |
| ) |
|
◆ BuildLoopSegments()
| void UE::CADKernel::FIsoTriangulator::BuildLoopSegments |
( |
| ) |
|
Build the segments of the loops and check if each loop is self intersecting.
- Returns
- false if the loop is self intersecting
◆ BuildNodes()
| void UE::CADKernel::FIsoTriangulator::BuildNodes |
( |
| ) |
|
◆ CanCycleBeMeshed()
◆ ConnectCellLoops()
| void UE::CADKernel::FIsoTriangulator::ConnectCellLoops |
( |
| ) |
|
◆ FillMeshNodes()
| void UE::CADKernel::FIsoTriangulator::FillMeshNodes |
( |
| ) |
|
Fill mesh node data (Position, normal, UV, Index) of the FFaceMesh object
◆ FindCandidateToConnectCellCornerToLoops()
| void UE::CADKernel::FIsoTriangulator::FindCandidateToConnectCellCornerToLoops |
( |
FCell & |
Cell | ) |
|
◆ FindCellContainingBoundaryNodes()
| void UE::CADKernel::FIsoTriangulator::FindCellContainingBoundaryNodes |
( |
TArray< FCell > & |
Cells | ) |
|
◆ FindCycle()
Find in the network a minimal cycle stating from a segment
- Returns
- false if the new cycle crosses a segment already used
◆ FindInnerGridCellSurroundingSmallLoop()
| void UE::CADKernel::FIsoTriangulator::FindInnerGridCellSurroundingSmallLoop |
( |
| ) |
|
The purpose of the method is to add surrounding segments (boundary of an unitary inner grid cell) to the small loop to intersection tool to prevent traversing inner segments A loop is inside inner segments
| |
| XXX | | XXXXX |
| XXX |
| | https://docs.google.com/presentation/d/1qUVOH-2kU_QXBVKyRUcdDy1Y6WGkcaJCiaS8wGjSZ6M/edit?usp=sharing Slide "Find Inner Grid Cell Surrounding Small Loop" This method finalizes BuildInnerSegmentsIntersectionTool
The purpose is to add surrounding segments to the small loop to intersection tool to prevent traversing inner segments A loop is inside inner segments
| |
| XXX | | XXXXX |
| XXX |
| |
◆ GetGrid()
| const FGrid & UE::CADKernel::FIsoTriangulator::GetGrid |
( |
| ) |
const |
|
inline |
◆ GetThinZoneMesh()
◆ GetThinZonesMesh()
| void UE::CADKernel::FIsoTriangulator::GetThinZonesMesh |
( |
| ) |
|
Add temporary loops defining thin zones to avoid the tessellation of these zone. These zones are tessellated in a specific process
◆ InitCellCorners()
| void UE::CADKernel::FIsoTriangulator::InitCellCorners |
( |
FCell & |
Cell | ) |
|
◆ MeshCycle()
Generate the "Delaunay" tessellation of the cycle. The algorithm is based on frontal process
◆ MeshCycleOf()
◆ MeshLargeCycle()
◆ SelectSegmentsToLinkInnerToLoop()
| void UE::CADKernel::FIsoTriangulator::SelectSegmentsToLinkInnerToLoop |
( |
| ) |
|
◆ SortLoopNodes()
| void UE::CADKernel::FIsoTriangulator::SortLoopNodes |
( |
| ) |
|
|
inline |
Sorted loop node array used to have efficient loop proximity node research
◆ Triangulate()
| bool UE::CADKernel::FIsoTriangulator::Triangulate |
( |
| ) |
|
Main method
- Returns
- false if the tessellation failed
◆ TriangulateInnerNodes()
| void UE::CADKernel::FIsoTriangulator::TriangulateInnerNodes |
( |
| ) |
|
Finalization of the mesh by the tessellation of the inner grid
◆ TriangulateOverCycle()
| void UE::CADKernel::FIsoTriangulator::TriangulateOverCycle |
( |
const EGridSpace |
Space | ) |
|
Finalize the tessellation between inner grid boundary and loops. The final set of segments define a network Each minimal cycle is tessellated independently
◆ FCell
◆ FCycleTriangulator
◆ FLoopCleaner
◆ FParametricMesher
◆ bDisplay
| bool UE::CADKernel::FIsoTriangulator::bDisplay = false |
|
protected |
◆ bNeedCheckOrientation
| bool UE::CADKernel::FIsoTriangulator::bNeedCheckOrientation = false |
|
protected |
◆ CandidateSegments
◆ FinalInnerSegments
◆ FinalToLoops
Segments to link inner to boundary and boundary to boundary From FindIsoSegmentToLinkInnerToBoundary SelectSegmentInCandidateSegments
◆ GlobalIndexToIsoInnerNodes
GlobalIndexToIsoInnerNodes contains only inner nodes of the grid, if GlobalIndexToIsoInnerNodes[Index] == null, the point is outside the domain
◆ Grid
| FGrid& UE::CADKernel::FIsoTriangulator::Grid |
|
protected |
◆ IndexOfLowerLeftInnerNodeSurroundingALoop
| TArray<int32> UE::CADKernel::FIsoTriangulator::IndexOfLowerLeftInnerNodeSurroundingALoop |
|
protected |
Define all the lower left index of grid node that the upper cell is surrounding a loop This is set in FindSegmentIsoUVSurroundingSmallLoop and use in TriangulateInnerNodes to don't generate the both cell triangles
◆ InnerNodeCount
| int32 UE::CADKernel::FIsoTriangulator::InnerNodeCount = 0 |
|
protected |
◆ InnerNodes
Static array of InnerNodes. Only used for allocation needs
◆ InnerSegmentsIntersectionTool
Boundary of the inner grid
◆ InnerToLoopCandidateSegments
Waiting list for SelectSegmentsToLinkInnerToLoop Segments are identified in each cell but not directly processed
◆ InnerToOuterIsoSegmentsIntersectionTool
To check if the candidate segment intersect a iso line
◆ InnerToOuterSegments
◆ IsoSegmentFactory
◆ LoopNodeCount
| int32 UE::CADKernel::FIsoTriangulator::LoopNodeCount = 0 |
|
protected |
◆ LoopNodes
◆ LoopSegments
◆ LoopSegmentsIntersectionTool
Tool to check if a segment intersect or not existing segments. To be optimal, depending on the segment, only a subset of segment is used. Checks intersection with loop.
◆ LoopStartIndex
| TArray<int32> UE::CADKernel::FIsoTriangulator::LoopStartIndex |
|
protected |
◆ Mesh
| FFaceMesh& UE::CADKernel::FIsoTriangulator::Mesh |
|
protected |
◆ SortedLoopNodes
◆ ThinZoneIntersectionTool
To check if a candidate segment intersect a thin zone that is already meshed
◆ ThinZoneSegments
◆ Tolerances
The documentation for this class was generated from the following files: