はじめに
今回は、Blenderでキャラモデルにボーンを入れる方法を解説します。
VRChatでの利用を想定し、UnityのHumanoid用のボーンを入れます。
Humanoidボーンの概要は下記
・ボーンを規格化された名前やボーン数や形で制作
・規格化すると、どのキャラでも用意したアニメーション素材などで動かせる
第16回の続きになります。
このような服以外のキャラがが完成した状態で進めます。
(体はセンシティブ判定されそうなので、立方体で隠してます)
また、下図のような参考資料のモデルなどが読み込まれた状態でスタートします。
参考資料の読み込みや、制作過程はこちらをご覧ください。
Blenderにボーンを入れる
まず ”キャラクターの” ブレンダーデータを開きます。
↓これまでの作業で制作した、普通の作業ファイルです。
こちらのページにアクセス。
.zipを展開。
人体ボーンのBlenderファイルを開きます。
Windows+Tabキーを入力。
すると、2つBlenderファイルが立ち上がった事が分かります。
ボーンがある側のBlenderファイルに移動。
ボーンを選択 → Ctrl+Cでコピー。
Windows+Tabキー。
キャラクターがある方のBlenderに切り替え。
Ctrl+Cでボーンをコピー。
これで、ボーンを入れることができました。
ボーンだけのファイルは不要なので消してください。
(Windows+Tab → ボーンだけのBlenderを選択 → 右上の×ボタン)
以上が、Blenderにボーンを入れる方法です。
ボーンの位置調整
全体の位置調整
まず、全体の位置調整を行います。
ボーンを選択。
オプジェクトプロパティ → トランスフォームを開き下記のように設定。
・位置XYZ = 0m
・回転XYZ = 0°
・スケールXYZ = 1.000
この状態で拡大縮小。
体のだいたいの大きさに合わせます。
(オプジェクトモードを使用)
さらに、Ctrl+Alt+Qキーで4面図表示。
Gキー → Yキーで上から見た位置を調整。
すると、トランスフォームの値に変化が生まれます。
Ctrl+A → 「全トランスフォーム」を選択。
すると、トランスフォームの値が戻ります。
以上で全体の位置調整が完了です。
Rootボーンの位置調整
ボーンを選択した状態でCtrl+Tab → 6キーで編集モード。
足の間にあるボーンを選択。
これがRootボーンです。
RootボーンはXYZ=0の値にある、全体の親となるボーン。
VRChat向けモデルでは不要な事が多いが…
ゲーム会社などのモデル制作では「入れて」と言われることが多いボーン。
私も慣習で入れてるので、なぜ要るかはよく分かっていません。
ボーンプロパティを開きます。
ヘッドのXYZを0に設定。
テールのZを0.15mに設定。
これで、Rootボーンの設定が完了です。
個別ボーンの位置調整
画面右上の「X」ボタンを有効化。
この状態でボーンを動かすと、左右対称に動きます。
あとは、参考資料を見ながらボーンの位置を整えます。
基本、ボーンは体の中央に入れます。
ただ、足や肩のボーンの位置は実際に入れるとどこにするか難しいです。
こうしたボーンは、参考資料を見て位置を決めます。
これで、手や肩のボーンが入れれます。
足も同様にボーンを入れます。
とにかく、迷ったら参考資料を見て位置を決めてください。
以上が、個別ボーンの位置調整です。
ボーンを調整しやすくするテクニック
手など、ボーンが多い所は「八面体」表示だと見づらいです。
そこで、オプジェクトデータプロパティ → ビューポート表示を開きます。
表示方法を「スティック」に変えると見やすくなります。
それでも、手の指は位置調整しづらいです。
このような場合は、断面表示やボーンを選択 → Hキーで非表示が役立ちます。
断面図の表示方法はこちらをご覧ください。
非表示にしたボーンはAlt+Hキーで再表示できます。
以上が、ボーンを調整しやすくするテクニックです。
ボーンを入れる位置について
ボーンの入れ方は2通りあります。
・立体物の中央に入れる
・曲げる方向から見て、立体物の外側に入れる
ボーンの入れる位置は、基本は真ん中です。
動かす設定を入れると普通に曲がります。(動かし方は次回で解説)
中央の場合の特徴は下記。
・外側が伸びる
・内側が痩せる、少しめり込む
・ねじれなどの複雑な動きに強い
見ての通り、外側が伸び、内側が少しやせてめり込みます。
ねじると、比較的綺麗にねじれます。
人体の多くの場合、中央に入れることが正解です。
特に複雑な動きをする「肩」や「手首」は中央が必須。
もう1つの入れ方が、外側にズラす方法です。
外側に入れた場合の特徴は下記。
・外側が伸びない
・内側が大きく痩せる、めり込む
・ねじれなどの複雑な動きに弱い
・外側が伸びないので、関節の外側に骨の出てる感じなどが表現できる
(手の指や肘など)
=単純な動きをするパーツでは、外側の方がリアルになることがある
外側にズラすと、下図のように曲がります。
ちょっと曲がり方に指を感じると思います。
ただ、ねじれに弱いです。
複雑な動きはできません。
また、関節外側が完全に伸びないのは不自然なので…
やるとしたら、少し外側ぐらいが理想。
この設定は、膝や手の指など1方向にしか回転しない所に入れるのがおすすめ。
以上がボーンを入れる位置です。
VRChat向けのボーン配置
VRChat向けモデルの場合、様々なボーンの”お作法”があります。
基本的に、下記の2つを守っていれば大丈夫です。
・肘や膝などは事前に少し曲げる
・脚の付け根は、Hipsの始点を超えない
肘や膝は曲がる方向に少し曲げます。
これを入れないと、不自然な曲がり方になることがあります。
脚の付け根は、Hipsの始点を超えないようにします。
図で表すと、このような関係が正解です。
このような位置関係になると、VRChatで意図しない挙動になることがあります。
(フルトラの場合、腰が吹き飛ぶようです)
注意するポイントはこの2つぐらいです。
↓詳細はこちらのような記事をみてください。
以上が、VRChat向けのボーン配置です。
データを整理する
ボーンの追加前に、今後の作業工程で必要なデータ整理を整理します。
まず、Shift+Ctrl+Sで別名保存。
バックアップファイルを作ります。
この状態でデータをの整理を行います。
カーブをメッシュ化する
髪の毛やケモミミはカーブモデリングを使いました。
そこで、データ整理のためカーブをメッシュ化します。
今やらなくてもいい工程ですが、
他にいいタイミングが思いつかなかったので、今行ってます。
Aキーで全選択。
Ctrl+Tab → 6キーで編集モード。
このような表示になっていれば、カーブがメッシュ化されてません。
カーブを適応すると、後で調整が面倒になります。
なので、髪の毛の接続部分やめり込みが無いか確認。
あれば編集して修正。
修正後、カーブのメッシュを選択。
オプジェクト → 変換 → 「メッシュ」でカーブをメッシュ化。
Tabキーで編集モード。
これを、全てのカーブに対して行います。
これで、カーブのメッシュ化が完了です。
胸の向きを前方にする
通常、解剖学書などに載る胸は「ハの字」に開いた形です。
これは、ブラなどをつけてない状態を想定した形になってます。
ブラなどをつけると、布の締め付けが発生 → 胸が前方を向きます。
解剖学的に間違いですが、3DCGのほとんどの場合、衣装を着せる事になります。
なので、衣装を着た状態の胸をベースとして形にします。
あとから、ボーン編集はシェイプキーで「ハの字」の形にできます。
衣装を脱いだ形にこだわる方は、そこで調整してください。
胸の先にある頂点を選択。
大きめのプロポーショナル変形を入れて上面図で見て回転。
センシティブ判定を避ける事を狙ったので、だいぶ分かりにくい図になってます。
ご了承ください。
以上が、胸の向きを前方にする方法です。
左右対称と非対称の形状にまとめる
左右対称と非対称の形をまとめます。
Shift+クリックで複数選択 → Ctrl+Jで適応。
大切なのは「ミラーモディファイアを入れてるか」です。
ミラーモディファイアは最後まで残したいので、このようなパーツ分けをしました。
あと、ブログのセンシティブ回避用に立方体のモザイクが残ってます。
(一般の方はこれは不要です)
以上が、左右対称と非対称の形状にまとめる処理です。
不要なデータを削除する
この状態で不要なデータを削除します。
モデリングに使ったカーブ、ガイド線などを選択。
Xキーで削除。
参考資料のモデルも削除してください。
必要になったら、バックアップファイルを開き資料を確認します。
(Blenderを2ファイルで開くと見れます)
あとは、アウトライナーでよりデータを綺麗にします。
左上2つ目のボタンを選択。
「Blenderファイル」を選択。
オプジェクトなどを開きます。
すると、中身が無い外側だけのデータが残ってる事があります。
何が必要かを見分けるため、データに名前を付けます。
3Dビューでメッシュを選択。
アウトライナーで名前を変更。
これで、必要なデータが分かります。
Alt+クリックなどで、それ以外の不要なデータを選択。
Xキーで削除します。
参考資料のモデルを大量に読み込んだので…
不必要なデータが大量に入った形になってます。
これで、必要なデータだけを残すことができます。
メッシュを開きます。
すると… ここにも不要なデータが残ってます。
メッシュは、オプジェクトの中にある「形状のデータ」です。
オプジェクトの方は入れ物。
メッシュは中身と思ってください。
そして、不要なメッシュが大量にあるのは入れ物だけ消えて中身が残ってる状態になります。
こちらも削除する必要があります。
メッシュを選択。
オプジェクトデータプロパティからメッシュ名を変更。
これで、必要なメッシュが分かるようになました。
あとは不要なメッシュを同様の手順で削除します。
同様の手順でマテリアルなども削除します。
マテリアルはマテリアルプロパティで整理できます。
・マテリアルは名前を付けて整理。
・重複するマテリアルはメッシュを選択
→ 「割り当て」を押すとマテリアルを割り当てて整理。
・不要なマテリアルは「マイナスボタン」で削除。
これで、データの整理が完了です。
ボーンを追加する
ヒューマノイドボーンだけでは表現に限界があります。
そこで、ボーンを追加します。
ボーン追加の基本操作
画面右上の「X」を解除。
ボーンを選択 → Tabキーで編集モード。
追加したいボーンの親を選択 → Eキーで押し出し。
これで、新しいボーンが生成されます。
間が空いたボーンを作る場合は、2回押し出しを繰り返します。
そして、間にできたボーンを選択 → Xキー → 「ボーン」で削除。
これで、間が空いたボーンが生成できます。
複数のボーンを作る場合は、Shift+Dで複製。
分割を増やす場合はボーンを選択。
右クリックで細分化。
以上が、ボーンの基本操作です。
揺れ物ボーンは親ボーンでまとめる
胸やケモミミや髪など「揺れ物ボーン」は、それをまとめる親ボーンを作ります。
※髪の毛などはすべてにボーンを入れると手間+重たくなりすぎます。
適度に省略してボーンを入れてください。
VRChatのPhys Boneの場合、
親ボーンがあるとそこに設定するだけで子ボーンが動くようになるので便利です。
Phys Boneを入れると、Unity上でこのようのモノが揺れるようになります。
これを将来「胸、毛、ケモミミ」などに入れます。
親ボーンにしたい1つ上のボーンを選択。
Shift+Dキーで複製。
これを胸の親ボーンとします。
このボーンを親にして、分岐するボーンを作ります。
この形は、下図のように押し出して、間のボーンを消したら生成できます。
これらのテクニックを使い、揺れ物ボーンを作ってください。
以上が、揺れ物ボーンの設定です。
左右対称と非対称のボーンを作り分ける
左右対称のボーンは、名前を設定後に対象化を作って作ります。
なので、片側だけ作った状態にします。
【左右対称と非対称のボーンを作り分け】
・左右対称のボーンは片側だけ作成
・左右非対称のボーンは普通に両側のボーンを作成
左右対称で両側を作ってしまった場合、片側を残して消してください。
※このブログ通りになるなら、左側を消してください。
キャラから見た場合、右側のボーンです。
以上が、左右対称と非対称のボーンを作り分けです。
その他のテクニック
キャラは前の方が後ろより優先度が高いです。
なので、後ろ側は少し省略できます。
また、Unityのヒューマノイド用のボーンと自分の作りたい構造が合わない事があります。
・ヒューマノイドボーン → 足の指全てをまとめて「Toes」で設定する
・自分が設定したいボーン → 足の指全てを分けて設定したい
この場合、解剖学的におかしいですが、骨を2つに分けて親子関係を入れて設定します。
尻尾などは始点と終点を決めます。
その間を細分化して形作ります。
(もしくは、4メッシュ間隔などを決めて形を作ります)
以上でボーンの追加が完了です。
ボーンの名前を整理する
ボーンの名前を整理します。
最初に入れたボーンの名前は変えないでください。
ヒューマノイド用のボーンの名前を変えると…
この先行う自動設定が上手く動かなくなります。
オプジェクトデータプロパティ → 「ビューポート表示」を開きます。
表示の「名前」のチェックを入れます。
ビューポートオーバーレイから「テキスト情報」にチェックを入れます。
すると、ボーンの名前が表示されます。
そしたら、追加したボーンの名前を変えます。
名前を変えたいボーンを選択。
ボーンプロパティを開きます。
ここで名前を確認+変更できます。
ボーンは「英語」で名前を付けます。
足の指の場合「足 指 名前 英語」や「Toe Bone Name」などで足の骨の英語名を検索。
そして最後に「.L」をつけます。
L = Left = 左側の意味。
ただこの左側の「.L」はキャラクターから見て左側になります。
プログラムが介在するデータ処理の場合…
ほとんどは英語で作られてるので、名前に日本語が入るとエラーが出る可能性があります。
下図のように名前を付けました。
左右対称のボーンの場合、名前の最後に「.L」をつけてください。
「.」の要素も重要になるので必ず「.L」を1文字も変えずに付けてください。
「~~~~L」はNG
「~~~~.L」がOK
左右非対称の場合「.L」をつけないでください。
髪の毛関係は私は下記のように名前を付けてます。
・まず、普通の名前を設定(Flont_Hair_)
・次に、左から順にアルファベットのA~Zの名前を設定
・上から順に.001~の名前を設定
【最後の数字の入力で使える小技】
.001や.002は名前が被ってる場合、自動で数字が割り当てられます。
なので「Flont_Hair_A.001」と名前を付けてそれをコピー。
その名前を下の階層にそのままコピーペーストで入力。
すると自動で名前が「Flont_Hair_A.002」になります。
髪の毛の左右対称の場所は最後に「.L」をつけます。
名前的には「Side_Hair_A.001.L」のようにになります。
このように、追加したボーンに名前を付けてください。
以上でボーンの名前整理が完了です。
左右対称のボーンを作成する
左右対称のボーンを作ります。
ボーンを選択 → Tabキーで編集モード。
アーマチュア → 「対象化」を選択。
これで、左右対称のボーンが生成されます。
この方法を使った場合、左右対称のボーンの名前の最後に「.R」が付きます。
この自動名づけが便利なので一番最後に対象化しました。
以上でボーンの追加が完了です。
動かすのは次回になります。
まとめ
今回は、Blender3.6でキャラクターのボーンを追加する方法を解説しました。
・どのような構造のボーンを入れるかは用途によって変わる
・VRChatモデルの場合、Unityのヒューマノイドボーンをベースに入れる
・ヒューマノイドなどの規格に合わせると、動きの素材を入れるだけでキャラが動く
・ボーンの追加はEキーで押し出しが基本
・左右対称のボーンは片側だけ作り、名前の最後に「.L」か「.R」をつける
・.LはLeft=左側、.RはRight=右側
・.Lと.Rはキャラクターから見て右側、左側でつける
・左右非対称のボーンは両側を普通に作る
・最後に対象化を使い左右対称のボーンを作成
↓次回↓
また、ほかにも3DCGについて解説してます。
ぜひ、こちらもご覧ください。
コメント