MASQ
NOTICES.txt
This app's own code (index.html, src/, tools/, everything outside assets/ and
vendor/) is original work by Phil Renato + Claude.
================================================================================
GNM (Generative aNthropometric Model) — Google
================================================================================
Source: https://github.com/google/gnm
License: Apache License, Version 2.0 (full text in ./LICENSE.txt)
Copyright: Google LLC
The binary assets in assets/ are a derived, transformed subset of GNM's
gnm_head.npz (v3.0, HEAD variant) and its two semantic-sampler .h5 decoder
models. Per Apache-2.0 section 4, this is a Derivative Work of GNM's data
files; this NOTICE plus ./LICENSE.txt carrying the full Apache-2.0 text is
included per that section's redistribution requirements. MASQ does not use,
imply, or claim any Google trademark.
COPIED AS-IS (float32/uint16 re-encoding only):
template.f32 template_vertex_positions, 17821 x 3
triangles.u16 triangles, 35324 x 3
quads.u16 quads, 17662 x 4 — GNM is natively a quad mesh
quad_uvs.f32 quad_uvs, 17662 x 4 x 2
triangle_uvs.f32 triangle_uvs, 35324 x 3 x 2
mirror_indices.u16 mirror_indices, 17821
vertex_groups.f32 vertex_groups, 46 named regions x 17821
skinning_weights.f32 skinning_weights, 4 joints x 17821
joint_positions.f32 template_joint_positions, 4 x 3
vertex_parts.u8 derived from vertex_groups by a priority-ordered
combination (skin / teeth / sclera / iris-pupil)
TRUNCATED AND QUANTIZED (float32 to float16):
identity_basis.f16 vertex_identity_basis, 253 -> 51 components
expression_basis.f16 expression_basis, 383 -> 93 components
The truncation budget and its empirical vertex-error analysis are FACE's;
worst-case vertex error is about 2.4 mm for identity and 2.3 mm for
expression, both under 1% of head height.
NOT REDISTRIBUTED: GNM's two semantic-sampler decoder models. They exist to
sample new identities and expressions at random, and MASQ does neither — it
blends the eight baked identity presets and uses the twenty-one baked
expression presets. Shipping weights nothing loads would be redistribution
for its own sake.
DERIVED BY THIS APP (tools/bake_maps.py, not GNM data but computed from it):
motion_map.f32, curvature.f32, seat.f32
MODEL LIMITATION, quoted from GNM's own README:
"This model was trained on datasets using binary gender categories and four
broad demographic groups based on conventions in 3DMM literature and data
availability. These categories do not fully represent the spectrum of human
gender identities or the full diversity of the global population."
MASQ surfaces this in the app itself, and on renato.design/masq/README.txt, as
a stated limit on any sizing conclusion drawn from this head — not only here.
(This file travels inside every export; that README does not.)
================================================================================
three.js
================================================================================
Source: https://github.com/mrdoob/three.js
License: MIT (full text in vendor/three/LICENSE)
Copyright: three.js authors
Vendored at vendor/three/ (core module plus OrbitControls), consistent with
this app's no-build-step architecture.
--------------------------------------------------------------------------------
QuadriFlow — compiled third-party C++, in src/remesh/ (2026-09-10, v00000-056)
--------------------------------------------------------------------------------
src/remesh/quadriflow.wasm + quadriflow.js is a WebAssembly build of
QuadriFlow (Huang, Zhou, Niessner, Shewchuk, Guibas — "QuadriFlow: A Scalable
and Robust Method for Quadrangulation", SGP 2018; github.com/hjwdzh/QuadriFlow
revision 27a6867, via Blender's extern/quadriflow tree). It is the SAME BINARY
Pgon ships, byte for byte, with Pgon's module API; quadriflow_engine.js is the
bridge and is original. It is what turns the mask's patch into an all-quad
cage for SuperB.
Six licences travel with it, each verified from its own licence file and
shipped verbatim in licenses/ (see licenses/README.txt for which covers what
and where the source is):
QuadriFlow BSD 3-Clause, plus the LBNL "no obligation" rider
Blender max-flow MIT (the Boost.Graph replacement; no Boost ships)
LEMON 1.3.1 Boost Software License 1.0
pcg32 Apache-2.0
Eigen 5.0.1 MPL-2.0 (BFloat16.h Apache-2.0)
pss BSD 3-Clause
QuadriFlow's README says "MIT"; its LICENSE.txt is not MIT, and this follows
the file. Nothing here uses any contributor's name to endorse this app.
--------------------------------------------------------------------------------
rhino3dm — compiled third-party C++, in vendor/rhino3dm/ (2026-09-12, v00000-075)
--------------------------------------------------------------------------------
vendor/rhino3dm/rhino3dm.wasm + rhino3dm.module.js is a WebAssembly build of
McNeel's rhino3dm 8.32 (github.com/mcneel/rhino3dm, branch 8.x), which wraps
the openNURBS toolkit. It is what writes the SuperB to a .3dm as a Rhino SubD,
and it is fetched only when a .3dm export is asked for. The build is the one
Unreason3D ships, with two local binding patches shipped beside it
(brep_authoring.patch, subd_authoring.patch) — the released binding can read a
SubD and not build one.
Licences, each verified from its own licence file and shipped verbatim in
licenses/:
rhino3dm MIT (rhino3dm-MIT.txt)
openNURBS McNeel's openNURBS licence, with zlib (openNURBS.txt)
Draco Apache-2.0 (Draco-Apache-2.0.txt)
Rhinoceros is a registered trademark of Robert McNeel & Associates; nothing
here uses their name to endorse this app.
--------------------------------------------------------------------------------
MediaPipe Face Landmarker — Google, in vendor/mediapipe/ (2026-09-19, v00000-142)
--------------------------------------------------------------------------------
vendor/mediapipe/vision_bundle.mjs and wasm/vision_wasm_internal.{js,wasm}
(with the _nosimd pair) are @mediapipe/tasks-vision 1.0.1 as published on
npm, unmodified; vendor/mediapipe/face_landmarker.task (3,758,596 bytes) is
the float16 Face Landmarker model, v1, from
storage.googleapis.com/mediapipe-models/face_landmarker/face_landmarker/float16/1/.
It finds 478 landmarks and 52 blendshapes in a photograph, in the browser;
nothing leaves the machine. It is fetched on the first photo, not at boot.
assets/mediapipe_gnm.json is derived by this app from the mean head's
render (tools/calibrate_mediapipe.mjs), like motion_map.f32.
Licence: Apache-2.0 (Apache-2.0.txt), for the library and the model.
Model provenance: google-ai-edge/mediapipe, issue 6355.
--------------------------------------------------------------------------------
Centina — this author's own SubD/NURBS kernel, in src/centina/
--------------------------------------------------------------------------------
Seven modules vendored from Unreason3D's kernel on 2026-09-10 (v00000-056):
vec3, basis, surface, subd, subdlimit, subdsimplify, subdconvert. Same author,
same licence as this project; Centina is published separately under MIT.
They evaluate the Catmull-Clark limit surface, refit a cage to it, and
validate what Unreason3D will accept.
================================================================================
Prior art
================================================================================
Work that MASQ borrows ideas or defaults from is cited in
MASQ_README_v00000-001.txt: ZBrush's mask-and-extract, Zomparelli/WASP's
myfacemask, the NIOSH bivariate fit test panel and ASTM F3407, the 2025
Textiles dynamic-fit method, Lecoq and Sartori's neutral mask, and SculptGL.
No code from any of them is included.
--------------------------------------------------------------------------------
Pgon — lift, meshkernel, maskops, outline, alphas, noise, lattice
--------------------------------------------------------------------------------
src/lift/ vendors seven modules from Pgon (~/Documents/claude/Pgon), another of
this author's tools, on 2026-09-07:
lift/lift.v00000-001.js the quad plate: selection, border relaxation,
contour snap, offset, rounded rim
meshkernel/meshkernel.v00000-002.js buildTopology and subdivideCatmullClark
deform/maskops.v00000-001.js dilate / erode, the margin's kernel
deform/noise.v00000-001.js \
deform/lattice.v00000-001.js > reached only through alphas
alphas/alphas.v00000-001.js /
outline/outline.v00000-001.js fieldLoops
Same author, same licence as this project. lift.v00000-001.js carries ONE MASQ
change, marked in a banner at the top of the file: optional per-vertex wall and
gap. Everything else is byte-identical to its source, deliberately, so a diff
stays meaningful. Notes back to Pgon are in MASQ_NOTES_TO_PGON_v00000-047.md.
--------------------------------------------------------------------------------
Terrain — AWS Terrain Tiles (Tilezen/Mapzen terrarium)
--------------------------------------------------------------------------------
assets/terrain/*.hgt.bin are 256 x 256 height grids baked by tools/bake_terrain.mjs
from https://registry.opendata.aws/terrain-tiles/ (the terrarium PNG tiles), each
covering the place named in assets/terrain/manifest.json. Attribution, per
https://github.com/tilezen/joerd/blob/master/docs/attribution.md, which every
export carrying a terrain also writes into its README:
ArcticDEM terrain data DEM(s) were created from DigitalGlobe, Inc., imagery and
funded under National Science Foundation awards 1043681, 1559691, and 1542736;
Australia terrain data © Commonwealth of Australia (Geoscience Australia) 2017;
Austria terrain data © offene Daten Österreichs – Digitales Geländemodell (DGM)
Österreich;
Canada terrain data contains information licensed under the Open Government
Licence – Canada;
Europe terrain data produced using Copernicus data and information funded by the
European Union - EU-DEM layers;
Global ETOPO1 terrain data U.S. National Oceanic and Atmospheric Administration
Mexico terrain data source: INEGI, Continental relief, 2016;
New Zealand terrain data Copyright 2011 Crown copyright (c) Land Information New
Zealand and the New Zealand Government (All rights reserved);
Norway terrain data © Kartverket;
United Kingdom terrain data © Environment Agency copyright and/or database right
2015. All rights reserved;
United States 3DEP (formerly NED) and global GMTED2010 and SRTM terrain data
courtesy of the U.S. Geological Survey.