A 3D coin reconstructed from a single photograph, viewable in the browser.
→ https://bryantharpe.github.io/coin/
Generated with TRELLIS.2-4B on an NVIDIA DGX Spark (GB10, sm_121, aarch64). One source image, 423 seconds, no scan and no turntable — which is also why the reverse is a mirror of the obverse: a single photograph carries no information about the other side.
index.html |
turntable view — continuous rotation |
tilt.html |
rocking view — sweeps ±25°, the way you tilt a coin under a lamp |
coin.glb |
470,909 faces, 4096² baseColor + 4096² metallic-roughness (51 MB) |
model-viewer.min.js |
vendored <model-viewer> |
Served at full resolution rather than decimated: the texel density of the 4096² colour map is what carries the fine circuit relief, and dropping it to 1024² was visibly worse. It is a 51 MB download — give it a moment on cellular.
The model carries no NORMAL attribute, so the renderer derives shading from the
geometry and face count ends up controlling the specular character: 470,909 facets
scatter many small sharp highlights where a decimated mesh gives fewer broad ones,
which reads as glossier at identical roughness values. The roughness map is
therefore baked 1.4× brighter than source, and the Finish slider drives
roughnessFactor from 0.71 (the original, glossiest) to 1.00 (matte).
As generated, verdigris sat in the coin's recesses. The finish remaps only the non-warm hues to bronze and leaves brightness untouched, so the rim-to-recess material variation survives rather than flattening onto a single gold ramp.