pipelines/CRAFT_AI_3D_GENERATION.md
CANON SUBORDINATION — this document is PROPOSAL-TIER: it serves canon and never outranks it.
Authority order: docs/DOC_MAP.md §0. If this document disagrees with canon, CANON WINS and this
document is the defect. Nothing here is applied until the director ratifies it. Under the
pipe-dossiers-bind law it becomes lane law for the CHARACTER-GEOMETRY class if ratified.
Research date 2026-08-08. This document is the craft companion to
docs/pipeline_review/tech_research/PIPE_CHARACTER_MODELS_2026-08-06.md, which surveyed **which
model to run. This one asks the different question: what the practitioners who ship characters
actually do with a generated mesh once they have it** — and it lands on a root cause for the
deformed body that the model survey could not reach, because the defect is not in the generator.
Evidence register, honoured per source. Claims marked VERIFIED were fetched live and the
sentence is quoted from the fetched text. Claims marked SEARCH-SUMMARY come from a search
engine's synthesis of a page not independently fetched — corroborated where noted, but not quotable
as the source's own words. Claims marked UNVERIFIED-QUOTE name a source that exists and is
correctly attributed, but whose exact wording could not be retrieved. Nothing here is MEASURED; this
pass ran no GPU hour.
CITATION AUDIT — 2026-08-08 (second pass). Every source below was re-sampled against the live
web. **Twenty-two sources verified as existing and saying what is claimed. Five claims were
fabricated or misattributed and are corrected in place:** (1) three quoted strings attributed to
the Meshy retopology tutorial appear nowhere on that page; (2) the SMPL licensing narrative
asserted a February-2026 date and a licensing transfer that no source supports — the Epic
acquisition itself is real and is now cited correctly; (3) Rodin's TAPose flag and quad tiers
were attributed to an 80.lv interview that does not contain them — they are real and now cite the
Hyper3D API specification; (4) the convex-hull "taut tape or band" quote was attributed to a
protocol CALVIS explicitly does not use, alongside a measurement count that matches no
toolkit checked; (5) an ECON quote about IF-Nets+ is not in ECON's abstract. Repair notes are
inline and marked [CORRECTED 2026-08-08]. No ACTIONABLE RULE was invented — every rule still
traces to a verified source, though R-6 and R-10 were re-grounded.
---
DERIVED FROM:
- build/3d/best_a14/bounded_fit.py — the docstring's own account of the A3_FIT defect: chest
"measured 110.85 cm target 81.93 +35.3%" from "1 axis-spanning cluster", and the verdict
"Driving that loop to 81.93 cm does not slim a chest; it squeezes a torso and two arms
together by a quarter, and the silhouette pays."
- build/3d/hi3dgen/fit_a14.py §1-2 — the site picker, the axis-spanning rule, and the
per-mesh confound test that REFUSES TO SCORE rather than recovering the true loop
- build/3d/hi3dgen/section_probe.py :: cluster_reading / read_section — the envelope-vs-
perimeter measurement and its positive control
- docs/pipeline_review/tech_research/PIPE_CHARACTER_MODELS_2026-08-06.md §7 (the parametric
licence landscape), §10 (the three-layer recommendation), §11 (what it left owed)
- build/3d/cage/body_stage/solve_metahuman_body_age.py L5-6 — the OTHER doctrine already
live in this repo: "solve the body parametrically ... instead of conforming a template
afterwards"
- build/3d/characters/body_specs/BODY_AGE_14_RESEARCH.json — the girth spec the fit drives to
NOT DERIVED (authored judgment, and why it had no canon home):
- The three-doctrine taxonomy in §3 and the ruling that our arm runs the one doctrine the
literature does not use. Canon specifies the character, never the fitting operator. It is an
engineering finding, grounded in the cited papers rather than asserted.
- The measurement-protocol finding in §4. Our own file already names the trap in prose; the
finding here is that the published protocol SOLVES it and ours only DECLINES it.
---
Four findings. The first is the whole document.
**1. The literature describes our deformed body in its own words, and prescribes a parametric body
prior as the cure. ICON's abstract, VERIFIED** verbatim:
"Current methods, however, are not robust to varied human poses and often produce 3D surfaces
with broken or disembodied limbs, missing details, or non-human shapes. The problem is that
these methods use global feature encoders that are sensitive to global pose."
ICON's answer is not a better generator. It is that both of its modules "exploit the SMPL(-X) body
model" — normals conditioned on SMPL-X normals, and an inference-time feedback loop that "alternates
between refining the SMPL(-X) mesh using the inferred clothed normals and then refining the normals"
[<https://arxiv.org/abs/2112.09127>, fetched]. ECON extends the same idea, treating the parametric
model as "a 'canvas' for stitching together detailed surface patches", registering its front/back
2.5D surfaces "with the help of a SMPL-X body mesh recovered from the image" and then
"'inpaint[ing]' the missing geometry" between them VERIFIED from the fetched ECON abstract
[<https://ar5iv.labs.arxiv.org/html/2212.07422>]. **The prior is the load-bearing component, not an
accessory.**
[CORRECTED 2026-08-08] This sentence previously quoted ECON as retraining IF-Nets "to be
conditioned on the SMPL-X body for robust shape infilling". That string is not in ECON's abstract;
the abstract wording now quoted is. IF-Nets+ is genuinely ECON's infilling network, but it is named
in the paper body, not the abstract, and was not verified this pass.
Our bounded_fit.py / fit_a14.py arm has no body prior at any stage — not at generation, not
at cleanup, not at fit, not at measurement. It is the exact configuration the field abandoned.
**2. Our fitting direction is the inverse of the industry's, and the inversion is the mechanism of
the damage. The production route is wrap a clean template ONTO the generated surface** —
non-rigid ICP with stiffness annealing (Amberg et al., CVPR 2007), productised as R3DS/Faceform
Wrap and, as of 2026, as Reallusion's CC Wrap, which exists specifically because "As AI-generated
3D models become increasingly prevalent in the industry, integrating these static assets into
professional animation pipelines has become a vital need", and which lets you "wrap any
models—alongside traditional 3D models and cloth meshes—into standard Character Creator (CC)
topology" (VERIFIED by fetch, Reallusion 2026 Vision, 2026-04-08). Our route **deforms the generated surface
to hit scalar girth targets**. The template route cannot produce a deformed body, because the
template is anatomically correct by construction and only its *pose and proportion* move. Our route
can produce nothing else once a measurement is wrong, because the mesh is the only thing that gives.
3. Anthropometry belongs in a shape-parameter space, never in vertex displacement. A2B
(CVSports@CVPR'25) converts tailor measurements into body shape parameters and replaces the
estimator's shape parameters with them, "guarantee[ing] consistent body shapes" and cutting MPJPE by
"over 30mm" [<https://arxiv.org/abs/2409.17671>, fetched]. A parametric shape space cannot represent
a 35%-oversized chest on a 14-year-old, so driving a measurement through it is *safe by
construction*. Driving the same measurement through free vertices is safe only if the measurement
is right — which brings us to the fourth finding.
**4. Our girth measurement itself deviates from the published protocol, and the deviation is
precisely the confound our own file documents. CALVIS locates the chest by segmenting the mesh
with skeleton joints and finding the axilla by ray-casting from the shoulder joint** to establish an
upper bound, then takes the extremum *within the chest region only*
[<https://ar5iv.labs.arxiv.org/html/2003.00834>, fetched]. Our fit_a14.py takes a whole-figure
horizontal section and asks a *topological* question of it (does a loop span the body axis), then —
when the spanning loop turns out to enclose the arms — declines to score the site. Declining is
honest and it is not a fix: the site stays unmeasured, and the shipped A3_FIT run, which had no such
guard, drove the 110.85 cm arms-plus-torso loop to an 81.93 cm chest target and cost the ladder its
single worst transition.
The one-line answer. The deformed body is not a generator failure and not a fitting-strength
failure. It is what happens when an unconstrained free-vertex fitter is driven by a measurement
taken without body-part segmentation, on a mesh with no anatomical prior anywhere in the chain.
Every one of those three has a published, cheap, licence-clean fix.
---
The problem statement is old and settled. Single-image human reconstruction with a global implicit
encoder is not pose-robust; it hallucinates non-human topology. The fix, repeated across a decade of
papers, is to make a parametric human the *conditioning signal* and the *completion prior*:
normals; a visibility-aware implicit surface regressor; an inference-time loop that refines the
SMPL-X fit and the normals against each other. VERIFIED from the fetched abstract.
surfaces, called d-BiNI, that are equally detailed, yet incomplete", registers them against "a
SMPL-X body mesh recovered from the image", and "'inpaints' the missing geometry between d-BiNI
surfaces". VERIFIED from the fetched abstract. Its stated diagnosis of the prior-free
alternative matches ICON's: implicit-function methods "produce disembodied limbs or degenerate
shapes for novel poses or clothes". *(The infilling network is IF-Nets+ and the stitching is
Poisson, per the paper body — not verified this pass; the abstract names neither.)*
The transferable rule is not "use ICON." It is: **wherever a generative process is free to invent
surface, a fitted parametric body must be present to say what a body is.** That is as true of a
2026 rectified-flow SLAT generator as it was of a 2021 occupancy net — the generators changed, the
failure mode did not, which is why TRELLIS still has a documented Janus problem on characters
(SEARCH-SUMMARY, datameister / practitioner reports).
The second use of the prior is the one that matters most for alteration. Rather than measuring a
generated mesh directly, you fit a parametric model to it and then work in the model's space.
fit of SMPL-X to 2D/3D observations. SEARCH-SUMMARY.
in this document. VERIFIED** from the fetched abstract:
which is **frequently impractical, especially for AI-generated assets where scale distortion is
common**." That is our generator's output described by name.
landmarks", a scale predictor that "rescales subjects to canonical proportions", and an
optional plug-and-play image adapter that fuses RGB "to compensate for missing geometry".
to 80.9 percent across daily and loose clothing scenarios."
and "the first to achieve millimeter-level accuracy on CAPE and 4D-DRESS benchmarks" — are
VERIFIED on the project page <https://zcai0612.github.io/OmniFit/>, not in the arXiv
abstract. *[CORRECTED 2026-08-08: both were previously credited to the arXiv abstract.]*
which is what makes §1.4's child-band problem bite, and what ties this paper to R-10's licence
question.
OmniFit's *shape* is the piece to steal even if the weights are never run: **dense landmark
prediction on the surface → scale normalisation → parameter solve.** Landmarks are what make a
measurement site anatomical rather than geometric. Our site picker resolves a chest by asking which
loop spans the symmetry axis; a landmark-based picker resolves it by asking where the axilla is.
One of those is a fact about a body and the other is a fact about a bounding box.
The model survey in PIPE_CHARACTER_MODELS_2026-08-06.md §7 owns this table; this pass adds three
corrections and one new candidate rather than restating it.
| Model | What it adds for FITTING | Licence read (2026-08-08) |
|---|---|---|
| SMPL / SMPL-X / SUPR | the field's reference shape spaces; every fitter above targets them; SUPR adds a sparse part decomposition with expressive head, articulated hand and a novel foot (Osman et al., ECCV 2022) | NOT "licence-dead" — licence-PAID. The free model licence is non-commercial: "Any other use, in particular any use for commercial purposes, is prohibited." A commercial route is named on that same page, VERIFIED verbatim: "The software/data is also available for commercial licensing through Meshcapade.com. For commercial use please email smpl@max-planck-innovation.de" [<https://smpl.is.tue.mpg.de/modellicense.html>, fetched]. Live caveat: Meshcapade is now part of Epic Games and "the Meshcapade online platforms have been shut down" [<https://meshcapade.com/>, fetched], so the Meshcapade leg of that sentence may be stale — the Max Planck Innovation address is the contact to use. See GAP NOTE G-7 |
| FLAME 2023 Open | head shape + expression space; the fitting target for every face-registration pipeline | CC-BY-4.0, commercial permitted — and the carve-out is *only* the 2023 Open model; every earlier FLAME stays non-commercial. VERIFIED by fetch of the model-licence page: Max Planck "grants you the right to share and adapt the model for any purpose, including commercial use", while FLAME 2017/2019/2020 are limited to "non-commercial scientific research, non-commercial education, or non-commercial artistic projects" |
| Anny (NAVER Labs Europe) | a parameter space covering "the full human lifespan – from infants to the elderly", built from MakeHuman community anthropometry plus WHO data rather than from 3D scans | Apache-2.0, VERIFIED: "Released under Apache 2.0 for unrestricted use", with "no registration or gated downloads" [<https://europe.naverlabs.com/blog/anny-a-free-to-use-3d-human-parametric-model-for-all-ages/>, fetched]. Do not select the smplx topology variant (sibling doc §7.1) |
| UMTRI Child Body Shape *(new to this survey)* | a statistical child body model: 137 children ages 3-11, VITUS XXL scans at ~2 mm, driven by stature (100-160 cm), BMI (11-27), and sitting-height-to-stature ratio, emitting a mesh plus "3D coordinates of 138 surface landmarks and estimated joint center locations". Mean torso prediction error 10.4 mm, 95th percentile 24.0 mm | UNSTATED. The research page carries no licence, no download terms and no distribution grant. VERIFIED by fetch — the absence is the finding. Treat as a *landmark-definition and validation reference*, not as shippable geometry |
The UMTRI entry is worth its row for one reason: it publishes **138 surface landmarks and joint
centres on a child body**. That is exactly the missing input for §4's measurement fix, and using a
published landmark *definition* to inform our own site picker is a citation, not a redistribution.
The sibling doc established that MHR excludes minors by construction and MetaHuman is still
childless at 5.8. This pass adds the fitting-side consequence: **every off-the-shelf fitter in §1.2
targets an adult-trained shape space.** OmniFit fits SMPL-X; SMPL-X's shape PCA is adult. Fitting a
14-year-old through an adult basis will find the nearest adult, and the residual — short limbs,
narrow shoulders, a large cranial fraction — will be pushed into whatever free-form layer sits on
top. This is not a reason to skip the prior. It is a reason to make the prior Anny (whose space
spans infants to elders) and to validate the age band against UMTRI's published child anthropometry
rather than against an adult standard.
---
The sibling doc benched these. This section records only the craft-relevant properties: what
the output *shape* is, and what that costs downstream.
Structured LATent (SLAT) — a sparsely populated 3D grid carrying dense multiview features from a
vision foundation model, decodable to mesh, radiance field or 3D Gaussians, driven by rectified-flow
transformers [<https://microsoft.github.io/TRELLIS/>, arXiv 2412.01506, CVPR 2025 Highlight;
TRELLIS.2 at <https://github.com/microsoft/TRELLIS.2>]. The project page describes SLAT verbatim as
integrating "a sparsely-populated 3D grid with dense multiview visual features extracted from a
powerful vision foundation model", decodable to "Radiance Fields, 3D Gaussians, and meshes", with
"rectified flow transformers tailored for SLAT" as the backbone. VERIFIED by fetch.
*[CORRECTED 2026-08-08: previously said "CVPR'25 Spotlight"; the project page says Highlight.]*
Craft consequences, SEARCH-SUMMARY:
hair or a hood should be, "because the model's training data heavily biases human faces, and the
lack of rear-view information causes the diffusion process to fall back on its strongest priors."
conditioning.
"difficult to finetune due to high diversity in general shape" while ~1000 homogeneous screws
converged; ~20 GB VRAM at batch 1; overfitting from ~3,000 iterations, with the warning that
"decreasing training loss alone is a poor indicator of generalization quality"
[<https://datameister.ai/blog/three-challenges-in-finetuning-trellis/>, fetched].
2.1 is shape (DiT) plus PBR paint [<https://github.com/tencent-hunyuan/hunyuan3d-2.1>, arXiv
2506.15442]. It remains disqualified for us on licence per the sibling doc §9, and that finding
is not reopened here.
Hunyuan3D-Omni (arXiv 2509.21245) is the craft-relevant one regardless of whether we may ship
it, because it demonstrates the mechanism: beyond images it accepts **point clouds, voxels, bounding
boxes and skeletal pose priors** as conditioning, unified by "represent[ing] them as a type of point
cloud", trained with difficulty-aware sampling that biases toward the hard signal (skeletal pose).
SEARCH-SUMMARY. **The lesson is transferable and licence-free: an image alone is an underdetermined
control signal for a body, and the field's answer is to add a skeletal/volumetric control channel.**
A fitted parametric body is precisely such a channel.
1.5 B-parameter rectified-flow transformer over 2048 latent tokens, with an SDF VAE trained under
hybrid SDF + normal + eikonal supervision, on a 2 M-sample curated corpus [arXiv 2502.06608,
<https://github.com/VAST-AI-Research/TripoSG>]. This is our incumbent and the sibling doc's bench
held it. Craft note: an SDF/iso-surface output is a single fused watertight shell. It has no
parts, no seams, no edge flow and no aperture. Everything in §3 and §5 exists to convert that.
These matter less as models than as evidence of what a production pipeline demands, because
each one has converged on the same feature list:
[<https://developer.hyper3d.ai/api-specification/rodin-generation-gen2_reset_v.md>]: a **TAPose
flag explicitly for humanoids** — "When generating the human-like model, this parameter control the
generation result to T/A Pose. When true, your model will be either T pose or A pose" — and
tiered mesh budgets, quad mode at 50k / 18k / 8k / 4k faces and raw (triangle) mode at
500k / 150k / 20k / 2k, with custom ranges of 500–1,000,000 raw faces and 1,000–200,000 quad
faces. From the 80.lv interview, VERIFIED by fetch: "BANG-based part decomposition for
flexible part-level refinement"; 3D-native texturing, "where colors and materials are generated
directly on the surface of the 3D model itself"; a "Smart Low-Poly" remesher that "uses a GPT-like
autoregressive approach to reconstruct meshes face by face"; and the candid admission that "AI
outputs can still be inconsistent, and they often need human refinement to meet production
standards", with caution about "final production quality, especially in complex cases requiring
strict topology, animation-ready edge flow, or highly specific art direction"
[<https://80.lv/articles/how-hyper3d-rodin-gen-2-5-is-bringing-production-level-control-to-ai-3d-generation>].
> [CORRECTED 2026-08-08] The TAPose flag and the quad/triangle tiers were previously
> attributed to the 80.lv interview, which contains neither. Both are real; both live in the API
> specification, which is now cited and added to SOURCES. The claims are unchanged in substance —
> only the citation was wrong.
"A million unoptimized triangles will slow down any real-time scene"; on why quads deform better,
"Quads flow in loops, which is exactly what animation needs. When an elbow bends, well-placed quad
loops compress and stretch predictably"; on rigging, "Uneven polygon density gives you lumpy
deformations at joints when a character bends"; on UVs, "Irregular topology makes seams
unpredictable and texture stretching hard to avoid"; and on where hand authoring still wins,
manual retopology lets an artist steer "edge loops around the eyes and mouth"
[<https://www.meshy.ai/tutorials/ai-retopology-guide>, VERIFIED by fetch].
Read the caveat honestly: the same page also says "Triangles are what game engines render
anyway" — the quad argument there is about *deformation and authoring*, not about runtime.
> [CORRECTED 2026-08-08 — FABRICATION] Three strings previously quoted from this page appear
> nowhere on it: "export a bloated, two-million-polygon asset into a secondary program";
> "quad-based meshes bend smoothly, while messy triangulated topology pinches and tears at elbows,
> knees, and shoulders"; and an "auto-rigging in ~30 s" figure. All three were checked as exact
> strings and returned no match. The page's real wording is quoted above and supports the same
> conclusion, so nothing downstream collapses — but the invented sentences are removed, including
> the two places §5 and R-6 re-quoted them.
Read together, the commercial consensus is a four-item checklist that no open generator emits and
every shipped character needs: **canonical pose, quad edge flow with joint loops, part separation,
UVs.**
CharacterGen (Peng, Zhang, Guo, Cao, Hu — ACM TOG 2024 / SIGGRAPH'24, arXiv 2402.17214,
<https://zjp-shadow.github.io/publications/charactergen>) exists entirely to solve this: an
image-conditioned multi-view diffusion model "effectively calibrates input poses to a canonical
form while retaining key attributes of the input image", feeding "a transformer-based, generalizable
sparse-view reconstruction model", producing "3D pose-unified character meshes with high-quality and
consistent appearance, which can be directly utilized in downstream rigging and animation workflows".
VERIFIED — the first two quotes from the fetched arXiv abstract, the third from the fetched
project page (SIGGRAPH 2024 / ACM TOG 43(4), DOI 10.1145/3658217).
The craft rule: canonicalise the pose BEFORE any measurement or fit. A girth taken at a fixed
world-space height on a mesh whose arms hang against the flanks is a different quantity from the
same girth on an A-posed mesh — which is the entire content of our chest confound.
---
This is the section the domain brief asked for, and it is where our stack diverges.
Free vertices, driven by a displacement field, toward numeric girth targets. **This is
build/3d/hi3dgen/fit_a14.py and build/3d/best_a14/bounded_fit.py.**
Properties: preserves the generator's surface detail exactly where it is not driven; requires no
template, no correspondence and no licence; and is completely unconstrained — nothing in the
operator knows what a body is, so a wrong target or a wrong measurement translates one-for-one into
deformed anatomy. bounded_fit.py is a genuinely good mitigation of this (per-site attribution, a
greedy accumulation gated on a mutation-proven sensitivity floor, a published alpha ladder, and a
confound control on every rejection) — but mitigation is what it is. It buys the right to *stop*;
it does not buy anatomical correctness, and its own record shows the stop point is "accept almost
nothing", which is the correct answer to the wrong question.
**Where the literature uses this doctrine: as a final detail-transfer layer, on top of a fitted
template, never as the primary shape operator.**
Non-rigid ICP: take a base mesh with the topology you want and deform it to the target surface.
The canonical algorithm is **Amberg, Romdhani & Vetter, "Optimal Step Nonrigid ICP Algorithms for
Surface Registration", CVPR 2007** (DOI 10.1109/CVPR.2007.383165) — the algorithm loops over a
series of decreasing stiffness weights, incrementally deforming the template toward the target so
that global and then local deformation is recovered, under a locally-affine regulariser that
penalises the difference in transformation between neighbouring vertices. Landmark-guided
initialisation precedes the non-rigid stage; staged coarse-to-fine registration with increasing
correspondence sets is standard.
[CORRECTED 2026-08-08] The paper, authors, venue and DOI are VERIFIED via Semantic Scholar.
The previously cited PDF mirror (vigir.missouri.edu) is unreachable — connection refused —
and no mirror served the abstract text this pass, so the sentence above is UNVERIFIED-QUOTE:
quotation marks removed and the wording paraphrased, because the exact phrasing could not be
confirmed. The method description is corroborated by the reference implementation, which states it
is "based on Amberg et al" and implements "local affine transformations, stiffness constraints,
and Laplacian smoothing terms" [<https://github.com/golkir/optimal-step-nonrigid-icp>, fetched].
Re-verify the abstract wording against IEEE Xplore before quoting it anywhere.
Productised, this is the actual character pipeline:
scan's surface; the product page's own framing, VERIFIED verbatim, is that "Wrap is used to
convert huge sets of facial/body scans into a consistent topology, which provides a great source
of training data for facial generation, statistical, medical, machine learning and other
applications." Wrap4D does the same for sequences. Framestore, The Mill, EA Canada and
Rocksteady Studios are VERIFIED as named users (client logos on the product page)
[<https://faceform.com/wraporiginal/>, fetched].
*[CORRECTED 2026-08-08: the first clause was previously in quotation marks as the vendor's own
words; that exact sentence is not on the cited page, so it is now an unquoted paraphrase and the
one sentence that IS verbatim carries the citation.]*
because "AI-generated 3D models become increasingly prevalent" and lets you "wrap any
models — alongside traditional 3D models and cloth meshes — into standard Character Creator (CC)
topology". SEARCH-SUMMARY.
a 2026 research instance of the same doctrine: "a coarse-to-fine optimization pipeline that
refines a rigged template across three stages -- rig, joint, and vertex", producing "meshes with
semantically meaningful edge flow and industry-grade topology", validated by a user study of
22 professional technical artists. VERIFIED by fetch. Note the stage order: **rig first,
joints second, vertices last** — free-vertex motion is the *smallest and last* operator, after
the skeletal and articulated degrees of freedom have absorbed everything they can.
That stage order is the single most actionable sentence in this document.
Fit a parametric model to the generated surface (§1.2), enforce the anthropometry **as shape
parameters** (§0 finding 3, A2B), pose it canonically, and then transfer the generator's
high-frequency surface as displacement/normal detail onto the parametric result.
This is what build/3d/cage/body_stage/solve_metahuman_body_age.py already argues for, in this
repo, in its own docstring: *"solve the body parametrically in the editor at the rung's own
measurements and export that, instead of conforming a template afterwards."* **We have both
doctrines live in this repository and they have never been adjudicated against each other.**
| Doctrine A (ours) | Doctrine B (wrap) | Doctrine C (parametric solve) | |
|---|---|---|---|
| Can it emit a deformed body? | yes, trivially | no — template is correct by construction | no — outside the shape space |
| Preserves generator detail | best | via detail transfer | via detail transfer |
| Emits quads / edge flow / UVs | no | yes, inherited from template | yes, inherited from model |
| Emits a rig | no | inherited if the template is rigged | yes |
| Needs correspondence | no | yes (landmarks) | yes (landmarks) |
| Licence cost | none | template-dependent | model-dependent |
| Used in the literature as primary | no | yes | yes |
Doctrine A is not wrong as a *layer*. It is wrong as the *only* layer. The published pipelines run
C or B as the shape operator, then A as a bounded detail pass — which is exactly what
bounded_fit.py's alpha ladder is already built to control, just applied at the wrong point in the
chain.
---
Our fitter is driven by girth targets, so the measurement operator is load-bearing and deserves its
own section. The published protocol has three components. We implement one and a half.
Component 1 — the plane and the section. Slice with a plane parallel to the floor, extract the
intersection curve. CALVIS: "a plane π_j parallel (with normal n→||) to the floor to intersect the
mesh at point q_j", slicing "every m-meters along the y-axis"; the boundary is "a polygonal curve
consisting in segments with length s_i" [<https://ar5iv.labs.arxiv.org/html/2003.00834>, fetched].
We do this — section_probe.read_section.
Component 2 — the taut band. A tape measure does not follow concavities, so a raw section
perimeter under-reads a real tape over a concave region. One family of methods answers this with the
2D convex hull of the contour. CALVIS itself does not: it surveys, in §2.3, "methods that
calculate waist and chest circumference by slicing the mesh on a fixed plane and compute the convex
hull of the contour" and then explicitly departs from them, computing instead the boundary length of
the intersection curve directly. VERIFIED by fetch — the strings "taut" and "taut tape or band"
appear nowhere in CALVIS.
[CORRECTED 2026-08-08 — FABRICATION] This component previously asserted that the published
protocol takes the convex hull "to better simulate the taut tape or band", and attributed a
"36 measurements: 23 lengths, 13 circumferences" figure to SMPL-X measurement toolkits. Neither
survives: the quoted phrase is in no fetched source, CALVIS is the *counter*-example rather than
the exemplar, and the one SMPL-X anthropometry toolkit checked
(<https://github.com/DavidBoja/SMPL-Anthropometry>) defines 16 measurements — 7 lengths and 9
circumferences — and does not use a convex hull either. The convex-hull family is real (CALVIS
cites it as prior work); the claim that it is *the* standard, and the numbers, are withdrawn.
Where that leaves us. section_probe.cluster_reading computes an angular-bin radial envelope
around the cluster centre and reports girth_cm from it, with a positive control asserting envelope
and exact perimeter agree on simple non-annular sections. That is a taut-band approximation and it is
defensible. It now sits between two published alternatives — hull-of-contour and raw-perimeter — and
has been compared against neither. See GAP NOTE G-4.
**Component 3 — restrict the section to the body part. This is the one we do not do, and it is the
one that caused the damage. CALVIS segments the mesh into regions using skeleton joints** as
boundaries, and for the chest specifically: "The chest circumference c_c is measured below the
armpits ... using the shoulder joint as a hint to locate the axilla and establish a upper bound",
with the axilla found by ray-casting from the shoulder joint and the chest region then defined
as the vertices between the waist and that axilla reference. VERIFIED by fetch.
Our fit_a14.py replaces part-restriction with a topological rule (take the loop that spans the
symmetry axis) plus a width bound (reject if the spanning loop is wider than the spec's widest
soft-tissue breadth). The file's own docstring is explicit that this is a deliberate substitution
for the hand-declared confounds in proportion_review.py. On a mesh with arms clear of the flanks
it works. On our A14 mesh it does not: bounded_fit.py records that the loop's **width stayed under
the 45.07 cm bound while its perimeter enclosed both arms** — a case the width test cannot see, and
which part-restriction would never have produced, because the arm vertices would not have been in
the section at all.
The fix is small and it needs no new model. A joint/landmark set on the mesh (from a fitted
parametric body per §1.2, or from a landmark predictor, or in the interim from the existing
harness/asset_factory/multiview_registration.py landmark machinery) gives an axilla height and a
part label per vertex. Restrict the section to torso vertices; the 110.85 cm loop stops existing;
the site becomes scorable instead of rejected; and the greedy accumulation in bounded_fit.py gets
a real chest to accept instead of a confound to decline.
A caution from the same literature. "Investigating Anthropometric Fidelity in SAM 3D Body"
(Aiersilan, Cheng, Hahn — arXiv 2601.06035) exists because anthropometric error in AI body
reconstruction is a live problem even in strong 2026 models. VERIFIED by fetch: the paper
"reveals a specific and consistent limitation: the model struggles to reconstruct detailed
anthropometric deviations" in populations with distinctive morphology — muscle atrophy, scoliosis,
pregnancy. That is directly on point for us, because **a 14-year-old is exactly such a deviation from
an adult-trained prior** (§1.4). It is cited here for the *shape* of the concern; no magnitude was
extracted. See GAP NOTE G-9.
---
An SDF iso-surface is not an asset. The published conversion path is stable and old:
Automatic quad remeshing.
ACM TOG (SIGGRAPH Asia 2015), <https://igl.ethz.ch/projects/instant-meshes/>,
<https://github.com/wjakob/instant-meshes>. VERIFIED verbatim from the ETH project page:
"a unified local smoothing operator that optimizes both the edge orientations and vertex positions
in the output mesh", which "produces meshes with high isotropy while naturally aligning and
snapping edges to sharp features", "executes instantly (less than a second) on meshes with hundreds
of thousands of faces", and can "process a variety of input surface representations, such as point
clouds, range scans and triangle meshes". (The page also records an SGP Outstanding Software Award
2020 and a SIGGRAPH Asia Test of Time Award 2025 — this is settled, load-bearing technique, not a
novelty.)
even quad field, with Adaptive Size trading quad density against curvature, plus Density,
Angle, Hard Edges and Symmetry controls, and hosts in Blender, Maya, 3ds Max, ZBrush and Houdini
(SideFX Labs). User doc: <https://www.exoside.com/quadremesherdata/QuadRemesher_1.0_UserDoc.pdf>.
SEARCH-SUMMARY.
GPT-like autoregressive approach to reconstruct meshes face by face, producing artist-style
triangle and quad geometry", still in beta by the vendor's own admission (VERIFIED, 80.lv).
The critical limitation of all of them, and it is the reason Doctrine B exists. Automatic
remeshers produce *even, curvature-adaptive* quads. They do not produce anatomical edge flow —
loops around the eyes and mouth, loops at the elbow, knee and shoulder that let the mesh bend
without pinching. Meshy names both halves of this: quad loops matter because "when an elbow bends,
well-placed quad loops compress and stretch predictably", and "uneven polygon density gives you
lumpy deformations at joints when a character bends" — while the placement that a face needs, "edge
loops around the eyes and mouth", is what the page attributes to *manual* retopology, not to the
automatic pass. A wrapped template carries that edge flow for free because a human authored it once.
**Auto-retopo is the right tool for props and creatures; it is the wrong tool for a hero character's
deforming regions.**
*[CORRECTED 2026-08-08: the sentence previously quoted here — unstructured topology "pinches and
tears at elbows, knees, and shoulders" — is not on the cited page. Replaced with the page's verified
wording, which carries the same point.]*
Manual retopology with shrinkwrap remains the practitioner fallback: build the new quad cage and
let a Shrinkwrap modifier snap every placed vertex to the high-poly surface. SEARCH-SUMMARY across
current Blender workflow guides.
Repair. Generated meshes carry non-manifold edges, self-intersections and stray internal shells.
Our chain already handles the last of these (build/3d/hi3dgen/clean_shells.py, which
bounded_fit.py's record notes costs zero measurable likeness — A1_GENERATE and A2_CLEAN are
identical to eight decimals on all four channels and all three views). That is a good precedent and
the same "prove the cleanup is free" discipline should extend to any remesh stage.
The photogrammetry lineage is the same pipeline. Scan-to-game-asset practice — dense irregular
mesh → retopologise → rebuild UVs → bake normals → author LODs → wrap shared topology → sculpt
blendshapes as ZBrush layers on the neutral — is decades old and directly transferable, because an
AI mesh has exactly the properties of a scan: dense, irregular, unrigged, unwrapped. The GDC talk
lineage here (DICE, *Star Wars Battlefront* photogrammetry) is on the GDC Vault; practitioner
write-ups at gamedeveloper.com and 80.lv carry the workflow. SEARCH-SUMMARY.
---
Three published examples of the whole chain, each confirming the same shape.
DreamCharacter-1 (arXiv 2607.07817) — "a lightweight post-adaptation framework that
calibrates pretrained 3D foundation models toward high-fidelity, production-ready 3D character
generation", with three components: "geometry post-training, which enhances fine-grained surface
details through geometric preference optimization; texture post-training, which synthesizes
high-resolution textures and refines the appearance of occluded regions; and inference
acceleration". VERIFIED from the fetched abstract. The instructive part is what the abstract
does not claim: no parametric prior, no canonicalisation, no retopology, no rigging, no UV
policy. It improves the *generation*; it does not close the *production* gap. See GAP NOTE G-6 —
this is the paper closest to "generate rich, fit lightly", and it is silent on exactly the stages
where our arm broke.
The Rodin production checklist (§2.4) is the most complete vendor statement of what production
demands: canonical T/A-pose, quad tiers, part separation, 3D-native texturing, and explicit
acknowledgement that strict topology and animation-ready edge flow still need a human.
Reallusion CC Wrap (§3.2) is the clearest single signal in the 2026 landscape: a major character
toolchain vendor shipped a wrap tool because AI meshes arrive without usable topology, and the
answer they chose was to conform them to an authored standard rather than to clean them in place.
---
Every item below was consulted. Fetch state is marked: [F] fetched and quoted, [S]
search-result synthesis only, [X] cited URL unreachable or wrong — see the inline correction.
Audit stamp 2026-08-08: every source carrying a load-bearing claim was re-fetched and checked
against what this document says of it. Existence and attribution are confirmed for all of them.
Where the wording claimed was not in the source, the quote was removed or replaced with the source's
real wording, marked [CORRECTED 2026-08-08] inline.
TAPose or any quad/triangle tier figuresTAPose and the mesh budgets). <https://developer.hyper3d.ai/api-specification/rodin-generation-gen2_reset_v.md> · <https://developer.hyper3d.ai/>---
Files: build/3d/hi3dgen/fit_a14.py, build/3d/best_a14/bounded_fit.py.
Rule: Doctrine A (§3.1) is permitted only as a bounded detail pass on top of a Doctrine B or
C result — never as the primary shape operator. Grounding: ICON's "broken or disembodied limbs"
finding and its SMPL-X-conditioned fix; the §3.4 table.
Test that this is armed: a run record that names no prior mesh or no fitted parametric model
should refuse to emit, exactly as bounded_fit.py already refuses when its positive control fails.
Files: build/3d/hi3dgen/fit_a14.py, build/3d/cage/solver_blender/bl_conform_ladder.py.
Rule: absorb proportion error in skeletal scale and joint placement before any vertex
displacement is computed. Grounding: arXiv 2605.04524's three-stage coarse-to-fine template
refinement, user-validated by 22 professional technical artists.
Consequence for us: a 35% chest residual should first be tested as a *skeleton scale* error
(is the ribcage joint span wrong?) and only then as a surface error.
Files: build/3d/hi3dgen/fit_a14.py :: resolve_sites / measure_all,
build/3d/hi3dgen/section_probe.py :: read_section.
Rule: implement CALVIS component 3 — segment by skeleton joints, locate the axilla by ray-cast
from the shoulder joint, and pass read_section only the vertices of the target part. The
axis-spanning rule and the width bound stay as a second guard, not the first.
Why this is the highest-value single change in this document: it converts the chest site from
*rejected* to *scorable*, and it removes by construction the 110.85 cm loop that
bounded_fit.py's confound control exists to explain.
Files: build/3d/characters/body_specs/BODY_AGE_*_RESEARCH.json,
build/3d/cage/body_stage/solve_metahuman_body_age.py.
Rule: girth targets are inputs to a parameter solve (A2B pattern), and the mesh is
*sampled* from the solved parameters. Free-vertex girth driving is retired as a primary operator.
Grounding: A2B, "guarantees consistent body shapes", >30 mm MPJPE improvement.
Files: the whole build/3d/finish_a14/ chain; build/3d/hi3dgen/run_a14_arms.py.
Rule: the mesh entering measurement is A-pose or T-pose with arms clear of the flanks.
Grounding: CharacterGen's entire premise; Rodin's TAPose: true shipping as a rigging prerequisite.
Note: this alone would have prevented the A3_FIT defect, independently of R-3.
Files: any future remesh stage; build/3d/finish_a14/uv/.
Rule: Instant Meshes / QuadRemesher may serve the accessory and creature classes. A hero
character's face, shoulders, elbows and knees take their edge flow from an authored template via
non-rigid ICP. Grounding (re-checked 2026-08-08, all verified): Rodin's admission that "AI
outputs ... often need human refinement to meet production standards", specifically "in complex
cases requiring strict topology, animation-ready edge flow, or highly specific art direction";
Meshy's statement that "uneven polygon density gives you lumpy deformations at joints when a
character bends" and that the eye/mouth loop placement a face needs comes from *manual* retopology;
and the existence of R3DS/Faceform Wrap and Reallusion CC Wrap as shipping products, the latter
built because "AI-generated 3D models become increasingly prevalent in the industry".
*[CORRECTED 2026-08-08: the first grounding clause previously cited a Meshy sentence that does not
exist. The rule stands on verified evidence; only its citation changed.]*
Files: build/3d/hi3dgen/clean_shells.py (the precedent), any new remesh stage,
build/3d/best_a14/p1_score.py.
Rule: the A2_CLEAN precedent — identical to A1_GENERATE to eight decimals on all four channels
and all three views — is the house standard. Any topology-changing stage publishes the same
comparison through p1_score.py against the C4 sensitivity floor.
Files: build/3d/hi3dgen/run_trellis2_a14.py, build/3d/bench/.
Rule: an image is an underdetermined control signal for a body. Before benching another
generator, test whether a skeletal / volumetric conditioning channel closes the gap.
Grounding: Hunyuan3D-Omni's point-cloud/voxel/bbox/skeletal-pose conditioning, trained with the
skeletal signal deliberately upweighted as the hard case.
Files: harness/asset_factory/multiview_registration.py,
harness/asset_factory/face_landmark_warp.py, build/3d/best_a14/head_features/.
Rule: we already have landmark machinery on the 2D side. Extend it to emit **3D surface
landmarks and joint centres** on the mesh, and make those — not world-space heights — the anchors
for every measurement site. Grounding: OmniFit's dense-landmark formulation; UMTRI's published 138
child surface landmarks plus joint centres as a definition reference.
Files: docs/pipeline_review/tech_research/PIPE_CHARACTER_MODELS_2026-08-06.md §7.1,
docs/licence_records/.
Rule: under the licence-reads-never-conservative law, record SMPL/SMPL-X/SUPR as
commercially licensable — a price, not a prohibition — with the free model licence being
non-commercial. The verified contact is the one printed on the model licence page itself:
smpl@max-planck-innovation.de. Keep Anny as the preferred route on cost and on the child band,
but stop stating that the SMPL family is unavailable — that is an over-conservative read and it
removes every off-the-shelf fitter in §1.2 from consideration for the wrong reason.
Do not assert terms we have not been quoted. Meshcapade, the historical sublicensor, is now part
of Epic Games and its online platforms are shut down; its licensing page 403s. So the *route* is
verified and the *price and terms are unknown*. The action is: email the Max Planck Innovation
address and record the reply in docs/licence_records/ before any SMPL-targeting fitter is adopted.
[CORRECTED 2026-08-08 — FABRICATION] This rule previously asserted that Epic acquired
Meshcapade "in February 2026" and that SMPL licensing consequently "moved to Max Planck Innovation,
independent of Epic", quoting it as staying "available to researchers and commercial licensees".
The acquisition is real and is now cited. The February date, the transfer narrative, the
independence claim and the quoted sentence are supported by no source fetched: meshcapade.com gives
no acquisition date (only an 18 April platform shutdown), and the Max Planck Innovation address is
a long-standing contact printed on the model licence page, not the product of a transfer. The
rule's conclusion — licence-PAID, not licence-dead — survives on verified evidence, which is why it
is retained rather than withdrawn; the invented corporate history is removed.
---
Adopt now, no GPU hour required:
1. R-3, the part-restricted girth section. A pure-Python change inside
fit_a14.py + section_probe.py. It is the smallest change with the largest measured
consequence, and bounded_fit.py already has the instrumentation to prove it worked (re-run the
solo attribution; the chest row should move from UNRESOLVED/rejected to a scored site with a
plausible residual).
2. R-5, pose canonicalisation as a precondition. Declared as a gate on the measurement stage.
3. R-7, the prove-it-is-free rule, extended from clean_shells.py to every future
topology-changing stage.
4. R-10, the SMPL licence re-read, landed as an in-place supersession in the sibling PIPE
document's §7.1 per the pipe-dossiers-bind law.
Adopt as the route, pending the director's ratification:
5. Doctrine C as the primary shape operator, Doctrine A demoted to a bounded detail pass.
Concretely: Anny (Apache-2.0, no gated download, spanning "the full human lifespan – from
infants to the elderly") as the body
prior, solved to the BODY_AGE_*_RESEARCH.json girths as shape parameters (R-4), posed
canonically, with the TripoSG generation's high-frequency surface transferred on top as
displacement — and bounded_fit.py's alpha ladder repurposed to control that transfer's
strength rather than the girth drive's. This keeps every strength of the current arm (the
generator's detail, the armed lens, the sensitivity-floor stop, the per-site attribution) and
removes the one property that makes a deformed body possible.
6. R-6, wrapped templates for hero deforming regions — non-rigid ICP with stiffness annealing
(Amberg), landmark-initialised from R-9.
Do not adopt:
measured verdict that TripoSG holds, and its own finding is that the generator was never the
defect.
carries its own licence question (R-10). Its method shape (dense landmarks → scale
normalisation → parameter solve) is adopted; its code is not, yet.
the model carries no published licence.
---
*The audit phase consumes this section. Each note names the file, the practice, the deviation, and
whether it is a defect or a declared trade.*
**G-1 — build/3d/best_a14/bounded_fit.py + build/3d/hi3dgen/fit_a14.py: no anatomical prior
anywhere in the chain.** Practice (§1.1, §3.2, §3.3): every published human-shape pipeline carries a
parametric body as regulariser, fitting target, or template. Ours carries none at generation,
cleanup, fit or measurement. Defect — this is the root cause named in the brief, and it is the
one deviation from which the others follow.
G-2 — fit_a14.py runs Doctrine A as the primary shape operator. Practice (§3.4): the
literature uses free-vertex displacement only as a final detail-transfer layer on top of a fitted
template or a solved parametric body. Defect of ordering, not of implementation —
bounded_fit.py is a well-built instance of the wrong stage position.
G-3 — no part-restriction in the girth measurement.
section_probe.read_section sections the whole figure; fit_a14.resolve_sites substitutes an
axis-spanning topological rule plus a width bound for CALVIS's skeleton-joint segmentation and
axilla ray-cast. bounded_fit.py's own confound control records the failure mode: width under the
45.07 cm bound, perimeter enclosing both arms. Defect. Highest-value fix in this document (R-3).
**G-4 — section_probe.cluster_reading's angular-bin radial envelope has never been compared against
either published alternative. Practice (§4 component 2): the literature carries two** treatments
of a section — convex hull of the contour (surveyed by CALVIS as prior work) and raw intersection
boundary length (CALVIS's own choice). Ours is a third thing: a defensible taut-band approximation
with a positive control on simple non-annular sections. The three coincide on a convex section and
diverge on a concave one — which is exactly what a torso section is. **Undeclared trade. Cheap to
test: measure all three on the same sections and publish the delta.**
*[REVISED 2026-08-08: this note previously called the convex hull "the published protocol" on the
strength of a quote that no source contains. CALVIS explicitly declines the hull. The gap is real
and if anything wider than stated — we differ from two published options, not one.]*
G-5 — two doctrines live in this repo and have never been adjudicated.
build/3d/cage/body_stage/solve_metahuman_body_age.py argues Doctrine C explicitly in its docstring
("solve the body parametrically ... instead of conforming a template afterwards"), while
build/3d/hi3dgen/fit_a14.py runs Doctrine A. No document ranks them, and
build/3d/V2_ROUTING_RATIFIED.json leaves the garmented humanoid body on HOLD. **Process gap — an
unmade decision, not a wrong one.**
**G-6 — "generate rich, fit lightly" has one published cousin and it is silent on our failure
stages.** DreamCharacter-1 (§6) is the closest published thing to our arm's philosophy, and its
abstract claims only geometry/texture post-training and inference acceleration. It offers no
parametric prior, no canonicalisation, no retopology, no rigging, no UV policy. **Our arm's
philosophy is not refuted by the literature so much as unaddressed by it** — which means the
evidence for it is ours to produce, and currently the only evidence on record is
LIKENESS_STAGE_LADDER_A14.json's verdict that A3_FIT was the worst transition on the chain.
G-7 — the sibling doc's §7.1 states the SMPL family is "licence-dead for us." Practice
(§1.3): the SMPL model licence page itself names a commercial route — "also available for commercial
licensing through Meshcapade.com. For commercial use please email smpl@max-planck-innovation.de"
(VERIFIED by fetch). **Over-conservative read, contrary to the licence-reads-never-conservative
law.** It is load-bearing: it removes SMPLify-X, OmniFit and every SMPL-X-targeting fitter from
consideration on a reason that is a price, not a prohibition. **Correct in place in the sibling
document — but correct it to what is verified, not more.**
*[REVISED 2026-08-08]* Two cautions the earlier draft did not carry. (a) The correction landing
in the sibling doc must say "commercially licensable, terms unquoted, contact
smpl@max-planck-innovation.de" — not that licensing "moved to Max Planck Innovation" after the
acquisition, which no source states. (b) Meshcapade "is now part of Epic Games" and "the
Meshcapade online platforms have been shut down"; its licensing page 403s. The half of the licence
page's sentence that points at Meshcapade.com may therefore be stale, which makes the terms
genuinely unknown rather than merely unquoted. **Get the reply in writing before this unlocks any
build decision.**
G-8 — CSM (Common Sense Machines) was named in the brief and not reached this pass. No source
fetched, no licence read, no capability claim. Coverage gap.
G-9 — the anthropometric-fidelity number is still missing, but the finding is now grounded.
arXiv 2601.06035's abstract was retrieved on the 2026-08-08 audit pass: the paper "reveals a
specific and consistent limitation: the model struggles to reconstruct detailed anthropometric
deviations" for atypical morphologies (muscle atrophy, scoliosis, pregnancy). **No magnitude was
extracted, so §4 still cites the concern without a number. Evidence gap — pull the tables before
any claim about how large AI anthropometric error is.** Note the direct relevance: an adolescent is
an anthropometric deviation from an adult-trained prior, which is §1.4's problem measured on someone
else's model.
G-10 — no landmark layer exists on the 3D side. harness/asset_factory/multiview_registration.py
and face_landmark_warp.py operate on plates. Every practice in §1.2, §3.2 and §4 assumes 3D
surface landmarks and joint centres on the mesh. **Missing component — it is the shared prerequisite
of R-2, R-3, R-4 and R-6, which makes it the first thing to build.**
G-11 — no retopology stage exists at all. The chain runs generation → clean shells → fit → UV →
bake. There is no quad remesh and no template wrap, so the shipped surface carries the generator's
triangulation into UV and bake. Practice (§5): every production chain retopologises, and hero
deforming regions get authored edge flow. **Structural gap, and it also bounds the LOD budget the
canon sheet names (24 k / 60 k / 120 k).**
G-12 — pose is not canonicalised or asserted anywhere. No stage checks or enforces A-pose/T-pose
before measurement, and the A14 mesh's arms lie against the flanks — the exact condition that makes
a torso section enclose them. Defect, and the cheapest independent fix for G-3's symptom.