Vixen
dd8b0a81
csharp
public interface IChartDecomposition

How a region that failed its distortion bound is broken into smaller ones.

Read the guide page for this →

Remarks

docs/plan/42 § D3's plug point, and the only one this library has. The charter is PartUV's shape — decompose, flatten, accept or recurse, merge back — and the one part of PartUV that cannot be taken is the top of it, because PartField is a learned decomposition. So the recursion is kept and the decomposition is made replaceable, with a classical concavity-driven default that owes nobody anything.

⚠ The default path never calls an implementation of this. Leaving Decomposition null selects the built-in decomposition, which is an approximate convex split over the dual graph weighted by dihedral concavity and surface occlusion. This interface exists so that a learned part field can be dropped in behind it under § D14's rules — it proposes and never decides, because whatever comes back is still flattened, still measured, and still has to pass DistortionThreshold before it is kept. A bad decomposition costs chart quality and can never cost validity.

⚠ An implementation may decline, and declining is not a failure. Returning null, an empty list, or anything that does not describe at least two non-empty parts falls back to the built-in decomposition for that region alone. A proposer that only understands some shapes is a useful proposer.

Methods (1)

  • IReadOnlyList<int>? Decompose(EditMesh mesh, IReadOnlyList<int> faces, int parts)

    Breaks a region of faces into parts.

Used by (4)

  • AlternatingVixen.Geometry.Uv.Tests
  • CharterVixen.Geometry.Uv
  • DecliningVixen.Geometry.Uv.Tests
  • UvSettingsVixen.Geometry.Uv