Vixen
dd8b0a81
csharp
public readonly record struct UvReport

Everything measured about an unwrap, which is the answer to "is this good?".

Read the guide page for this →

Remarks

Five of these are MeshTailor's and the rest are what a renderer needs. docs/plan/42 § Part 4. The paper's metric set is the best-specified one in the literature — and BoundaryJaggedness in particular is what separates "low distortion" from "an artist would accept this", which nothing else in the field writes down.

⚠ SeamLengthNormalized divides by the square root of the area, not by the area. The paper defines it over area, which is not dimensionless: halve a model's scale and the figure doubles. Both are reported so the number compares across models and the published one is still recoverable.

⚠ PackingEfficiency and EffectiveEfficiency are both here because the first one flatters. Raw used-area-over-atlas-area rewards a packer that leaves no room to bleed into, and the gap between the two is exactly what a margin setting costs.

Fields and properties (13)

  • public int ChartCount

    The headline. Fewer is better at equal distortion.

  • public float Compactness

    4πA/P² per island, averaged. Round islands pack and filter better than tendrils.

  • public float Convexity

    A/A(hull) per island, averaged — the other half of shape quality.

  • public float SeamLength

    Total seam length, in world units.

  • public float SeamLengthNormalized

    Seam length over the square root of surface area, so it is scale-free.

  • public float BoundaryJaggedness

    Discrete curvature over resampled boundary loops.

  • public UvDistortion Distortion

    The four measures.

  • public float PackingEfficiency

    Island area over atlas area, before margin.

  • public float EffectiveEfficiency

    The same after margin — what the atlas actually costs.

  • public UvTexelDensity TexelDensity

    Achieved density across every chart.

  • public IReadOnlyList<UvStageTiming> Stages

    Time and element counts, per stage.

  • public IReadOnlyList<string> Warnings

    What the caller should know: a chart that had to be split, a rescale, a spill into a second tile.

  • public bool IsInjective

    Whether the mapping is invertible everywhere, which is the one field that is pass or fail.

Methods (1)

  • public UvReport(int ChartCount, float Compactness, float Convexity, float SeamLength, float SeamLengthNormalized, float BoundaryJaggedness, UvDistortion Distortion, float PackingEfficiency, float EffectiveEfficiency, UvTexelDensity TexelDensity, IReadOnlyList<UvStageTiming> Stages, IReadOnlyList<string> Warnings)

    Everything measured about an unwrap, which is the answer to "is this good?".

Used by (32)

  • ChartOutcomeVixen.Geometry.Uv
  • CharterVixen.Geometry.Uv
  • FlattenOutcomeVixen.Geometry.Uv
  • FlattenerVixen.Geometry.Uv
  • PackOutcomeVixen.Geometry.Uv
  • PackerVixen.Geometry.Uv
  • UvAllTestsVixen.Geometry.Uv.Tests
  • UvChartDeterminismTestsVixen.Geometry.Uv.Tests
  • UvChartInvarianceTestsVixen.Geometry.Uv.Tests
  • UvChartQualityTestsVixen.Geometry.Uv.Tests
  • UvChartTestsVixen.Geometry.Uv.Tests
  • UvDensityTestsVixen.Geometry.Uv.Tests
  • UvFacetedGroupTestsVixen.Geometry.Uv.Tests
  • UvFlattenBijectivityTestsVixen.Geometry.Uv.Tests
  • UvFlattenCotangentTestsVixen.Geometry.Uv.Tests
  • UvFlattenDeterminismTestsVixen.Geometry.Uv.Tests
  • UvFlattenDistortionTestsVixen.Geometry.Uv.Tests
  • UvFlattenInvarianceTestsVixen.Geometry.Uv.Tests
  • UvFlattenTestsVixen.Geometry.Uv.Tests
  • UvFlattenTopologyTestsVixen.Geometry.Uv.Tests
  • UvPackDeterminismTestsVixen.Geometry.Uv.Tests
  • UvPackEfficiencyTestsVixen.Geometry.Uv.Tests
  • UvPackPropertyTestsVixen.Geometry.Uv.Tests
  • UvPackingTestsVixen.Geometry.Uv.Tests
  • UvStackingTestsVixen.Geometry.Uv.Tests
  • UvUdimTestsVixen.Geometry.Uv.Tests
  • UvUnwrapVixen.Geometry.Uv
  • UvUnwrapDeterminismTestsVixen.Geometry.Uv.Tests
  • UvUnwrapPipelinePropertyTestsVixen.Geometry.Uv.Tests
  • BlockoutUvPanelVixen.Editor.Blockout
  • GeometryRunnerVixen.Cli
  • ModelRetopologyVixen.Editor.Assets