見出し画像

PMXエディタの基礎の基礎2 - ボーンとウェイト

■骨の重さって何よ?

 これでモデルの体重が決まります──というのは冗談ですが、モデルの動作に必要な要素です。
 この2つの要素を何となく肌感覚で分かっている人は多いと思いますが、基礎部分を知らずに使っている人もまた多いと思います。
 ここでは、基礎の基礎という部分を説明します……が、いくつかのステップを踏まなければなりません。
 同時にPMXエディタの基礎的な使い方も覚えていきましょう。

■ボーンとウェイトの切っても切れないアツい関係

 ボーン=骨、ではありますが、これ単体では意味を成しません。
 ウェイト=重さ、ではありますが、これは……
『ボーンの動きに対しての”動く”比重』
 の事を指します。
 この2つの設定がアツく結ばれる事で、初めてモデルが動くようになり、モデルに魂を吹き込む為の原点とも言えます。
 ただ、この2つの計算方式がどのようになされているかを理解する為には、(おそらく苦手な人が比較的多いであろう数学やら幾何)の復習が必要になりますし、更にはプログラミング知識が必要にもなります。
 ですがこの新時代に生きる我々は、それを学ばずとも利用できる環境にある訳ですので、十分に活用しましょう。

■理解する為の準備 - 単純形状をPMXエディタで作る

 さて、ここではボーンとウェイトの基礎を学ぶためのモデル作りから始めます。幸いにもPMXエディタには[簡易プリミティブ追加]という機能があります。
 これは[PmxView]ウィンドウにある[編集]メニューの一番下にあります。

 他ソフトでモデリングされている方には馴染みが無い機能だとは思いますが、プリミティブ追加機能としては、他ソフト並に便利なものです。何気にテキスト形状も追加できるので、簡易的に立体タイトル文字などを作りたい場合には非常に楽ができます。

 また、この機能を使えば、新規材質・エッジ設定・ボーン設定・物理剛体設定まで自動的に行ってくれるので、シンプルな形状から物を作る場合には、PMXエディタからのスタートでも十分と言えます。

 さて、今回は分かりやすいように、デフォルト形状の[箱]を作ってみましょう。ほとんどの数値や材質色は好みで行って下さい。
 幅・高さ・奥行きはそれぞれ10。わかりやすくする為に、位置のY軸(真ん中の数値)は5にしましょう。
 これで[追加]ボタンを押せば、形状ができるはずです。底面がちょうどY軸ゼロになっていれば正解です。

 [Pmx編集]ウィンドウの方で、生成されたデータを見てみましょう。

 一応、分かりやすく説明する為に剛体まで入れてみましたが、今回の説明では不要なので、入れる必要はありません。後で動かす時に邪魔にもなるので、入れてしまったのであれば一旦消しましょう。

 さて、ここで[Pmx編集]ウィンドウの[頂点]タブに戻ってみましょう。ここには、形状の根本とも言える頂点の情報が見られます。試しに一番上の頂点を左側のリストから選んでみましょう。

 さて、「正六面体だから、頂点数は8じゃないの?」と思った方は多いかもしれません。が、PMXエディタ(他ソフトでも設定により)での簡易プリミティブ生成では、ご覧の通り24頂点が生成されます。
 これは「一つの同じ座標に3つの頂点がある」事になっています。何故こうなるのかは、ここで説明すると長いのでキーワードだけ覚えておきましょう。
 『法線』の関係で、同座標に3つの頂点が必要である
 ……と、頭の隅に置いといて下さい。
 どうしても気になる方は、頂点リストより同座標のものを探して(例:1と13)、右側のパラメータ表示にある『法線』を比べてみましょう。

 さて、今回重要なのは、下にある『ボーンウェイト』の部分です。
 既にプリミティブ形状生成時に、『箱』というボーンに対して全ての頂点に[ウェイト]が割り当てられています。[ボーン1]に対して[ウェイト値]が1、と割り当てられてるのが分かるでしょう。

 このように、様々な要素との関連付けを行う必要があるので、PMD/PMXでは全ての頂点・材質・ボーン・モーフ・剛体・ジョイント等がリスト化、つまり[INDEX](インデックス)が割り当てられます。
 今回の場合は正六面体を自動生成したので、数字の低い方から頂点が生成され、更にその頂点と『三角形となる頂点』が順に生成されています。

■ウェイトを操作する(塗る)

 さて(勝手な筆者の推測でしかないですが)全世界のモデラーの8割以上が嫌う作業の一つとして、『ウェイト塗り』があります。
 が、このウェイト塗りが上手くいってないとモデル自体が上手く動いてくれない状態となります。変な動きをするトゲのようなものができたり、服をはみ出して肌部分が出てしまったりする原因の多くは、このウェイト塗りに拠るところです。
 今回は勉強の為にシンプルな形状で行うので、さほど問題にはならないでしょう。

 さて、PMXエディタでウェイトを塗るのを、リストから頂点を一つ一つ選んで数値を打ち込むというのは、よほど物好きか40年前のCGデザイナーくらいでしょうか。
 PMXエディタでは、より視覚的に操作する事ができます。

 さて、実際に操作する前に、現状を確認しておきましょう。
 現状では既にウェイトが塗られている状態なので、ボーンを動かせば[箱]全体が動くようになっているはずです。
 これを[TransformView]で確認してみましょう。
 [TransformView]ウィンドウの起ち上げは、[PmxView]ウィンドウ上部にある[小窓]欄から[T]を選ぶ事で起ち上げられます。または、ショートカットキー[F9]を押します。
 もしくは[PmxView]ウィンドウにある[表示メニュー]の一番下にある[TransformView]を選びます。
 このようにPMXエディタでは、様々な方法で操作を行えるように設計されています。

 少し脇道となりますが、[PmxView][TransformView]の操作系は独立しています。表示形式も2つのウィンドウで独立しているので、前回のノートを参照にして表示形式を合わせておくと楽になります。

 さて、確認は簡単です。右側にある[ボーン]リストから、[箱]ボーンを選んで、[操作]タブの回転・移動をそれぞれ適度にいじってみましょう。箱全体が動くはずです。

 ここまで確認できたら、いよいよウェイトの操作となります。
 ウェイト操作自体は[PmxView]ウィンドウで行い、その動作チェックを[TransformView]ウィンドウ側で行いますので、[TransformView]は閉じないようにしましょう。
(閉じて、都度起ち上げても問題はありません)

 ウェイト操作モードにするにはいくつかの方法があります。

↑ これは左上にあるウインドウモード変更メニューからの変更

↑ これは[小窓]枠にある[塗]ボタンからの呼び出し方法

↑ これは[表示]メニューから[ウェイト描画]を選ぶ方法

 モードを変更すると、自動的にウェイト操作ウィンドウが開きます。

 この時既に、塗りが開始されている状態になっているので、頂点などを誤って塗らないようにしましょう。
(危なっかしい場合は、すぐに[開始]ボタンを押して塗りモードをオフにしましょう。ボタンがグレーアウトしている時はオフになっています)

 さて、既に全ての頂点にウェイトが割り当てられているので、ここでは敢えて、底面部分の頂点のウェイトを無くしてしまいましょう。
 操作は簡単で、[対象][箱]ボーンになっている事を確認した後、ウェイトをゼロに設定します。設定の後、開始ボタンを押して、底辺部分の頂点4つを塗る(ドラッグ)してみましょう。

 はい、何も変化がありませんね。これでは塗れたかどうか分かりません。なので、表示モードを切り替える必要があります。

 [PmxView]ウィンドウの下部にある[mode]ボタンを押し[Weight]モードを選択する事で、きちんと塗られているかどうかわかります。

 恐らく、この状態になっているのではないでしょうか。つまり、きちんと塗られていません。
 これは、
・対象頂点が[選択頂点]だけにチェックが入っており、かつ捜査対象の頂点を選択していない
・スプレーモードがONになっている
・ウェイト値が100のまま
 などの理由が考えられます。
 今回は他形状も無いので、以下のように設定してから塗ってみましょう。

 この状態で底辺部分を塗り直すと、以下のような表示になるはずです。
(奥に隠れている頂点を塗り残さないように注意してください)

 これで、箱の底部分のウェイトはゼロになり、ボーンを動かしても床に張り付いたような動きになるはずです。それを[TransformView]側で確認してみましょう。

 あれれ? 全体が動いちゃいますね~

 これはPMD/PMXの癖とも仕様とも言えますが、
 [BDEF1]モードで一度塗られたウェイトは、関連を解除しない限りついていってしまう
 という挙動になります。
 これを解決する為には2つの方法があります。

1:関連を外したい頂点を選択した後、[編集]メニューより[ウェイト関連]を選んだ後、[選択頂点をウェイト初期化]を選ぶ

 これを行った後、今度は[ウェイト/UV描写][影響下]チェックを外し、頂点を選択したままの場合は[選択頂点]チェックを入れた状態でウェイトを塗り直す。もしくは[選択頂点]チェックを外せば全ての頂点が対象になるので、関連付けるボーンを選んでから塗り直し……となります。

2:一度、センターボーンを選んで、全ての頂点をウェイト・ゼロで塗ってみる

 これを行う事で、100で塗った部分だけが[箱]ボーンの動きに追従するようになります。

 ここまでできたら、[箱]の上側頂点を、今度は50で塗り直してみましょう。即座に[TransformView]に反映され、ボーンの動きに対して半分の動きが反映されているはずです。
 ここは数値を変えて、「この数値だとこれくらいの追従になる」というのを肌感覚でも覚えておくと、後々楽になります。

■BDEFって何よ?

 BDEFボーンデフォーム(Bone DEForm)の略語です。またその後に続いている数値は、何本のボーンと関連付いているか、という設定となります。
 つまり、BDEF1なら1本のボーンのみ、BDEF2なら2本、PMXでは最大4本まで関連付けられます。
 BDEF1はやや特殊で、1度関連付けられたボーンに追従するようになるので、目的のボーンから影響を外したい場合は上記の方法の何れかを取る必要があります(初期化するか、親ボーン側で塗り直す)。
 BDEF2等でも1本のボーンしか割り振られてないと似たような状態になるので、慣れていないモデラーさんなどは、よくこの罠にハマっています。

■最後に

 きちんと説明すると長くなるウェイトとボーンの関係ですが、基礎の基礎としてはこの辺りに留めておいた方が良さそうです。
 シンプルに説明したつもりではありますが、言葉の選び方や説明内容の不備に気づいてない可能性もあるので、ご了承下さい。

どこにでも居るバーチャルJC MMDユーザーの一人。 MMDアニメーター、動画制作・編集、VTuber関連制作などを行っているただのJC。