public static class RemesherA triangle mesh in, an all-quad mesh out, with a report saying whether it went well.
Remarks
docs/plan/41 § D1's seven stages, and every one of them is an inspectable artefact. Condition, features, field, layout, quantize, extract, transfer — a RemeshStageTiming per stage says which one was slow and which one dropped something, because when a remesh looks wrong "which stage" is the first question and a monolith cannot answer it.
⚠ A hard edge is reproduced rather than approximated, and that is a structural claim rather than a quality one. § D4: feature polylines are chained before the field is solved and are boundaries of the patch layout, so a crease is a chain of output edges by construction. The alternative — extract, then nudge extracted vertices toward what was detected — is what produces good-but-wobbly hard surface, and it is why the established tool still ships its previous algorithm under a button.
⚠ All-quad, and NonQuadCount being non-zero is a bug rather than a setting. § D8 and § D15: doc 24's MeshOperations is built on the assumption that a loop, a ring and a loop cut are statements about four-sided faces, so a quad-dominant result has no rings to cut and the mesh kernel's whole vocabulary stops working on it.
⚠ It refuses rather than throws, and it never hangs. § Exit criterion 7: a corpus of deliberately broken meshes produces a valid all-quad result or a report naming the stage that refused. A refusal comes back as an empty mesh with the reason in Warnings; every walk, every repair and every solve in the pipeline is bounded.
Fields and properties (3)
public const float BudgetToleranceHow far over the budget a result may be before the report says so.
public const float RunawayMultipleHow many times the budget the quantization may plan before the brake engages.
public const int BrakeAttemptsHow many times the brake may halve its way down before it takes what it has.
Methods (2)
public static EditMesh Remesh(EditMesh source, RemeshSettings settings, out RemeshReport report, JobScheduler? scheduler = null)Remeshes a triangle mesh into quads.
public static EditMesh Remesh(EditMesh source, SourceAttributes attributes, RemeshSettings settings, out RemeshReport report, out TransferResult transferred, JobScheduler? scheduler = null)The same, carrying the channels the mesh has no room for as well.
Used by (20)
- AllFeatureArcPatchTestsVixen.Geometry.Remeshing.Tests
- AttributeTransferTestsVixen.Geometry.Remeshing.Tests
- BudgetWarningTestsVixen.Geometry.Remeshing.Tests
- FacetedSurfaceTestsVixen.Geometry.Remeshing.Tests
- LayoutAtlasTestsVixen.Geometry.Remeshing.Tests
- OptimisedInDebugTestsVixen.Geometry.Remeshing.Tests
- QuadQualityTestsVixen.Geometry.Remeshing.Tests
- RemeshBytesTestsVixen.Geometry.Remeshing.Tests
- RemeshDeterminismTestsVixen.Geometry.Remeshing.Tests
- RemeshDumpTestsVixen.Geometry.Remeshing.Tests
- RemeshPipelinePropertyTestsVixen.Geometry.Remeshing.Tests
- RemeshReportTestsVixen.Geometry.Remeshing.Tests
- RemesherTestsVixen.Geometry.Remeshing.Tests
- SettingsHonouredTestsVixen.Geometry.Remeshing.Tests
- SymmetryPassVixen.Geometry.Remeshing
- SymmetryTestsVixen.Geometry.Remeshing.Tests
- SymmetryTransferTestsVixen.Geometry.Remeshing.Tests
- BlockoutRetopologyVixen.Editor.Blockout
- GeometryRunnerVixen.Cli
- ModelRetopologyVixen.Editor.Assets