webとモバイルアプリの逆転

webアプリとモバイルアプリの開発に関する話や本・ゲームなどの趣味の話を雑多にしていきたい

モデリング初心者がBlender 2.8でVRMモデルを作る上で覚えた操作と手順

だいぶ前に書いて下書きに放置されていたメモを発見したので投稿。
2月くらいにBlenderでのモデル作成に初挑戦して悩んだことをメモした内容になっています。
最近Blenderをいじることを再開して操作に慣れてきたので、もう少しまとめることができたらブラッシュアップしたいと思ってます。

VRMのモデルを(ほぼ)フルスクラッチで作成しようとしたときに、詰まったり悩むことがあったので、やった内容をまとめていきたいです。 ほぼと書いたのは、体の骨格的な部分は素体を公開している人がいたのでそれをありがたく使わせていただいたからです。

フルスクラッチで作ろうとしたのは、SDキャラというかミニキャラのようなモデルが欲しくて探してたのですが、見つからなかったのでじゃあ作るか…と思い立ったからです。 作ったVRMキャラは技術書典のサンプルアプリとして使いました。

できたモデルは下の画像のようになってます。 髪は途中でよくわからなくなって妥協してしまったので次回リベンジしたいなとおもっています

f:id:s-haya:20200309000548p:plain
正面
f:id:s-haya:20200309000611p:plain
横から

VRMモデルを作るうえで詰まった点

まず、自分がVRMモデルを作成する際に時間がかかってしまったポイントをまとめておきます。

  • Blenderでウェイトを設定する際に自動正規化の設定がされておらずうまく動きを設定できなかった
  • メッシュの裏表が正しく設定されておらず一部のメッシュが表示されなくなってしまった
  • Blenderで作成したモデルをUnityで読み込む際にBlendShapesの設定が正しくされておらず表情がおかしくなってしまった

Blenderでの作業

前準備

前準備としてBlenderVRMを扱うためのプラグインを導入します。

github.com

このプラグインを導入することでVRMモデル用のボーンが使えるようになります。
ここではVRM用のボーンを使うために導入しました。
ボーンとは3Dモデルの骨格のようなものであり、腕の可動域などの設定を行うのに使います。

f:id:s-haya:20200309004526p:plain
ボーン

モデルの作成

3Dモデルのキャラクターを作っていきます。 体自体は下記の素体を使用させていただきました。

booth.pm

体を導入したあと、下記のリンクを参考にしながら服を作っていきました。

かんたんBlender講座

Blenderでの3D女の子キャラモデリングの全てを完全解説するよ!

モデルの作成時にモデルのメッシュの裏表を正しく設定できているか注意する必要があります。 正しく設定できていない場合、VRMとして出力した際にモデルの一部がうまく表示されなくなってしまいます。
(私はモデルのスカートがうまく設定できておらず消えてしまいました。)

ボーンとウェイトの設定

キャラクターがどのように動くのかを設定します。 その目的を果たすために、ボーンとウェイトについて設定をします。 ボーンは骨格のようなもので、キャラクターの可動域を設定するものです。 そして、ウェイトはボーンを動かした際に、3Dモデルのキャラクターがどのように動くのかを設定するものです。

ボーンの設定

ボーンを追加するためには、ボーンを追加して、キャラクター上に重ねて配置します。
オブジェクトモードで「Shift+A」を押してアーマチュア-> VRM humanoidを選択することでボーンを追加することができます。

f:id:s-haya:20200515221124p:plain
ボーンの追加方法

ボーンを動かしたときにどのようにキャラクターが動くのかは次のウェイトの設定で行うので、 ボーンの配置は正面からみてキャラクターがなんとなく重なっているようにすれば問題ないかなと思って配置しています。

f:id:s-haya:20200515222215p:plain
ボーンと重ねた様子

ウェイトの設定

ボーンを設定したらウェイトを設定してキャラクターの動きを設定します。 流れとしては、Blenderの機能で自動でウェイトを設定し、手作業でウェイトを調整していきます。 手作業の調整を加えた理由として、意図した動きではないことがあったためです。 自動でウェイトを設定する方法としては、オブジェクトモードに設定して、キャラクタ→ボーンの順に「Shift」を押しながら選択し、「Ctr+P」を押して、自動のウェイトを選択しました。

自動で設定したウェイトでどのような動きになっているのかポーズモードでボーンを動かすことで確認していきます。 ボーンを選択した状態で「Ctr+Tab」を押すことでボーンモードに変更します。 この状態で回転などの操作を行い、自分が意図した挙動になっているのかを確認しました。 自分の場合、足を動かしたときにスカートの動きが正しく動いてなさそうだったので、足の動きを調整する流れを例にして説明します。

f:id:s-haya:20200515233839p:plain
ウェイトが設定されていなかった場合

手作業での設定はメッシュを選択し、「Ctr+Tab」を押してウェイトペイントを選択してウェイトを調整します。
ウェイトを調整する前に、メッシュの正規化を行います。この作業が大切で正規化を行わないと意図した動きをしませんでした(なぜだめだったのかは理解できていないです。後で確認したい・・・)。 ブラシの設定で自動正規化という項目があるので、そこにチェックをつけることで設定できます。

f:id:s-haya:20200515231727p:plain
正規化の選択

ボーンを選択した際に、キャラクターのどこの範囲がどれくらい動くのかは色で判断しました。 赤色がボーンの動きと強く関連して動き、青に近づくほど関連性は低くなっていきます。
自動でウェイトを調整した際にスカートの部分にウェイトが設定されておらず、足を動かしても貫通してしまう状態でした。なので、ウェイトを図のようにブラシで設定していき、調整を加えていきました。

f:id:s-haya:20200515232525p:plain
ウェイトの調整
f:id:s-haya:20200515233400p:plain
足を動かしたとき

テクスチャの設定

表情の設定

VRMにはブレンドシェイプという設定があり、 そこを調整することでモデルに表情をつけることができます。

ブレンドシェイプには事前に定義された種類があり、 その種類に該当する種類をBlenderで作成することでVRMで表情を設定できます。
Blenderではシェイプキーを設定することでこの設定を行うことができます。

シェイプキーは画像の場所から設定できます。

f:id:s-haya:20200621233635p:plain
シェイプキーの設定

例えば、プリセットの「A」を設定する場合を考えてみます。 このAは「あ」と発音しているときの表情を示しており、モデルの表情を変えてそれを表現するように設定する必要があります。 シェイプキーを設定するときには「編集モード」に設定して行います。
オブジェクトの頂点の位置を調整しながら、シェイプキーの設定を行います。
まず、ベースの表情を作成したのちに、 シェイプキーを作成し画像のように表情の調整をしていきます。

f:id:s-haya:20200621233725p:plain
ベースの表情
f:id:s-haya:20200621234031p:plain
「あ」の表情

注意点として、オブジェクトの数が上限する操作はしないようにする必要があります。 また、元に戻らない可能性もあるので、シェイプキーの設定を行う前にファイルのバックアップをとっておいたほうがよいと思います。 この表情の設定を自分が使いたいプリセットだけ繰り返していきます。

モデルの出力

最後にモデルの出力を行います。モデルはfbxの形式で出力して終了します。

Unityでの作業

前準備

UnityでVRMをあつかえるようにUniVRMというプラグインを用意する必要があります。 インストールの仕方は上記リンクに記述があるので、ここでは割愛します。

モデルの読み込み

Blenderで出力したfbx形式のモデルを読み込みます。 Unity上にfbxをドラッグアンドドロップの操作をすることで読み込むことができます。

読み込みが終わったら、fbxファイルをUnityで選択し設定を行います。 行う設定はmodelの種類とBlendShapeの種類です。

modelの種類はhumanoidを選択します。

f:id:s-haya:20200622194753p:plain
Humanoidの設定
ここでConfigureを選択することボーンの設定もできます。 Blenderでボーンの設定ができていれば、図のように緑色でボーンの対応箇所が表示されていると思います。
f:id:s-haya:20200622194035p:plain
HumanoidのCofigure

もう一つBlendShapeの設定として、Legacy Blend Shapes Normalsにチェックを付けて有効にしました。
自分の場合、このオプションを付けないとVRMの表情が正しく設定できず、「A」などのパラメーターを操作しても意図しないモデルの変形が行われてしまいました。(Unity2019.3.0a11 とBlender2.8の組み合わせで発生。Unityのバージョンによっては発生しない可能性あり)

f:id:s-haya:20200622195117p:plain
Legacy Blend Shapes Normals
上記の設定が完了したらVRMのメニューからexportを選択し、一度VRMで出力を行います。

マテリアルの設定

上記で出力したVRMモデルだとそのままだとマテリアルが正しく設定されてなかったので、もう一度読み込んで設定を追加していきます。

Blenderで作成したテクスチャの画像が必要なので用意します。

次にUnityでテクスチャを読み込んだマテリアルを作成します。 作り方はCreate->Materialを選択します。

f:id:s-haya:20201005154341p:plain
マテリアルの作成
作成したMaterialに対してshaderとColorのTextureの設定をします。 shaderは右上のshaderを選択した後にVRMー>Mtoonを選択します。
f:id:s-haya:20201005154648p:plain
sharder
Textureの設定は図の箇所で行います。用意したテクスチャの画像を図の箇所にドラッグ&ドロップで持っていくことで設定します。
f:id:s-haya:20201005160817p:plain
Texutureの設定

最後に、作成したマテリアルをVRMのモデルの該当する箇所にドラッグ&ドロップで持っていくことで適用することができます。

表情の設定

最後に表情の設定を行います。 BlendShapeに設定をすることで表情を決めることができます。

f:id:s-haya:20201005173343p:plain
BlendShapeの位置
BlendShapeをダブルクリックすることで設定を開くことができます。 各キーに対してどのような表情を割り当てるのかを下の画像で確認しながら設定することができます。 ここで設定できる表情はBlenderで設定したシェイプキーを元になっています。
f:id:s-haya:20201005175037p:plain
BlendShapeの設定

表情を設定できたらVRMー>Exportから出力することでVRMモデルの完成です!

今後やりたいことと感想

とりあえず動かすことができるようになったので、ひとまず満足しました… とりあえず動かせるようにすることを優先にしたため、髪の出来があまり納得してないままになってしまったので作り直してみたいなという気持ちがあります。

一通りやってみた感想としては、モデルの作成はほんとに大変でモデラーの人たちは偉大だな…って改めて思いました。
素人がいきなり最初からモデルの作成に手を出すとよくわからない用語に戸惑ったり、ツールの使い方がわからずに迷ってしまったので、VroidなどのVRMを出力できるソフトで作りながら学びつつ、改変をするってやり方のほうがよいかもしれないなと感じました。