LightWaveでMMD用のボーンをセットアップしてみた

2024-01-06

今回は作ったモデルにMMDボーンを組み込んでいきます。

ようやくモデリングから次の工程に行けた・・・ただ体感的にはまだ半分程度の感覚。

LWからMMDに持っていく情報が全然無かったので苦労しましたが、ボーンの構成さえ守ればBlender上ではほぼデータの変換だけで行けることが確認できました。

ひとまずここではボーンのセットアップだけやっていきます。

※2024/4:内容の分割とタイトル変更を行いました。
※2024/10:タイトル変更を行いました。

ボーン構成

MMDのボーン構成

まずMMDモデルのボーンがどんな構成になっているか調べてみます。

モデルは探せば腐るほどありますので、資料探しには困りませんね。

なんならMikuMikuDanceのフォルダにも標準モデルが入っているのでそれを確認するのもアリ。

複雑な構成のモデルが多いので、まずは必要最低限のボーンがどんな状態かを確認しておきます。

標準ボーンは髪の毛とか服、装飾品や捻りボーンなどを除いた状態を指すようです。

モデルは自分で用意するしかなさそうなので、MikuMikuDanceソフト内にある標準モデルから要らないものを消して作成。

全身の見た目はこんな感じで割とシンプルで腕と足の付け根は浮いているタイプのボーンでした。

さらに顔の方はアップにしてみると、目と肩の付け根もつながっていなくてこちらも浮いた仕様。

これは浮遊ボーンと呼べばいいのだろうか?

内部的には親子付けされている。

手も同じように指は手首には接続されておらず、親指だけ2本ボーンで残りの指は3本で構成されていました。

足にはIK(インバースキネマティクス)と呼ばれるボーンが設定されていました。

これはIKボーンを動かすと設定しているボーンも連動して一緒に動かせるものとなっています。

つま先ボーンは無いように見えますが、見た目を変えているだけで実際には存在していました。

灰色の◎について

ボーンの先端をよく見ると灰色の◎があるのですが、どうやらボーンの向きを分かりやすくさせるためだけの物のようです。

これも変な感じですけどボーンの一種。

なので実際には動かすボーン+1で構成されていることが分かりました。(例:指なら人差し指1→人差し指2→人差し指3→灰色ボーン)

もう少し調べてみたところPMXの旧規格にPMDというものがあり、その時では必須だったみたいです。

試しに末端ボーンを選択して削除してみると・・・

こうなりました。

先端ボーンのすぐ下には頭用のボーンがありますが、丸くなっちゃいました。

確かにこれでは向きが分からないですね。

もう少し調べてみるとPMDEditorにはボーンの長さを調整する機能みたいなものが備わっておらず、対策として変形には使わないけどボーンの向きを分かりやすくするために先端ボーンをつける必要があったようです。

データ規格PMXPMD
先端ボーンの必要性無くてもOK必須

後継ソフトであるPMXEditorには先端ボーンが無くてもボーンの向きが分かるようにすることができることが分かったので、よりシンプルにボーンを組むことができそう・・・と思ったのですがなんとここで問題発生。

たまたまMAYAを持っていたので試しに読み込んで表示させると・・・

あぁ・・・なんということでしょう、先端がなぜか強制的に消し飛びました。(消し飛んでいるというかそもそもLightWaveとMayaではボーンの構造が違うからこうなってしまうっぽい)

おまけにBlenderで読み込むと今度はなぜか異常に長いボーンが発生する・・・(なんでやねん!!w)

なので今回は面倒ですがtopボーンを入れ込むことにします。

先端ボーンが不要になればウェイトの調整ももしかしたら楽になるかもしれなかったのになぁ・・・

う~ん おしい!残念!

ボーンのセットアップ

最小構成

まずサクッと簡単に作ったのがこれ。

最小構成です。

作っているのが女性キャラなので胸ボーンとか髪の毛も必要ですが、一旦必要最小限にしてみました。

以下がこのボーンの構成です。

  • center
    • center_top
    • upper_body
      • upper_body2
        • neck
          • head
            • head_top
            • eyes
              • eyes_top
            • eye_L
              • eye_L_top
            • eye_R
              • eye_R_top
        • shoulder_L
          • arm_L
            • elbow_L
              • wrist_L
                • wrist_L_top
                • thumb0_L
                  • thumb1_L
                    • thumb2_L
                      • thumb_L_top
                • fore1_L
                  • fore2_L
                    • fore3_L
                      • fore_L_top
                • middle1_L
                  • middle2_L
                    • middle3_L
                      • middle_L_top
                • third1_L
                  • third2_L
                    • third3_L
                      • third_L_top
                • little1_L
                  • little2_L
                    • little3_L
                      • little_L_top
        • shoulder_R
          • arm_R
            • elbow_R
              • wrist_R
                • wrist_R_top
                • thumb0_R
                  • thumb1_R
                    • thumb2_R
                      • thumb_R_top
                • fore1_R
                  • fore2_R
                    • fore3_R
                      • fore_R_top
                • middle1_R
                  • middle2_R
                    • middle3_R
                      • middle_R_top
                • third1_R
                  • third2_R
                    • third3_R
                      • third_R_top
                • little1_R
                  • little2_R
                    • little3_R
                      • little_R_top
    • lower_body
      • lower_body_top
      • hip_L
        • hip_L_top
      • leg_L
        • knee_L
          • ankle_L
            • toe_L
              • toe_L_top
            • toe_IK_L
              • toe_IK_L_top
          • leg_IK_L
            • leg_IK_L_top
      • hip_R
        • hip_R_top
      • leg_R
        • knee_R
          • ankle_R
            • toe_R
              • toe_R_top
            • toe_IK_R
              • toe_IK_R_top
          • leg_IK_R
            • leg_IK_R_top

この時点でボーン数は87本ですが、標準から一部構成を変えています。

変更点
  1. 尻  :尻の補助ボーンを追加
  2. 親指 :親指の根元に0番を追加
  3. 上半身:upper_bodyとupper_body2の二つに分割

ちなみにボーンの名前はすべて英語です。

というのもLightWave含め海外生まれのソフトを扱う場合、英語にしないと文字化けなどおかしなことが起きてしまいます。

基本的に海外ソフトは全角文字に完全対応していないので。

なんならWindowsのログイン名も英語じゃないとソフトによっては正常に動作しないバグを起こすこともあります。

一旦ここでは英語で書いておいて後でPMXEditorの “名称の一括編集" 機能で一気に日本語化します。

前準備

まずはこれまで作ったモデルをロード。

位置を調節しますが首はまだ繋げないでおきます。

ボーンの位置調節を少しでも楽にするため、この時点ではローポリの状態でいきます。

中心ボーン

まずは中心から。

センターボーンを下向きに伸ばし、先端にtopボーンをセット。

中心ボーン
  • 上半身:center→center_top

これから作っていくボーンにもtopボーンを忘れずにつけていきます。

上半身と下半身はだいたいへそよりちょっと上(くびれあたり)から開始。

上半身と下半身ボーン
  • 上半身:upper_body→upper_body2→neck→head→head_top
  • 下半身:lower_body→lower_body_top

ボーンを配置するときはまっすぐにならないように曲げたい方向にちょっと曲げながら作るのがコツらしい。

上半身と下半身の根元は結合状態にします。

足ボーン

足のボーンは足の付け根からスタートして、つま先まで一気にボーンを作成。

今は左側を作っているのでボーンの名前は末尾に_Lと付けます。

足ボーン
  • 左足:leg_L→knee_L→ankle_L→toe_L→toe_L_top

かかととつま先にはIK用のボーンを追加。

これは後にPMXEditorでIKを組み込むのに使います。

足IKボーン
  • 左足IK:knee_L→leg_IK_L→leg_IK_L_top
  • 左つま先IK:ankle_L→toe_IK_L→toe_IK_L_top

お尻には補助ボーンというものを付けています。

尻補助ボーン
  • 尻:hip→hip_top

補助ボーンのことについてはまだ分からないことが多いですけど、主に変形補助のようです。

後で分かったんですが補助ボーンが無い状態の構成だとどうしても足を曲げた時にお尻が潰れます。

これはもうどうしようもないらしい。

なので変形をキレイにしたいなら、この補助ボーンは必須です。

これで下半身はOK。

腕ボーン

腕も肩から手首までボーンを伸ばします。

腕ボーン
  • 左腕:shoulder_L→arm_L→elbow_L→wrist_L→wrist_L_top

肩ボーン(shoulder)は水平ではなく、正面と上部から見てモデルの鎖骨の角度に合わせてセット。

なるべく実際の骨格に沿った配置が良いようです。

PMX化する際にレイアウト上でTスタンスからAスタンスにするのですが、正面から見て肩ボーンが水平もしくは先端が下がり気味になるのが理想。(うまくいくかな)

指は中指ボーンから作成。

親指だけは角度がついているので大変ですが、残りは中指ボーンを複製して時間短縮。

指ボーン
  • 左親指 :thumb0_L→thumb1_L→thumb2_L→thumb_L_top
  • 左人差指:fore1_L→fore2_L→fore3_L→fore_L_top
  • 左中指 :middle1_L→middle2_L→middle3_L→middle_L_top
  • 左薬指 :third1_L→third2_L→third3_L→third_L_top
  • 左小指 :little1_L→little2_L→little3_L→little_L_top

目ボーン

目は2本のボーンで構成しました。

    目ボーン
    • 左目:eye_L→eye_L_top

    ボーンと目のオブジェクトを選択してぐるぐる動かしてボーンの配置位置に問題ないかを確認します。

    もし目が顔から出てくるようなら再調整。

    胸ボーン

    胸ボーンは背中から先端に向かって3本構成で配置しました。

    胸ボーン
    • 左胸:bust_base_L→bust_Lbust_L_top

    以前はbust_Lとbust_topだけの構成だったのですが、これだと描く弧が急すぎて動きが不自然なんかなと考えました。

    よくよく考えるとそうかもしれない。

    なので弧が緩やかなカーブを描くように肋骨の面に沿って動いてくれるように再配置。

    髪の毛ボーン

    頭頂部は動かさないので、先端にボーンを3本ほど髪の毛の内部に配置。

    ボーンの向きは内側で。

    前髪ボーン
    • 前髪:hair_F_1→hair_F_2→hair_F_top
    • 前髪_A:hair_F_A1_L→hair_F_A2_L→hair_F_A_L_top
    • 前髪_B:hair_F_B1_L→hair_F_B2_L→hair_F_B_L_top

    横髪と後髪も同様に3本。

    横髪ボーン
    • 左横髪_A:hair_S_A1_L→hair_S_A2_L→hair_S_A_L_top
    • 左横髪_B:hair_S_B1_L→hair_S_B2_L→hair_S_B_L_top
    後髪ボーン
    • 左後髪_A:hair_B_A1_L→hair_B_A2_L→hair_B_A_L_top
    • 左後髪_B:hair_B_B1_L→hair_B_B2_L→hair_B_B_L_top
    • 左後髪_C:hair_B_C1_L→hair_B_C2_L→hair_B_C_L_top
    • 左後髪_D:hair_B_D1_L→hair_B_D2_L→hair_B_D_L_top

    髪の毛のボーンはさすがに多いですね。

    簡単な髪型にしたつもりですがちょっと大変・・・

    後ろ髪は3つのオブジェクトで構成していますが、今回はシンプルにいきたいので外側にだけボーンを配置。

    両目ボーン

    後は両目をコントロールするための両目を配置。

    両目ボーン
    • 両目:eyes→eyes_top

    これで左片面のボーンの組み込みは終了。

    SkelegonEditor

    浮遊ボーンで親子付け

    ボーンの配置が終わったので次はSkelegonEditorを開きます。

    ここからはかなり神経を使う場面なので、キリが良いところで保存をすることを忘れないように注意。

    特にビュー上の背景色は今のバージョンでは変えない方が良いです。(LW2020.0.3現在)

    数値を使っての変更はできますが、直接色を変えようとするとクラッシュします。

    早く直してくだされ・・・

    ではまず左足(leg_L)から親子付けをしていきます。

    浮遊ボーンで親子付けしたいので、まず鎖のようなアイコンがある列のチェックを解除。

    このチェックの解除を忘れた状態で親子付けすると、親の方に子ボーンが強制的に移動してしまうので注意。

    右クリックをして親子付けの設定を開いて親スケルゴンを下半身であるlower_bodyを選択してOK。

    すると足ボーンから点線が現れますが、これが浮遊状態で親子付けができた状態です。

    これを各ボーンに設定していきます。

    各部位の親子付け

    肩と胸は上半身2が親スケルゴンにあたるのでbust_baseとshoulderを同時に選択してupper_body2を親スケルゴンに設定します。

    複数選択してから設定すると楽。

    指も各指の根元を選択して手首を親スケルゴンとして設定。

    目と両目、そして髪の毛は頭と一緒に動くので親スケルゴンをheadとします。

    上半身と下半身を全体にまとめるセンター(center)を親スケルゴンとして設定。

    お尻の補助ボーンは下半身が親なので親スケルゴンをlower_bodyに設定してOK。

    これで片面の親子付けが完了しました。

    キリが良いので安全のために一旦保存します。

    ミラーコピー

    再びSkelegonEditorを開いてミラーコピーで反対側のボーンを作成します。

    _Lと付いているボーンを全て選択して中心を全て0m、そして文字列置換にチェック。

    置換前を_L、置換後に_Rを入れて適応します。

    すると反対側にもボーンが生成されます。

    たまにうまくいかないことがあるので一応確認。

    よし 今回は大丈夫そう。

    ボーンの階層

    作成したボーンの階層がこちら。

    • center
      • center_top
      • upper_body
        • upper_body2
          • neck
            • head
              • head_top
              • eyes
                • eyes_top
              • eye_L
                • eye_L_top
              • hair_F_1
                • hair_F_2
                  • hair_F_top
              • hair_F_A1_L
                • hair_F_A2_L
                  • hair_F_A_L_top
              • hair_F_B1_L
                • hair_F_B2_L
                  • hair_F_B_L_top
              • hair_S_A1_L
                • hair_S_A2_L
                  • hair_S_A_L_top
              • hair_S_B1_L
                • hair_S_B2_L
                  • hair_S_B_L_top
              • hair_B_A1_L
                • hair_B_A2_L
                  • hair_B_A_L_top
              • hair_B_B1_L
                • hair_B_B2_L
                  • hair_B_B_L_top
              • hair_B_C1_L
                • hair_B_C2_L
                  • hair_B_C_L_top
              • hair_B_D1_L
                • hair_B_D2_L
                  • hair_B_D_L_top
              • eye_R
                • eye_R_top
              • hair_F_A1_R
                • hair_F_A2_R
                  • hair_F_A_R_top
              • hair_F_B1_R
                • hair_F_B2_R
                  • hair_F_B_R_top
              • hair_S_A1_R
                • hair_S_A2_R
                  • hair_S_A_R_top
              • hair_S_B1_R
                • hair_S_B2_R
                  • hair_S_B_R_top
              • hair_B_A1_R
                • hair_B_A2_R
                  • hair_B_A_R_top
              • hair_B_B1_R
                • hair_B_B2_R
                  • hair_B_B_R_top
              • hair_B_C1_R
                • hair_B_C2_R
                  • hair_B_C_R_top
              • hair_B_D1_R
                • hair_B_D2_R
                  • hair_B_D_R_top
          • bust_base_L
            • bust_L
              • bust_L_top
          • shoulder_L
            • arm_L
              • elbow_L
                • wrist_L
                  • wrist_L_top
                  • thumb0_L
                    • thumb1_L
                      • thumb2_L
                        • thumb_L_top
                  • fore1_L
                    • fore2_L
                      • fore3_L
                        • fore_L_top
                  • middle1_L
                    • middle2_L
                      • middle3_L
                        • middle_L_top
                  • third1_L
                    • third2_L
                      • third3_L
                        • third_L_top
                  • little1_L
                    • little2_L
                      • little3_L
                        • little_L_top
          • bust_base_R
            • bust_R
              • bust_R_top
          • shoulder_R
            • arm_R
              • elbow_R
                • wrist_R
                  • wrist_R_top
                  • thumb0_R
                    • thumb1_R
                      • thumb2_R
                        • thumb_R_top
                  • fore1_R
                    • fore2_R
                      • fore3_R
                        • fore_R_top
                  • middle1_R
                    • middle2_R
                      • middle3_R
                        • middle_R_top
                  • third1_R
                    • third2_R
                      • third3_R
                        • third_R_top
                  • little1_R
                    • little2_R
                      • little3_R
                        • little_R_top
      • lower_body
        • lower_body_top
        • hip_L
          • hip_L_top
        • leg_L
          • knee_L
            • ankle_L
              • toe_L
                • toe_L_top
              • toe_IK_L
                • toe_IK_L_top
            • leg_IK_L
              • leg_IK_L_top
        • hip_R
          • hip_R_top
        • leg_R
          • knee_R
            • ankle_R
              • toe_R
                • toe_R_top
              • toe_IK_R
                • toe_IK_R_top
            • leg_IK_R
              • leg_IK_R_top

    ボーンの数は144本。

    いくらかボーンを増やしたのでなんだかすごいことになっていますが、まあこんなもんです。

    もっとボーン数が多いキャラなんて腐るほどいるんで、特に問題ありません。

    完成

    状態を確認して完成。

    後は実際に簡易的にウェイトを付けて動作確認すればOKですかね。

    指とか髪の毛とか面倒なポイントはありますが、たぶんこれも慣れの問題。

    以上お疲れさまでした。

    続きはこちらになります。

    使用したツール

    • ペイント:ClipStudio Paint Pro
    • モデリング:LightWave 2020.0.3

    モデリング

    Posted by じゃっく