PMXのUVモーフとボーンモーフ|表情パネルで動かしても変わらない残りの2種類

表情の一覧に「表情1」「ヘッドセットLED」「B首長さ」のような名前があるのに、動かしても何も変わらない。頂点モーフ・材質モーフ以外の、UVモーフとボーンモーフという種類です。

最終更新: 2026-10-06 · 実PMX 3体とステージ1つのUV・ボーンモーフを three.js 同梱のパーサで読んで数え、人物AでUVモーフの重みを変えたときの画面の画素を比べて確認

このサイトの再生と表情パネルは、2026-10-06からUVモーフを当てています。 ボーンモーフはまだ当てていません(下記)。

UVモーフは「テクスチャの貼り方をずらす」

UVモーフ(種別3)は、頂点ごとにテクスチャ座標(UV)をずらす量を持っています。形は変わらず、同じ面に貼る画像の位置だけが動きます。 1枚のテクスチャに表情の絵を何種類か並べておき、UVをずらして切り替える、という使い方ができます。

モデルUVモーフ中身
人物A(ad_ik2)8「表情1」「表情2」(顔の1,141頂点)、「旧瞳」(218頂点)、LED 5つ
人物A(ad_org8)8同上
アリシア0—
ステージ1「全体広く(UV)」(8頂点)。頂点モーフと組にしたグループモーフの子

人物Aの「表情1」は顔の1,141頂点のUを0.5、「表情2」は同じ頂点のVを0.5ずらします。顔のテクスチャの別の区画へ切り替わる作りです。「ヘッドセットLED」などの5つは、LEDの部分だけを横へ少しずらして(-0.149〜0.104)、光り方の違う絵に当てています。

このサイトで当てた結果

three.js(r171)のMMDLoaderは、UVモーフの分岐を「TODO: implement」のまま空にしています。このサイトでは、描く直前に表情の重みを読み、元のUVに「ずらす量 × 重み」を足して書き戻すようにしました。グループモーフの子にUVモーフがある場合も、グループの重みを掛けて当てます。

人物Aで確かめると、「表情1」で1,752画素、「表情2」で28,738画素、「ヘッドセットLED」で821画素が変わりました。重みを0へ戻すと、元の画面と1画素も違いません。

ボーンモーフは「ボーンを動かす表情」

ボーンモーフ(種別2)は、ボーンごとに移動量と回転を持ちます。体型の調整や、ヒールの高さに合わせた立ち位置の補正に使われます。実物では次のとおりでした。

モデルボーンモーフ動かすもの
人物A「B首長さ」頭を0.1下げる
人物A「B巨乳」「Bちっぱい」ネクタイ親を前後へ動かす
人物A「Bヒール透明」全ての親を0.8下げ、つま先IK・足先EX・髪IKなど9本を動かす
ステージ「柵移動」柵一括移動を20動かす

どれも単独ではなく、グループモーフの子として使われていました。 人物Aの「首長さ」は頂点モーフ「V首長さ」とボーンモーフ「B首長さ」の組、「ヒール透明」はボーンモーフと材質モーフ「Mヒール透明」の組です。ステージの「ステージ広く」も頂点モーフと「柵移動」の組でした。表情パネルで動かすのはグループのほうで、形を変える分とボーンを動かす分が一緒に効く作りです。

  • このサイトの再生は、ボーンモーフをまだ当てていません。 グループモーフを動かすと、子のうち頂点モーフ・材質モーフ・UVモーフの分だけが効きます。
  • ボーンモーフは、モーションの値を当てたあと、IKを解く前に足す必要があります。three.jsの再生の流れ(モーションを当てる → IK → 付与)のあいだに差し込む場所が要るため、別に取り組みます。