PMXの頂点ウェイトの種類(BDEF1・BDEF2・BDEF4・SDEF・QDEF)と実物での使われ方
モデルを曲げたときの肉の付き方は、頂点ごとのウェイトで決まります。PMXでは方式が5通りあり、モデルによって使い方がかなり違いました。
5つの方式
| 種別 | 名前 | 持つもの | three.jsのMMDLoader |
|---|---|---|---|
| 0 | BDEF1 | ボーン1本(100%付く) | そのまま |
| 1 | BDEF2 | ボーン2本と1本目の比率 | そのまま |
| 2 | BDEF4 | ボーン4本と4つの比率 | そのまま |
| 3 | SDEF | BDEF2と同じ + C・R0・R1の3点(Float32×3を3つ、36バイト) | BDEF2として扱う(C・R0・R1は読み捨て) |
| 4 | QDEF(PMX 2.1) | BDEF4と同じ並び | 例外で止まる(このサイトはBDEF4として読ませる) |
実物での頂点数
| モデル | 頂点 | BDEF1 | BDEF2 | BDEF4 | SDEF |
|---|---|---|---|---|---|
| 人物A(ad_ik2) | 39,540 | 18,997 | 16,649 | 1,484 | 2,410 |
| 人物A(ad_org8) | 40,688 | 19,200 | 16,813 | 1,543 | 3,132 |
| アリシア | 22,311 | 8,858 | 10,121 | 3,332 | 0 |
| ステージ | 4,669 | 4,669 | 0 | 0 | 0 |
人物とアリシアでは頂点の4〜5割が、ボーン1本に100%付いているだけでした。ステージは全頂点がBDEF1で、動く部分はボーンごとに丸ごと動きます。アリシアはSDEFを使わず、BDEF4が15%と多めです。QDEFはどのモデルにもありませんでした(4体とも2.0)。
SDEFはどこに使われているか
SDEFの頂点を、付いている2本のボーンの組で数えました。
| ボーンの組 | 人物A(ad_ik2) | 人物A(ad_org8) |
|---|---|---|
| ツインテールの髪の節どうし(左髪3+左髪4 など) | 2,114 | 2,806 |
| 下半身 + 左右の足D | 216 | 216 |
| 頭 + 左右の髪1 | 80 | 110 |
人物AのSDEFの9割近くは、ツインテールの髪の節でした。 肩やひじには使われていません。SDEFは関節を曲げたときの潰れ方を変える方式なので、「肩やひじのためのもの」と決めつけず、どこに使われているかをモデルごとに見る必要があります。
three.jsはSDEFをBDEF2として扱うので、このサイトの再生でも、ツインテールが大きく曲がったときの節の太さは本家MMDと一致しない可能性があります。読み込めなくなることはありません。