nx_faceanat.nx
buildroot/runtime/nx_faceanat.nx
about
nx_faceanat.nx -- ★INSIDE-OUT face (operator 2026-07-08: "get the skeleton then muscles then skin, not
outside-in"; nx_anatomy_census verdict: build the SKULL+TISSUE-DEPTH rung FIRST). Instead of placing ellipsoids
by eyeball, DERIVE the face:
(1) POSITIONS from the anthropometric FACIAL CANONS -- rule of THIRDS (hairline->brow->subnasale->chin, equal)
+ rule of FIFTHS (face width = 5 eye-widths; eyes are fifths 2 & 4; nose = 1 fifth; mouth ~1.5 eye-widths).
(2) Z-RELIEF from FORENSIC SOFT-TISSUE-DEPTH tables (Rhine/De Greef-class, adult female, mm): the skin sits
proud of the bony skull by a MEASURED amount per landmark -- brow ridge proud, nasal root shallow,
cheekbone proud, temple recessed. = anatomically DERIVED form, not sculpted.
Fills the SAME nx_sdfrender arena as sdf_face (parts/mats/ops/blend) so it renders + PROJECTS + is measured by
the identical pipeline (the shared eye-line@178 / mouth@-390 frame keeps the A-R2 projection constants valid).
license_tier: ORIGINAL (data-driven per CLAUDE #2/#11: every number is a canon ratio or a tissue-depth value)
dependencies 2 imports · 12 importers
diagram shows first 10 each side; +0 more imports, +2 more importers in the complete lists below.
imports: nx_syscalls.nxnx_sdfrender.nx
imported by: nx_faceanat_gate.nxnx_faceanat_hires_gate.nxnx_faceanat_mesh_gate.nxnx_faceanat_morph_gate.nxnx_faceanat_stereo_gate.nxnx_faceanat_texbake_gate.nxnx_faceprofile_gate.nxnx_gsplat_aniso_gate.nxnx_gsplat_face_gate.nxnx_gsplat_photofit_gate.nxnx_gsplat_showcase.nxnx_persongen.nx
structs
| none |
consts
| 18 | const MMU: i64 = 35 |
functions
| 25 | func fa_tissue_z(base_z: i64, depth_mm10: i64) -> i64 { return base_z - depth_mm10 * MMU / 100 } // proud toward -z (camera); mm*10 in called by 1: faceanat_build |
| 27 | func faceanat_build(base: i64) -> i64 called by 13: mainmainmainbuild_idmainbuild_face+7 calls 7: sdf_clear_opssdf_set_floorsdf_set_mtx_ampfa_tissue_zsdf_set_opsdf_set_mat+1 |
| 103 | func faceanat_scale(base: i64, pct: i64) -> i64 called by 1: main |
| 117 | func fa_scale(base: i64, idx: i64, field: i64, pct: i64) -> i64 |
| 124 | func faceanat_morph_width(base: i64, pct: i64) -> i64 |
| 132 | func faceanat_morph_length(base: i64, pct: i64) -> i64 |
| 140 | func faceanat_morph_jaw(base: i64, pct: i64) -> i64 { fa_scale(base,2,3,pct); fa_scale(base,3,3,pct); return 0 } |
| 142 | func faceanat_morph_eyes(base: i64, pct: i64) -> i64 |
| 150 | func faceanat_morph_lips(base: i64, pct: i64) -> i64 { fa_scale(base,10,4,pct); fa_scale(base,11,4,pct); return 0 } |
| 152 | func faceanat_morph_nose(base: i64, pct: i64) -> i64 { fa_scale(base,4,4,pct); fa_scale(base,5,4,pct); return 0 } |
| 154 | func faceanat_morph_cheek(base: i64, pct: i64) -> i64 { fa_scale(base,6,5,pct); fa_scale(base,7,5,pct); return 0 } |