見出し画像

blenderでMMDモデル作るとき用の備忘録(1.ボーン生成編)

しょうもない前置き 

 文字にすると備忘録正しい忘備録間違いらしいが脳内でわけわからなくなる症状に悩まされています。こんな題名にしたことをやや後悔していなくもない。
 それから備忘録という体裁をとるからには過去の自分が躓いたところを重点的に書いているつもりなのですが、毎回なんかしら躓いているので文が長いし読みにくく申し訳ない。あと完結しなくても許してください。
 きっとなんとかなるでしょう、見切り発車でいきましょう。

******************


なぜボーンから作るのか?

 多くの方はモデル作るぞ!となったとき、ポリゴンで形を取るところから始められるかと思います。なぜこの記事はボーンから作るのか?

 単純に早くモデルが動くところを見たいからです。

 ボーンを早い段階で入れておくことでウェイト塗りを楽にするという目論見もありますがそれはそれ。
 配布されているモーションデータ(.vmd)には、だいたいボーンの動きとモーフの動きの2つのデータが含まれています。
 換言すれば、ボーンとモーフが動けばモデルが動かせるわけですね。
 モーフを準備するには必要なものが多いですからまずはボーンから用意したいと思います。

ボーン準備の前に

 それではblenderを開きましょう。
 blenderが起動したらTを押してツールバー、Nを押してサイトバーを表示します。次に、右端のアウトライナー(シーンコレクションだのライトだのカメラだのあるところ)を見ます。

blender操作にショートカットキーを使う場合キーボードを半角入力モードにしておく。全角だと反応しないときがある。

 アウトライナーはペイントソフトでいうレイヤー管理をするウィンドウです。レイヤーフォルダ=コレクションといったところでしょうか。
 この記事ではカメラもライトもあまり使わないので、初期配置されているカメラ及びライトは削除してください。必要になったら追加すればいいし。
 さらに、立方体もまだ使わないのでまとめて全部消します。
カメラもライトも立方体も、アウトライナーから選択して削除してもいいですし3Dビューから選んで削除しても問題ないです。

 それからもうひとつ、生成するボーン名を日本語にしておきます。

追記:どうせ後でmmd_tools使用時にボーン名を一括変換することに気づきました。ので、このblender2pmxemでのボーン日本語化作業はしてもしなくても問題ありません
 ボーン名一括変換をするまでの間、日本語化をしておくとボーンの識別が少し楽になる、くらいの感覚で結構です。(追記:2022/01/15)

DL時とアドオン検索画面では名前が違うので注意

 ①メニューバーの編集
→②プリファレンス
→③アドオン
→④MMD PMX Format (Extend)を開き、設定の「日本語のボーン名を使う」にチェック
→⑤≡から保存メニューを開いて「プリファレンスを自動保存」を有効
→⑥一応プリファレンスを保存
 
これで日本語化が終了します。保存後はプリファレンスのウィンドウは閉じて大丈夫です。

blender2pmxemでのボーン生成(2022/01/08改稿)

 画面がきれいになったらいよいよボーンの生成です。

 ①サイドバーその他タブを開きます。
そこにblender2pmxem Toolsがあるので、②「アーマチュアの雛形をアペンド」とあるドロップダウンメニューをクリックし、③サイズを選んでください。

ボーンの大きさのおおよその目安大:185cm 標準:155cm 小:125cm ちび:85cm
(標準=初音ミクの身長158cm?)
細かい身長の合わせ方は当記事の補足4をお読みください。

 これで人型のボーンが生成されました。

ボーン名の確認の仕方

 どんなボーンが生成されているのか確認しましょう。
 アウトライナーの下に様々なアイコンの並んだプロパティ関連の領域がありますね。

 ①生成されたボーンを選ぶ
 ②|オブジェクトデータプロパティ《緑の棒人間アイコン》を押す
 ③「ビューポート表示」という項目を選ぶ
 ④ビューポート表示で名前をオン
 ⑤選んだ項目:今回はアーマチュア(ボーン全部)の名前が見られる

これでボーン名表示が完了です。

画面のごちゃつきと確認しやすさを天秤にかけて表示項目を選ぼう

 この数のボーンを一から作成して名前を付けて人型にするのは時間も手間もかかるのでアドオン様々です。

ボーンの向きの確認の仕方

ボーンの向きがわかりやすい八面体↔見え方がコンパクトなスティック
いい感じに使い分けていこう

ついでにボーンの向きがわかりやすくなるよう、ビューポート表示の表示方法を「スティック」から「八面体」に変換しておくのがおすすめです。

補足:生成されたボーンがなんかおかしかった話

 筆者の環境では実践するとボーンが何故かYの字で生成されました。軽めのグリコのような、腕と肩ボーンが逆に上がっているというか。
 なのでメニューバー▶編集▶プリファレンス▶アドオンを開き、このボーンを追加したアドオンであるMMD PMX Format (Extend)と検索しました。
 ここでは詳細設定を見ることが出来るのですが、なぜか初期設定が肩15度とアーマチュア23度の角度になっていました。数値にマイナスを付けてプリファレンスを保存し、ボーンを削除して追加し直したところ今度は問題なくボーン追加できたようです。(削除しなくてもポーズメニュー▶全選択→トランスフォームをクリアを選んでAポーズへを押してもどうにかなった気もする)
追記:アドオンの更新によってこの現象は修正されたようです。
作者さん更新おつかれさまですありがとう!
 
ただ肩や腕の角度を初期設定から変更したいときは同じようにすれば修正出来るので一応文章を残しておきます。でもアドオン配布元の公式サイトに載っていることなので出来ればそっちを見てほしい気もする。(2022/01/08追記)
https://blender2pmxem.netlify.app/tutorial

 この生成されたボーンはblender2pmxemで出力する場合、IKや目の連動も全て設定済みになっています。
 左上のモード切り替え▶オブジェクトモードからポーズモードにして、ボーンをBlender内で一度動かして遊んで見るのもいいかもしれません。
 ただ、まだmmd_toolsでの出力はできないこと、準標準ボーンの一部は入っていないことには多少注意が必要です。
 (標準ボーン・準標準ボーンについては補足で後述)

こまめな保存・出力が大事という話

 さて、実はこの段階でもうpmx化してMMDに持っていくことが出来ます。  
 作業中にソフト・PCが落ちたり謎のエラーが出たりして復帰出来ずに泣く前に、最低でもこのあたりでblenderデータ保存pmx出力を行いましょう。(3敗)

データが飛んだときに復帰がしやすい
エラーが出ても原因の検討がつけやすい
 こまめな保存・出力はこのように良いこと尽くめです。
 blenderには自動保存設定があるので、出来ればONにしたいですね。

ただしボーンは目に見えないのでMMDでわざわざ表示させねば踊ってもらってもわからないので注意してください。

pmx出力について

 次はPMX出力についてです。
 先に述べておくと、この記事ではより多くの設定がblender上で出来ることからmmd_toolsでのpmx出力が主です。
 ただし、先にここでblender2pmxemでの出力を挟もうと思います。
 ボーンに問題がないか確認したり、そろそろモチベのために目に見える成果欲しいな~という願望を叶えたりするためです。

(1)blender2pmxemによるPMX出力

 blender2pmxeとmmd_toolsの2つにはどちらにもPMX出力機能がついていますが、まだmmd_toolsで出力する準備は整っていません。
 まずはblender2pmxemでボーンだけのデータを出力してみましょう。

メニューバーから①ファイル▶エクスポートで
②PMXファイル for MMD(機能拡張版)(.pmx)を選択
新規ウィンドウが出るので③PMXファイルの名前と保存先を決めたら
④青いエクスポートボタンを押せばファイル出力完了

無事にpmx形式で出力できればボーン生成は成功です。お疲れ様でした。

mmd_toolsによる出力の下準備(モデル変換:1/4)

  違うアドオンで生成されたこのボーンはまだmmd_tools仕様になっていませんので、mmd_toolsで出力するための下処理を行っていきましょう。
 ちょっと面倒に感じるかもしれませんが、この下処理をしておけばモデリング以外の作業もほぼblenderで完結できるようになるので後が楽です。

結論からいうと、ここで行う設定は以下の4点です。
1.mmd_toolsでモデルを変換する
2.モデルのサイズを変換する
3.IKボーンにIK先ボーンを追加する
4.ボーンがMMD用の名称で出力されるようにする

 mmd_toolsで出力するためには、まず最低限として出力用にモデルを変換する必要があります。
 具体的にはモデルのアーマチュアの親にモデル名を付けたエンプティを追加するだけです。が、一応モデル変換機能があるので説明します。

 ではまずmmd_toolsで出力出来るようエンプティの追加を行いましょう。

①サイドバーのMMDタブを開く→②モデル製作▶モデルを変換→③OKを選んで変換

 アーマチュアとボーンだけだったものを変換すると、十字のエンプティが親として追加されMMDモデルとしてPMX出力できるようになります。

①エンプティを選択→②エクスポート→③MikuMikuDance Model(.pmx)を選択

 mmd_toolsでも無事pmx形式で出力できましたでしょうか。

 ここでpmxファイルをMMDに放り込んでモーションファイルを読み込ませ、なおかつ再生してボーンの動きを確認した几帳面な方は、このpmxファイルがblender2pmxemで出力したときとなにか違うことが分かったかと思います。
 そうです。モデルが妙に大きいしなにより腕と足が動きませんね。

結論からいうと、ここで行う設定は以下の4点です。
1.mmd_toolsでモデルを変換する
2.モデルのサイズを変換する
3.IKボーンにIK先ボーンを追加する
4.ボーンがMMD用の名称で出力されるようにする

(再掲)

Q.モデルのサイズが大きいのはなぜか?
  A.生成したボーンがblender2pmxem仕様だからです。
 BlenderのスケールとMMDのスケール(1単位の大きさ)はかなり異なります。(詳しくは下補足にて)
 小さい倍率で出力しても良いですが、いちいち計算するのも大変ですしメインで使うのはmmd_toolsなのでもうモデル自体小さくしてしまいましょう。
 2.モデルのサイズ変換の重要性がお分かりいただけたでしょうか。

Q.足が動かないのはなぜか?
 A.IKボーンとして出力されなかったからです。

 blenderで操作しているときには不要ですが、mmd_toolsでの出力時にはIKとして認識するためにIKボーン先を必要とします。
 IKが動きませんと多くのモーションで足が動きません。
 3.IK先ボーンの追加を行う必要がお分かりいただけたでしょうか。

Q.腕が動かないのはなぜか?
 A.出力されたボーンの名前がMMDの思っていたものと違うからです。

 ボーンの名前はblenderだと「肩_L」や「腕.R」になっています。(そうでないとblenderのミラーやポーズモードが動きませんよね)
 しかし、MMDでは「左肩」「右腕」でボーンを認識していますのでボーン名が違うと動きが適用されないんですね。
 4.ボーン名称の変更を行う必要がお分かりいただけたでしょうか。

そういうわけで次にボーンを完全にmmd_tools仕様にします。

mmd_toolsによる出力の下準備(モデルサイズ:2/4)

 まずモデルの大きさから決めます。(計算式は下部の補足4にて)
 モデルをおおよそ0.4倍(正確さを求めるなら0.39倍)するとBlenderサイズになりますので、アーマチュアをアウトライナーから選択してスケールを0.4倍してください。
 スケールを|適用《ctrl+A》するとボーンの大きさも変換されます。

アイテムタブでZの高さを見ると身長がわかる

mmd_toolsによる出力の下準備(IK先ボーン作成:3/4)

 続いてモデルにIK先ボーンを生やします。
 先ボーンとは?と思われる方のために記事下部に補足4を置いておきますのでどうぞ御覧ください。

 IKボーンの先端を選択して押し出し、ボーンを作ります。
先ボーンはボーンの根本が本体なので方向はどこを向いていてもOKです。

①作ったボーンを選択
→②ボーンプロパティを開く
→③ティップボーンにチェック
で先ボーンの設定が完了します。

 IKボーン系はウェイトを塗らないので、一緒に④の変形も一緒にチェックを外しておきましょう。
 ついでに他にIKボーンやウェイトを塗らないボーン(センターや全ての親など)があれば全部ここのチェックを外しておくと後で楽になります。

 名前を「足IK先_L」や「つま先IK先_R」のように書き換えれば先ボーンの完成です。
 このボーンは存在するだけで意味があるので、基本的にAlt+Hで非表示にしていて問題ありません。

mmd_toolsによる出力の下準備(ボーンのリネーム:4/4)

 では最後にボーンをMMD用の名前で出力されるようにします。

 ボーンを選択してサイドバーのMMDタブを選ぶと「[実験的]全体翻訳」というメニューがあるので開きます。

 今回の名前変更対象であるボーンはフィルターで既に選ばれています。
 ですので①一括操作の対象列を選択▶日本語MMD名称を選ぶ
→②プリセット▶「Blenderの左右をMMDの左右へ」
→③実行
これでPMX出力時にボーン名称が変更されるようになりました。

 ①正しいMMD用の名称が準備されたことを確認
→②OKを押して決定

試しに適当なボーンを選ぶと、MMD出力時の名称がしっかりセットされていました。これでmmd_toolsでの出力が出来ます。

(2)mmd_toolsによるPMX出力

 エクスポート方法は基本的に同じです。モデルのエンプティを選んだら
①ファイル▶②エクスポート▶③MikuMikuDanceModel (.pmx)で出力されます。

補足1:自分がmmd_toolsでの出力で躓いたところ

Q.なんかPMX出力が選べなくてエクスポート出来ないんだけど?
 A.出力時は構成がエンプティ(オレンジのネギ)→アーマチュア(オレンジの人)→ボーン(緑の人)の順になっている必要があります。
 この親子関係が崩れていたり、エンプティ又はアーマチュアを選ばずにエクスポートしようとすると、pmx出力の欄がグレーアウトし出力できなくなるので注意してください。

 Q.エクスポートしようとすると画面下に変な文字列が出る!
 A.何らかのエラーを吐いています。
 ログファイルを作成する設定にするなり、出力時のエラー内容を記憶するなりして考えたりググったりしてください。
 (後の過程での話になりますが、筆者がエラー起こしたときは
・テクスチャパスの設定が壊れていた
・モデファイアーの設定が足りなかった
このあたりが多かったです。)

出力場所を選ぶときに同時にログファイルを作成できる。
何らかの手がかりがああるかもしれないのでエラーが続くようであればお試しを。
出力が成功するとこのようなメッセージが出る。
逆に失敗していると赤や黄色でエラーメッセージが出るので出力時は要チェック。


ボーンだけのpmx出力が終わったら

 先程、ボーンは普通MMD上では見えないように設定されていると説明しました。
 出力したPMXファイルをMMDに読み込めば通常のモデルと同じようにボーンが表示されますし、適当なモーションを流し込めばきちんと踊ってくれるのに、踊ってくれてもわかりにくい。もったいない。
 そこで適当にポリゴンをボーンへくっつけて動きが見えるようにします。俗にいうラフモデリングとスキニング(ウェイト塗り)ですね。
 その前に一度こいつをモデリングがしやすいようTスタンスにしておこうと思います。


ボーンの角度をいじってスタンスを変える

 まず、オブジェクトモードでボーンを選択してからポーズモードに切り替えます。

 プリファレンスで確認したところ、blender2pmxemの初期設定ではTスタンスとAスタンスの角度差は肩15度腕23度でボーンが生成されるようです。

 Xミラー蝶アイコンをオンにしてから右肩ボーンをy軸基準に-15度回転のち、右腕ボーンをy軸基準に-23度回転して肩と腕を水平にしてもよいのですが、アドオンの機能があるので使います。

①blender2pmxemのタブ(その他タブ)を開く
→②「Tポーズへ」を押す

 腕がピンと伸びました。Tスタンスの完成です。
それからボーンの名前表示は今の所必要ないのでDisplayから切りましょう。
 このあとボーンを全選択Aキーしてポーズメニュー▶適用|《Ctrl+A》を押すと適用方法の一覧が表示されます。
 これは「レストポーズとして適用」を選択します。
 レストポーズ=ボーンの初期配置のことなので、これでボーンがTスタンスで固定されるようになりました。
 これでAスタンスからTスタンスへの変更が完了です。
 ぜひこのあたりで一旦データを保存してPMX出力をしておいてください。

終わりに

 ここまで大変お疲れ様でした。
 次回のラフモデリングの記事でまたお会いしましょう。

******************

補足2:TスタンスとAスタンス 

 アドオンの初期設定をいじっていなければ手を下げた姿勢でボーンが追加されているはずです。
 この姿勢ををAスタンス、手を水平に持ち上げた姿勢をTスタンスというのですが、MMDにおいては何度手を下げているか結構差があるらしい。2015年の記事が残っていたので参考にはっときます。

MMDモデルのAスタンスの角度アンケート
https://togetter.com/li/841306

 今回は説明の関係でAスタンスでボーンを生成しました。
が、はじめからTスタンスで生成したほうが作業的に楽になりそうであれば、プリファレンスのアドオンメニューで「Tスタンスでアペンドする」にチェックを入れるとよいです。

 自分はTスタンスで腕~指を作って大雑把にウェイトを付けた後、肩と腕をおろしてAスタンスにし、肩を整形してウェイトを調整してからPMX出力することが多いです。
 Aスタンスの角度は肩15度腕30度で暫定的に設定していますが、腕の筋肉がムキムキだったり腕にアクセサリついてるときなんかは胴体に腕が食い込んだりするので、5~10度ほど上げて調整することもあります。
 結構ゆるゆるで作ってる。

追記:ポーズモードにしているのに思うようにボーンのポーズが変えられないとき(2022/01/08)

 余談ですが、慣れないソフトを触っているときの体感時間って「お手本のとおりにしているつもりなのに何故かお手本通りにならない問題」を解決するための検索時間が7割占めていませんか?いいえ自分だけですね。    
 気を取り直して「ポーズモードなのにポーズ取れない問題」で自分が過去やらかしていたことお伝えしておきます。

 ①そもそもポーズモードになっていなかった
  
Blender初心者のころ、ポーズモードと編集モードの違いがついていなかったことがあります。
  区別の仕方としては左上のモード表示を見る他に、ボーンを選択すると編集モードでは黄色く、ポーズモードでは水色になります。
  また編集モードではボーンが選択したものしか動かないのに対して、ポーズモードでは選択したボーンの子ボーンまで動きます。ご注意ください。
 ②ボーンにロックが掛かっていた
  サイドメニューのアイテムタブを開くと「▼トランスフォーム」という箇所があるとおもいます。
  ここは数値入力で選択したものを動かせるタブですが、入力欄の右横に鍵のマークはついていませんか?
  鍵がついていれば誤作動で動かないようにロックが掛かっていることになります。
  鍵マークはクリックで付け外しが可能です。ご注意ください。
 ③ボーンを動かさない設定がオンになっていた
  Xミラーアイコンの右隣のポーズオプションを開くと「影響の限定」という項目があります。
  この項目の「位置」が有効になっているとボーンが動かなくなります。
  チェックボックスを外せば動くようになります。ご注意ください。

このサイトが無ければ永遠に「影響の限定」にはたどり着けなかった、多謝
https://dskjal.com/blender/the-cause-of-immovable-bone.html

dskjal

補足3:標準ボーンとは?

 以下はMMDをあまり触ったことがない人向けのざっくりとしたお話。
 実はMMDモデルには統一規格がありません。そこで何が基準とされているのかというと、MMD本体に付属しているあにまさ式ミク初音ミク.pmdさんの仕様です。
 ※MMDには同キャラでも違う作者によりモデルが複数作成されていることがあり、(モデル作者名)式キャラ名という呼び方でモデル同士を区別する文化があります。

 このあにまさ式ミクさんに搭載されているボーンが標準ボーンと呼ばれており、配布モーションが最低限動くのに必要なボーンだと言われています。
 その後、もっと細かい動きを再現すべくボーンが増え、それらは準標準ボーンと呼ばれるようになりました。標準ボーンに加え「全ての親」や「手捻」「腰」「グルーブ」などが追加されています。

 最近のモデルには準標準ボーンまで搭載されていることが多いのですが、MMD初期に作成されたモデルは標準ボーンのみ、ということもあります。
 今回使用したアドオンには「上半身2」や「親指0」といった一部の準標準ボーンが設定されていますが、MMD同梱モデルの初音ミクver2.pmdにある腕捻ボーンは搭載されていません。

 もっと詳しいボーンの仕様に関しては「MMDボーン講座」で検索するのがおすすめです。ニコマガが終了した今となってはニコニコ動画が一番手厚く資料を残してくれていると思う。
 下のこれは準標準ボーンについての参考動画。

【MMD】準標準ボーン追加プラグインの紹介【PMDE】
https://www.nicovideo.jp/watch/sm14956092

 では自分のモデルにはどのボーンを入れればいいんだと迷う方もいらっしゃるかもしれません。が、答えは簡単です。使いたいモーションのreadmeに全て載っています。
 配布モーションのreadmeにはモーション作成者さんからの連絡事項が載っています。ここに「準標準ボーン必須」や「グルーブボーンがないと動きがおかしくなります」など書いてあるのでそれに従いましょう。
 本当は「readmeに同意出来たらそのモーションを使える」が正解
 もし配布モーションのreadmeに何も記載がなければ準標準ボーンは入れても入れなくても大丈夫だと考えてもらって結構です。
 モーションを自作したい人は自分が要ると思うボーンを準備しよう。自分が正義だ。

補足4:先ボーンって何?という人向けの話

この動画を見れば全部解決します(全50秒)
https://nico.ms/sm19837798

【MMD用】~先ボーンはなんのため?【初心者用】

 今ちょっと動画見られないって人向けにかいつまんだ内容をお伝えすると
・先ボーンはあるボーンの先端部別ボーンを使って指定したもの(=向きや長さを確実に決められる)
先ボーンがないとエラーを起こすものもある
ということで、今回は2つ目の理由で先ボーンを作ることになりました。

補足4:blenderとMMD間のサイズの互換性についての話(やや蛇足)

 blenderとMMDは違うソフトなので、基準の単位も当然違います。
 試しにblender2pmxemとmmd_toolsでそれぞれ初期設定のスケールのままMMD同梱モデルのあにまさ式ミクさんをblenderへインポートし、先程生成したボーンと並べてみました。

正面視点では1mごとにグリッドの線が少し太くなっており、目算でもおおよその計算が可能


 blenderの頭ボーンのテールのZ座標を確認するとblender2pmxemではZ=3.8m、mmd_toolsではZ=1.52mと表示されています。
 あにまさ式ミクさんの場合もZ=3.8mだったため、blender2pmxemで生成したボーンとの頭ボーンの高さは等しいようです。
 また、実際の頭の高さをblenderの背景グリッド(画像は1マス10cmのときのもの)で測るとblender2pmxemでは4.04m、mmd_toolsでは1.62mほどでした。
 実際には髪型やヒールなどによる誤差がありましょうが、今回は初音ミクの公式身長1.58mに従い、あにまさ式ミクも1.58mだと仮定します。

①blender2pmxemを入出力に使うとき:
 MMD基準に合うように出力したいときは4.04/1.58=2.5569…≒2.56より、作りたいキャラの実身長を約2.56倍すればBlender中で設定すべき身長の仮Z値(高さ)が求められます。
 逆にBlenderの1mを基準にキャラの身長へ変換したいときは2.56で割る=2.56の逆数は0.3910…≒おおよそ0.39倍すればOKです。

②mmd_toolsを入出力に使うとき:
1.58mが1.62mとして表示されるので1.58/1.62=0.9753…≒0.98より、設定したい身長の0.98倍で作ればよさげです。

 あにまさ式ミクさんに限らず、デフォルメされた顔だと頭ボーンから頭頂部までの距離が大きかったり目の位置もだいぶ低かったりします。
 体感では数値のズレが0.3前後までは許容範囲内でした。(なので上の解説では倍率を0.4倍にして作成しています)
作風や作るモデルの頭身によって多少ズレが出ますので以上の数字はあくまで参考程度にしてください。

サイズ互換のための計算が面倒になったら

③多少の誤差は許せるからさっさと出力したいとき:
出力にblender2pmexemを使うならキャラを予定の2.5倍サイズで作る、mmd_toolsを使うならblender準拠サイズでプリセット通り出力するでOK

 本文を超えて補足まで一万字超も読んでくださりありがとうございます。
 なにかありましたらコメントやtwitterまでご連絡いただければ幸いです。