Vixen
dd8b0a81
csharp
public record class SourceAttributes

The channels a source mesh carries that EditMesh has no room for.

Read the guide page for this →

Remarks

Parallel arrays alongside the mesh, and that is the documented choice. docs/plan/41-automatic-retopology.md § D12 asks for colours and skinning weights to survive a remesh and leaves open where they live. EditMesh has a normal layer and a texture-coordinate layer and nothing else, and growing it a colour channel and a bone channel would put a renderer's and a rig's vocabulary into doc 24's geometry types — which have consumers that have never heard of either. So they travel beside the mesh, indexed by the mesh's own indices.

⚠ Colours are per corner and weights are per position, and the split is not arbitrary. A colour is a statement about the surface's appearance and can legitimately jump across a seam; a weight is a statement about where the surface moves to, and two corners at one position that moved differently would tear the mesh open.

⚠ Every channel is optional and an empty one means "the source had none", not "zero". A source with no colours must not come back with a mesh painted black.

Fields and properties (4)

  • public IReadOnlyList<Vector4> Colors

    A colour or mask per source corner, or empty for none.

  • public SkinBinding? Weights

    Skinning weights per source position, or null for none.

  • public IReadOnlyList<int>? BoneMirror

    Where each bone's mirror sits, entry i being bone i's, or null for none.

  • public static SourceAttributes None

    Nothing at all — a source that is only geometry, which is the generated-blob case.

Used by (6)

  • AttributeMirrorVixen.Geometry.Remeshing
  • AttributeTransferVixen.Geometry.Remeshing
  • AttributeTransferTestsVixen.Geometry.Remeshing.Tests
  • RemesherVixen.Geometry.Remeshing
  • SymmetryPassVixen.Geometry.Remeshing
  • SymmetryTransferTestsVixen.Geometry.Remeshing.Tests