FILT: Add filter to extract microstructure triple lines from surface meshes - #1729
Open
imikejackson wants to merge 1 commit into
Open
FILT: Add filter to extract microstructure triple lines from surface meshes#1729imikejackson wants to merge 1 commit into
imikejackson wants to merge 1 commit into
Conversation
imikejackson
force-pushed
the
topic/add_triple_line_option
branch
from
August 25, 2026 20:17
c072c2a to
1d92ae0
Compare
Extracts the triple lines of a multi-material surface mesh into a self-contained Edge Geometry. A mesh edge is a triple line segment when the unique Feature Ids across the Face Labels of the triangles sharing it number three or more. Feature Id -1 (outside the volume) counts only when Include Exterior Triple Lines is enabled, which turns interior-only extraction into one that also finds grain boundaries reaching the free surface. Because the lines are extracted from whatever Triangle Geometry is supplied, placing the filter after a smoothing step yields triple lines that lie exactly on the smoothed surface. An option on the surface meshers could not do that, since it can only see the mesh as generated. The created geometry carries a NumFeatures value per segment (3 for a triple line, 4 for a quadruple point line) and a Node Types array copied from the source mesh, so it can be consumed directly by filters that require one, such as Laplacian Smoothing. The shared implementation lives in MeshingUtilities::GenerateTripleLines so it is reachable from other plugins. Node Types is copied through only; it is never consulted to decide whether an edge is a triple line, and the header says so at the point a future reader would be tempted otherwise. Using the count of triangles sharing an edge was likewise considered and rejected: it cannot express the interior-only case, and it misreports non-manifold pinches as quadruple lines. Also removes 505 lines of dormant, unreachable triple line code from QuickSurfaceMesh. Both prior implementations sat behind a macro that is never defined and neither worked: one corrupted every vertex Y coordinate and wrote its two-component edge list at stride three, the other read Node Types from the Face Labels path and never set the edge list. Preflight rejects Face Labels or Node Types arrays whose tuple counts do not match the geometry's face and vertex counts, which would otherwise read past the end of an array during execute. Tests are built on hand-derived expected values rather than stored meshes: a flat boundary yields no triple lines, an interior junction yields one segment with three Features, a quadruple point yields four, and a four-grain block run through all three surface meshers yields consistent topology. Vertex compaction, the exterior toggle, and the Node Types pass-through are each covered. Signed-off-by: Michael Jackson <mike.jackson@bluequartz.net>
imikejackson
force-pushed
the
topic/add_triple_line_option
branch
from
August 27, 2026 18:22
1d92ae0 to
49263db
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.