Skip to content

Measure MMD's A-pose rest against a level-arm rest (MOT-O10) - #24

Open
snkmcb wants to merge 1 commit into
mainfrom
docs/mot-o10-rest-comparison
Open

snkmcb wants to merge 1 commit into
mainfrom
docs/mot-o10-rest-comparison

Conversation

@snkmcb

@snkmcb snkmcb commented Sep 24, 2026

Copy link
Copy Markdown
Member

Summary

This PR records a local comparison of MMD's A-pose rest against a level-arm rest (MOT-O10), and it updates the open questions and roadmap to match. It changes docs only; no library changed.

  • New report: docs/reports/2026-09-25-phase9-rest-pose-comparison.md. It covers 17 local characters and two dance motions. Each clip is evaluated by mmdControl, built by the adapters, and retargeted by motionRetarget v0.5.0. The ground truth is MMD's own evaluated segment directions.
    • Onto a level-arm rig: today's identity rest leaves every arm segment low by the model's rest angle (median 40°). A rest aimed from the arm chain's rest bone directions onto the lateral axis (shoulder, upper arm, lower arm, hand) removes the error; the largest angle left is 0.04°.
    • Whole-body aim fails on MMD: the shared t-pose construction applied to the whole body flips the chest where 上半身3 lies below 上半身2, and it levels the feet.
    • Source rest alone makes PMX to PMX worse: stating the rest on the source alone takes PMX to PMX from 2.5° to 40°. Stating it on both sides makes both directions exact.
    • Existing target defect: a level-arm clip already reaches a PMX target 40° low today.
  • MOTION_CONTRACT §9:
    • MOT-O10 is narrowed. It now waits on usd-motion-plugins, for a target rest distinct from the bind rest and for public T-pose directions.
    • MOT-O12 is opened. 上半身3 sits between 上半身 and 上半身2 in both local models that have it, which is against role-table v1's chest → upperChest order. With a motion that keys 上半身2, arms land up to 26° off on targets without upperChest. A v2 table is proposed.
  • §10.7 and roadmap:
    • Expression interoperability is marked ⛔. The shared core has promoted no common expression semantic, and its contract forbids a mapping from inventing one.
    • The roadmap status, the open-decisions table and forward notes on the two earlier reports are updated.

Test plan

  • python scripts/check_docs.py passes: every link and anchor resolves.
  • The figures come from a scratch program outside the repository. The report does not name the local model files.

🤖 Generated with Claude Code

Seventeen local characters and two dance motions were compared through
motionRetarget v0.5.0. The ground truth is MMD's own evaluated segment
directions.

Onto a level-arm skeleton, today's identity rest leaves every arm
segment low by the model's rest angle (median 40 degrees). A rest aimed
from the arm chain's rest bone directions onto the lateral axis removes
that error. Applying the same aim to the whole body flips the chest
where 上半身3 lies below 上半身2, and it levels feet that no humanoid rest
levels.

A source rest is correct only when a PMX target states the same rest.
Stating it on the source alone takes PMX to PMX from 2.5 to 40 degrees.
So MOT-O10 now waits on usd-motion-plugins: a target rest distinct from
the bind rest, and public T-pose directions.

The same run opens MOT-O12. 上半身3 sits between 上半身 and 上半身2, which
is against role-table version 1's chest -> upperChest order.

Expression interoperability is marked blocked. The shared core has
promoted no common expression semantic, and a mapping may not invent
one.

Docs only. No library changed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.

1 participant