Vixen
02b45cc4
csharp
public static class MeshTopology

What a mesh's structure answers: loops, rings, neighbours and coplanar regions.

Read the guide page for this →

Remarks

Doc 24's P2 selection table, as functions rather than as gestures. "Alt-click an edge" is a binding; what it selects is a walk over the edge table, and the walk is the part that can be wrong. Keeping it here means a loop round a cylinder is a test with a cylinder in it rather than a click somebody has to perform.

⚠ Every query answers with indices and takes none of its own state. A selection is the editor's — see MeshSelection — and these are what it is changed by. A query that mutated a selection would be one that could not be composed: grow-then-loop and loop-then-grow are both things a designer does.

⚠ The edge table is what makes all of this cheap, and it is why doc 24's D2 keeps one. A loop is a walk of one step per edge in it, and a step is two spans and a comparison. Without an explicit table each step is a search over every face in the mesh.

Fields and properties (1)

  • public const float DefaultCoplanarTolerance

    How nearly parallel two faces must be to count as coplanar for a selection.

Methods (6)

  • public static void EdgeLoop(EditMesh mesh, int edge, List<int> into)

    The edge loop an edge is part of.

  • public static void EdgeRing(EditMesh mesh, int edge, List<int> into)

    The edge ring an edge is part of.

  • public static void Coplanar(EditMesh mesh, int face, List<int> into, float tolerance = 0.9994)

    Every face reachable from one by crossing edges, while staying coplanar with it.

  • public static void Group(EditMesh mesh, int group, List<int> into)

    Every face in a group.

  • public static void Shell(EditMesh mesh, int face, List<int> into)

    Every face joined to one through shared edges, however the surface turns.

  • public static bool BoundaryLoop(EditMesh mesh, int edge, List<int> into)

    The boundary loop an open edge is part of.

Used by (3)

  • MeshOperationsVixen.Geometry
  • MeshTopologyTestsVixen.Geometry.Tests
  • BlockoutSelectionVixen.Editor.Blockout