Skip to content

feat: realistic skinned human figure + self-collision resolution - #26

Merged
a-baran-orhan merged 2 commits into
mainfrom
claude/model-upgrade-realistic-xepdo9
Jul 10, 2026
Merged

feat: realistic skinned human figure + self-collision resolution#26
a-baran-orhan merged 2 commits into
mainfrom
claude/model-upgrade-realistic-xepdo9

Conversation

@a-baran-orhan

Copy link
Copy Markdown
Member

Replace the on-screen figure with a fully rigged, textured human
character (articulated fingers, sneakers, face) driven by the existing
solver skeleton, and stop limbs from passing through the body.

  • posecode-render/character.ts: load a Mixamo-rigged GLB, calibrate its
    T-pose onto the driver rig's rest pose (arms down, palms forward,
    limbs aimed exactly along driver rest directions), then retarget
    world-space rotation deltas bone-for-bone every frame, fingers
    included. The driver skeleton is rebuilt to the character's exact
    proportions so floor contact, prop pins, and reach-IK land exactly on
    the visible mesh.
  • posecode-render/depenetrate.ts: capsule-based self-collision pass
    (torso, head, thighs, shins vs forearms/hands and crossing shins),
    ROM-clamped and deterministic, run before contact solving in both the
    viewer and the eval probe.
  • Viewer: createViewer({ characterUrl }), characterActive getter,
    procedural figure as automatic fallback; hidden procedural meshes keep
    feeding bounding-box grounding. Playground + landing pass the local
    GLB (?figure=classic opts out); embeds default to the hosted model
    with a character attribute (URL or "off").
  • Assets: playground/public/models/character.glb - Mixamo "Michelle"
    from the three.js examples, resized textures + WebP + quantization +
    animations stripped (3.3MB -> 2.2MB).
  • Movement fixes visible with the new model: deadlift arms now hang to
    the bar (was shoulder extension), crunch keeps feet planted with bent
    knees, touch-toes folds without collapsing.
  • scripts/capture-gifs.mjs (npm run gifs): headless regeneration of the
    README GIFs from the live renderer; all four regenerated with the new
    figure.
  • Tests: skeleton-congruence retarget tests (synthetic T-pose rig) and
    de-penetration tests; suite at 194 passing.

Co-Authored-By: Claude Fable 5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_0155HaTaobTF48hVWvJwhj8h

claude added 2 commits July 9, 2026 20:44
Replace the on-screen figure with a fully rigged, textured human
character (articulated fingers, sneakers, face) driven by the existing
solver skeleton, and stop limbs from passing through the body.

- posecode-render/character.ts: load a Mixamo-rigged GLB, calibrate its
  T-pose onto the driver rig's rest pose (arms down, palms forward,
  limbs aimed exactly along driver rest directions), then retarget
  world-space rotation deltas bone-for-bone every frame, fingers
  included. The driver skeleton is rebuilt to the character's exact
  proportions so floor contact, prop pins, and reach-IK land exactly on
  the visible mesh.
- posecode-render/depenetrate.ts: capsule-based self-collision pass
  (torso, head, thighs, shins vs forearms/hands and crossing shins),
  ROM-clamped and deterministic, run before contact solving in both the
  viewer and the eval probe.
- Viewer: createViewer({ characterUrl }), characterActive getter,
  procedural figure as automatic fallback; hidden procedural meshes keep
  feeding bounding-box grounding. Playground + landing pass the local
  GLB (?figure=classic opts out); embeds default to the hosted model
  with a character attribute (URL or "off").
- Assets: playground/public/models/character.glb - Mixamo "Michelle"
  from the three.js examples, resized textures + WebP + quantization +
  animations stripped (3.3MB -> 2.2MB).
- Movement fixes visible with the new model: deadlift arms now hang to
  the bar (was shoulder extension), crunch keeps feet planted with bent
  knees, touch-toes folds without collapsing.
- scripts/capture-gifs.mjs (npm run gifs): headless regeneration of the
  README GIFs from the live renderer; all four regenerated with the new
  figure.
- Tests: skeleton-congruence retarget tests (synthetic T-pose rig) and
  de-penetration tests; suite at 194 passing.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155HaTaobTF48hVWvJwhj8h
Replace Michelle with the anatomical mannequin character (owner-exported
Mixamo FBX): neutral, unclothed anatomy with visible musculature suits
the physio/fitness content better than a fashion character, and the
optimized GLB is 702KB vs 2.2MB (35MB source FBX -> FBX2glTF -> WebP
textures + quantization + stripped animations).

- character.ts: tolerate numbered Mixamo namespaces (mixamorig1:...)
  emitted by direct Mixamo exports.
- Regenerate all four README GIFs with the new figure.
- README: update the character attribution.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0155HaTaobTF48hVWvJwhj8h
@vercel

vercel Bot commented Jul 10, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
posecode Ready Ready Preview, Comment Jul 10, 2026 8:55am

@a-baran-orhan
a-baran-orhan merged commit d734877 into main Jul 10, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants