Create a Mesh Model Variant
Overview
Section titled “Overview”Add a variant to an existing static meshed asset-generation version
(asset_kind = "mc-model", "sn-model" or "dc-model", one model sculpted from
a signed-distance field and meshed by the mc, sn or dc binary).
Creating a Mesh Model Variant
is the full procedure.
A variant varies the brief the model sculpts toward: a tighter palette, a
stricter operation budget, or a required CSG technique such as mirror-only
symmetry, hard unions, or dc --sharp edges. It may also declare its own
[voxel] table, which replaces the case’s field bounds for runs of that variant.
The asset_kind is version-level, so a variant keeps the case’s meshing binary.
An asset-generation case declares no references, so resolution rejects a
reference on the case or on any variant.
- Choose a consistent slug (
symmetric) and display name (Mirror-Symmetric) naming the constraint the variant imposes. Favour one a reviewer can observe in the extracted mesh. - Write
specs/<slug>.mdas an additive brief, stated as a delta against the common brief (“same subject, volume and mesher, except …”) with precise, testable constraints such as exact colors, an operation cap, or the required CSG technique. It may reference the common specs. It may not reference another variant’s spec. - Create
variants/<slug>.toml, a standalone TOML file whose top-level keys are the variant’s fields, and add its path to thevariantslist intest-case.toml. The first entry in that list is the default variant.
slug = "symmetric"name = "Mirror-Symmetric"description = "Same subject and mesher, built left/right symmetric with the mirror op."spec = [{ source = "specs/symmetric.md" }]A spec entry’s dest defaults to its source with any trailing .hbs removed.
Spec entries are additive on the common specs, and within one variant two seeded
entries may not share a dest. An asset-generation case is judged on one
overall rating, so a variant declares no [[review_item]].
Varying the volume
Section titled “Varying the volume”A variant that declares a [voxel] table runs at those field bounds in place of
the case’s. Declare width, height, depth and background exactly as the
case does. A brief that has to state its dimensions reads them from the
spec-template context as
{{voxel.width}}, {{voxel.height}}, {{voxel.depth}} and the inclusive
maximum index on each axis, so one .hbs brief serves every size.
Validate
Section titled “Validate”tcab seed --test-case <slug> --version <version> --variant <new-variant>tcab prompt --test-case <slug> --version <version> --variant <new-variant>Seed and render the new variant, then repeat for the existing variants to confirm nothing else changed, the brief resolves self-contained, and each variant keeps the case’s meshing binary.