一頭身はお好きですか?まるコットはお好きですか?
私は好きすぎて一頭身が主役の3Dゲームを作っています!
人型の3Dモデルなら作り方はそこら中にあるものの、一頭身の3Dモデルとなると作り方についての情報がほとんど見当たらなくて寂しいので記事を書くことにしました。
頑張ると以下のような3Dモデルが作れるようになります!

Contents
はじめに
この記事は通常の3Dモデル制作とは異なり、一頭身3Dモデルを作る際の各工程(モデリング、スキニング、リギングetc)で起こる課題や試行錯誤について記載した備忘録になります。
大まかな3Dモデル制作の流れや作り方、汎用的なBlenderのテクニック等については世の中にあふれるほどあるため省略します。ご容赦ください。
この記事ではBlender 2.83を使用しています。
そもそも一頭身って体の構造どうなってんのよ
昔読んだ空想科学読本という本に、カービィの骨格を図解しながら大真面目に考察しているページがありました。
おかしくて笑っちゃうでしょう?
・
・
・
実はこれが正解で、私が作った一頭身の3Dモデルも同じ骨格をしています。


キャラクターを正面から見た時の中心を拡大すると…

まあるい体の中心にボーンがぎっしり詰まっていますね。
ちなみにボーン構成には以下のVRChat対応ボーンを利用しているため、3D空間で自由に一頭身ライフを満喫できます。
UV球?ICO球?それとも…?
一頭身をモデリングする時の最大と言っても過言ではない悩み…
それは体のメッシュをどんな球体で作れば良いのか?これに尽きます。(異論は認めます)
球体の作り方とメリット・デメリットをいくつか上げたので用途に応じてどうぞ。
UV球
- ほぼ四角ポリゴンで構成されるためループカットやモディファイアの挙動の影響を受けにくい
- 極の部分のみ三角ポリゴンが出来るが、90度回転して口や尻尾の先端にしてしまうことでデメリットを無くせる
- なにより美しい曲線

ICO球
- 全て三角ポリゴンで構成されている
- そのためループカットやモディファイアがうまく動かないことが多いので採用したことはない
- なんか角ばってるしどことなくミラクルマター感ある

キューブにSubdivision Surfaceモディファイアを掛ける
プリセットのCubeメッシュにSubdivision Surfaceを2回掛けるとこうなる
- 全て四角ポリゴンで構成されるためループカットやモディファイアの挙動が安定する
- Subdivision Surfaceの挙動に慣れないと意図した造形を作るのが難しい
- とても美しい曲線

個人的には90度回転した粗めのUV球にSubdivision Surfaceを掛けてローポリで作るのがまるいんじゃないかなあと思います。(小一頭身感)

手足はぶっさし!
カービィみたいに手足の可動域を無視したポーズを付けたい?
それなら「ぶっさし」だ!

仕組みとしては単純で、独立した手足のメッシュを体の中に直接埋め込むモデリング手法です。

こうする事によって物理的には難しいポーズもなんなく行えます。

お顔の作り方
モデリングで悩んだポイントの一つに、目とか表情をどう作ればいいのか分からなかったということがあります。
私がいくつかの3Dモデルを見てきたなかでよくありそうなパターンとメリット・デメリットをいくつか挙げてみます。
立体物として忠実にメッシュで再現する
あまり作った経験は無いですが理想はこれだと思います。
- 物理的に破綻が無いので最終的な見栄えが良い
- 表情アニメーションする場合はトポロジーの流れがきれいじゃないと上手くいかないかも
- コミカルな表情を付ける場合に一工夫が必要


板ポリを貼り付ける
現在採用している手法。VRChatのデフォルメキャラクターなどでも採用例が多い。(商業でもそこそこ見かける)
- 立体としては破綻しているものの、手軽でコミカルな表情が付けやすい
- 近くで見たり角度によっては違和感が出てしまうことがある
- 表情アニメーションにはシェイプキーでメッシュ変形したり、体内に埋め込んだ表情メッシュを押し出したりして実現

シェイプキーで目を切り替えるパターンとしては

メッシュ変形だけでは実現できない場合は


体のテクスチャに顔を直接描く
- テクスチャのみの表現のため顔周りのメッシュを作り込む必要がない
- 表情のパターンに応じて同じようなテクスチャがたくさんいる
- 表情の切り替えにはテクスチャの切り替えによるアニメーションが必要など一工夫いる


透過テクスチャで目や頬を表現する
昔作ったカービィモデルの改良版。
- 前述の方法に近いが、こちらは目や頬などを描画するポリゴンを球面に張り合わせて表現
- 透過テクスチャを使うことでパーツごとに表示を切り替えられてそこそこ便利だった
- 前述同様、切り替えにはテクスチャアニメーションをするかモデル内部に複数の表情メッシュを用意して押し出す


口についてはテクスチャで表現する方法もあるけど個人的には立体で作り込まれていてほしい派です。(感想)
ウェイトペイント例
私の一頭身モデルの場合はこう、という例なので参考まで。
- Hip, Spine, Chestにはウェイトなし
- UpperChest

- Neckはウェイトなし。一頭身だけに?(???)
- Head

- Shoulderはウェイトなし。画像だと見えないけど体の中心に極小サイズの肩がある。
- UpperArm

- LowerArm, Handは省略。やわらかくてぽにぽにした感じのウェイトをつけよう。
- UpperLeg

- LowerLeg

- Footは省略。踏まれたくなるようなぽにぽにした感じのウェイトをつけよう。
- 残りのボーンはいい感じにウェイト設定。
便利なリグを作ろう!
アニメーションを付けるときに視覚的にも分かりやすく便利なリグがあると捗りますよね!
例えば上記の一頭身ボーンでは、HipやUpperChestが小さすぎて選択するだけでも一苦労ですね?
でしたら!
ボーンの見た目を変更してみましょう。





視覚的にも分かりやすく選択しやすい表示になりましたね!

続きまして。
一頭身の表情を付けるシェイプキーを作ったとして、アニメーション作成中にシェイプキーを手軽に制御できたらとっても便利なのにな~って思いますよね?

であれば!
シェイプキーの表情制御リグを作って楽にアニメーションに組み込みましょう。

手順
1.表情制御用のボーンを作って並べる


2.表情制御用ボーンの可動域を制御する
上下に少しだけしか動かないように以下のボーンコンストレイントを各ボーンに設定する。

3.シェイプキードライバーを作成する
例として「あ」の口の形をするシェイプキーのaを右クリックしてAdd Driverを選択。

以下のような設定を入力する。
- Expressionには var * 100
- Objectにはキャラクターのアーマチュアを選択
- Boneには先程作った「A」を選択
- Typeには Y Location
- Spaceには Local Space
つまりボーンの「A」が上下に動いたときにシェイプキーの値も動かしてねって設定。

これでポーズモードでボーンの「A」を上下に動かしたときにシェイプキーも連動して動くようになります。

ボーンの「A」のLocation情報をキーフレームとして登録することで表情付きのアニメーションが簡単に作れます。

取り返しのつかない要素?
モデリングを始める前に知っておきたかった取り返しのつかない要素について、なんとかなるパターンとなんとかならなさそうなパターンをいくつか挙げますのでご参考まで。
追加したモディファイアを適用する前にシェイプキーを作った場合
※結論 取り返しはつきます
ミラーやSubdivision Surfaceなどのモディファイアを追加(Add)した状態でシェイプキーを作ると、モディファイア適用(Apply)時にエラーが発生します。

この状態だとモデルを正常にエクスポートすることが出来ないためエラー通りに対応するならシェイプキーを全て削除する必要がありますが、Apply Modifierというアドオンを使うことでシェイプキーを保ったままモディファイアを適用することが出来ます。
なおこのアドオンでは前述のシェイプキードライバーが保持されないため、その場合はLazy Shapekeysアドオンでモディファイアを適用するのがおすすめです。
余談ですが私はモデリング後のモデルのメッシュをちょくちょく微調整する事があるので上記のアドオンに頼ってモディファイア未適用のままシェイプキーやアニメーションを作成しています。
モデルのエクスポート時には、アドオンでモディファイアを適用→エクスポート→モディファイア未適用状態に戻すといった一連の処理をする自作スクリプトを作って時短してます。
アニメーション作成後にボーンロールが統一されていない事に気がついた場合
※結論 取り返しがつかないと思います(解決方法知っていたら教えて下さいお願いします)
ボーンを押し出しで作った際など、ボーンのRoll値がバラバラに設定されてしまう事があります。

この値自体はスキニングやアニメーション時には特に悪さをすることなく(ローカル軸回転しようとした時に影響出るくらい?)、そのまま気にせず後の工程に進められる場合もあります。
ただし、ボーンコンストレイントで回転軸関連の制御をしたり、複数キャラでアニメーションを共有しようとした際にRoll値が統一されていない事によっておかしな方向に回転してしまうケースがあります。
Roll値自体の変更は容易なものの、アニメーション作成後にRoll値を変えた場合はキーフレームの回転情報はそのままなのでアニメーションが壊れます。
(私は既に大量のアニメーションを作っているので…/(^o^)\)
そのため本格的なアニメーション作成に入る前にボーンロールを確認して、軸方向を統一することをオススメします。
いくつかの記事を見た感じ、Blenderであればグローバル+Y軸で統一するのが良さそうです。
おわりに
これらのテクニックを活用して魅力的な一頭身を作ってみませんか?
みんなも作ろう一頭身!!!