【Blender】BlenderでのVRM1.0設定
目次
- この記事の目的
- オペレーター
- Meta
- Humanoid
- First Person
- Look At
- Expressions
- Node Constraint
- Spring Bone
- MToonマテリアル
- シェイプキーを適用してエクスポートする
- VRMエクスポート時の注意
この記事の目的
この記事ではBlenderのVRM formatアドオンを用いてVRM設定をする際のポイントについて記載する。
この記事で使用したBlenderのバージョンは4.3.2、VRM formatのバージョンは2.33.1。
VRM formatのサイトは以下のリンク。
そしてVRM1.0のドキュメントはこちら
specification/VRMC_vrm-1.0/README.ja.md
あとはVRM1.0のポイント解説動画
オペレーター

VRM formatアドオンをインストールすると3Dビューポートのサイドバーに「VRM」というタブが現れる、VRMタブ内はいくつかのセクションに分かれており、オペレーターセクションではVRM形式に対応したボーンの作成、VRMモデルのチェック、エクスポート時の設定、VRMのバージョン指定ができる。
VRMのバージョンは0.0と1.0のどちらかが指定することが可能で、どちらを指定したかによって以降の設定内容が変わる。この記事では1.0で進めていく。
Meta
MetaセクションはVRMファイルの基本的な情報やモデル利用条件についての情報を記載するセクションとなっている。

Thumbnail
サムネイル画像を指定する、解像度は1024×1024推奨。
名前とAuthors(作者)
必須項目。
Avater Permission
アバターとして操作できるユーザーの指定で、Authorは作者のみ、Everyoneは誰でも、onlySeparatelyLicensedPersonは別のライセンス文書によって許諾されたユーザーのみ許諾するといったもので、販売アバターに対して用いられることを想定しているらしい。
Commercial Usage
商用利用の可否で禁止、個人の許可、法人も許可の3つがある。
Credit Notation
クレジット表記の要否となる。
Modification
改変の可否で、改変不可、改変のみ可、改変したものを再配布可能の3つ。
Allow Excessively Violent UsageとAllowExcessively Sexual Usage
それぞれ過剰な暴力表現、性的表現への許可となる。どこからが過剰なのかは公式ドキュメントに記載されてないのでここではR18かそれ未満かと解釈することにする。
その他の項目について知りたい場合は以下の公式ドキュメントに記載されている。
specification/VRMC_vrm-1.0/meta.ja.md
Humanoid

HumanoidセクションはVRMモデルのボーン設定について記述する場所となっている。オペレーターセクションの「VRMモデルを作成」で追加したボーンを使用しているのであればいじる必要はない。
First Person

First PersonセクションではVRアプリなどで1人称視点で操作する際に表示するメッシュの設定をすることが出来る。
髪の毛や頭部オブジェクトに対して「Third-Person Only」を設定することで1人称視点で髪の毛が視界を妨げるといったことを防ぐ。
First Personに関するドキュメントはこちら
specification/VRMC_vrm-1.0/firstPerson.ja.md
Look At

Look Atセクションでは視線制御についての設定をする。
Type
視線の移動をボーンでやるかExpression(シェイプキー)でやるかを指定する。
Expressionを指定した場合は次のExpressionsセクションのlookUp,lookDwon,lookLeft,lookRightの設定を行う必要がある。
Preview Target
プレビューを有効にする、のチェックをONにしてこの項目にオブジェクトを指定すると、そのオブジェクトを移動させたときに視線が追従するようになる。
Offset from Head Bone
ヘッドボーンからの視線移動の基準点(つまり目の位置)を設定する項目。
注意点としてここではYが高さ、Zで奥行きを指定するようになっている(おそらくUnityの座標系に合わせているため)
その他の項目はよくわかんないので以下をみてね。
specification/VRMC_vrm-1.0/lookAt.ja.md
Expressions

Expressionsセクションでは表情についての設定を行う。プリセットとしてVRMの表情、口の形、視線、まばたきの設定があり、上の画像ではHappyに対応する表情としてfaceメッシュのeye_smileシェイプキーを動かして、その際はまばたきを無効かするように設定している。
Is Binary
表情を変える際に途中の状態を経由せずに0か1かの状態のみ使用するように指定する。
Override Blink/Look At/Mouth
表情変更時にまばたき/視線移動/リップシンクをさせないようにするか設定できる、目を動かす表情の時はBlinkをBlock、口も動かす表情であればMouthもBlockにするとよい。
Morph Target Binds
ここで動かすシェイプキーを指定する。”+”ボタンを押すとアイテムが増えるので対象のメッシュ、シェイプキー、動かすウェイト値を設定する。
ドキュメントはこちら
specification/VRMC_vrm-1.0/expressions.ja.md
Node Constraint

Node Constraintセクションで設定する項目は無く。ここに記載されている条件を満たすボーンコンストレイント設定のボーンがあるとこのセクションに表示される。
ドキュメントはここ
specification/VRMC_node_constraint-1.0/README.ja.md
Spring Bone

Spring Boneセクションでは揺れもの関連の設定を行うことが可能で、「アニメーションを有効にする」チェックを入れることでアニメーション再生時に設定したボーンを揺らすこともできる。
注意点として揺らしたいボーンにはキーフレームを打つと動かなくなる。

Spring Bone Springsセクションで揺らすボーンの設定をする。一番上のエリアで”+”を押すとグループが作成され、そのグループ内に揺らすボーンを登録していくという流れになる。
中心
平行移動(歩き、走り等)による揺れを制御する際に指定する。基本は空でよいが、走るたびに動いて体にめり込むのが気になる場合などはrootやhipsを指定する。
Joints
実際に揺れるボーンを指定していく。最初に根元のボーンを指定してから”+”を押すと設定を引き継ぎつつ次のボーンが自動的に指定されて楽。
Stiffness Force
元に戻ろうとする力、小さい値にするほどボーンが良く動き、大きいほど動きが小さくなる
Gravity Power
重力の強さ、フレーム毎にGravity Dirで指定した方向への重力がかかる。
Gravity Dir
重力の方向、Z=-1.00で下方向への重力になる。
Drag Force
減速の大きさ、小さいほど素早く動き、大きいほどゆっくり動くようになる。
Joint Radius
ジョイントごとの衝突判定の大きさ。ボーンのテール部分にこの項目で指定した値を半径とした(単位はメートル)のコライダーが生成されるっぽい。
Collider Groups
このボーングループに対して衝突させるCollider Groupの設定。ここに登録しないと衝突判定が起きない。
Spring Bone設定の注意

Spring Boneで1つのボーンを揺らすためには最低2つのJointsを指定する必要がある(Unityではボーンの長さという概念が無いため揺らすボーン→次のボーンまでの長さでボーンの長さを認識するため)。
上の画像ではメッシュを動かすためのbone_mainを動かすためにはbone_mainとその子要素のbone_leafをJointsに指定する必要がある。この時パラメータの設定はbone_mainのものだけで良く、bone_leafに設定したパラメータは反映されない。
Spring Bone Colliders

コライダーの設定。ここで設定したコライダーを後でCollider Groupsに設定する。ここで作成したコライダーはBlender内にシェイプが球のEmptyオブジェクトとして生成される。
ボーン
コライダーの基準となるボーンを設定する。
Collider Type
コライダーの種類、球かカプセルを選択する。
オフセット
コライダーの位置を調整する際に使用する、なお名前もここで指定する。コライダーの種類でカプセルを指定した場合、終点の名前と座標を入力する欄が増える。
半径
コライダーの大きさを指定する。
Extended Collider
通常のコライダーはボーンがコライダーの内側に入らないように動作するが、逆にコライダーの外側にボーンが出ないようにするときに使う。らしい。
Spring Bone Collider Groups

上記で設定したコライダーをグループとして登録する。例えばキャラモデルの揺れものが髪の毛とスカートがあった場合、髪の毛用のコライダーとして頭付近のコライダーを1つのグループ、スカート用の足周りのコライダーを別のグループとして登録しておくなどのように使う。
ドキュメント
specification/VRMC_springBone-1.0/README.ja.md

Spring Boneを設定したアーマチュアにキーフレームを打ってアニメーションさせることで動作確認することが出来る。
もし動かない場合はSpring Boneを設定したボーンにキーフレームを打っていないか、Spring Boneの設定で中心の項目に変なボーンが入ってないか確認しよう。
MToonマテリアル
MToonとはVRMで使用できるアニメ的な表現に向いたシェーダーでVRMアドオンを使用することによりBlender内で設定することが出来ます。
MToonマテリアルを割り当てる

まずはマテリアルを適用させるためのオブジェクトとマテリアルを新規に作る。

マテリアルを作成したら、マテリアルプロパティを下にスクロールしていくと「VRM MToonマテリアルを有効にする」というチェックボックスがあるのでそれをオンにする。

オンにするとこのようにモデルの表示とVRMマテリアルの項目が変化する。ここから先は各項目についての説明を記載していく。
Rendering

Rendering:アルファモード
マテリアルの透過についての設定。
- ・Opaque:不透明
- ・CutOut:これを選択するとカットオフという項目が現れ、アルファ値がこの値以下の面を透過する。透過より処理が軽い、らしい。
- ・透過:半透明設定ができる
Rendering:両面表示
オフにすると裏面を描画しなくなる
Rendering:RenderQueueOffset
描画順の指定、髪の毛に隠れている眉毛を手前に表示したいときなどに使うらしい。
Lighting

Lighting:Lit Color,Alpha
ベースカラーを指定する。テクスチャ指定可能でテクスチャのアルファが適用される、と思う(試したことはない)。
また、右側のカラー選択でテクスチャに色が乗算でかかるのだが初期だと完全な白(#FFFFFF)ではないのでテクスチャがちょっと暗くなるので注意。
Lighting:Shade Color
影の色を指定する。Lit Colorと同じテクスチャを指定して右側のボックスで乗算する色を選択しても良いし、ベースカラーとは別の影用のテクスチャを作ってもよい。
Lighting:Normal Map
ノーマルマップテクスチャを指定する。
Lighting:Shading Toony

影の境界のぼかし具合を指定する。値が高いほど明るい箇所と影の境目がくっきりしたものになる。
Lighting:Shading Shift

影の出来やすさを指定する。低いほど影になりやすくなる。
Lighting:Additive Shading Shift

テクスチャを用いて個別に影の出来やすさを指定することが出来る。上の画像は目の部分を白く塗ったテクスチャを指定したもので、目の影が減っていることが確認できる。スケールにマイナスの値を指定することで逆に影を出来やすくすることもできる。
Global Illumination

よくわかんないッピ・・・
Emission

発光。それ自体が光源となるもの。基本的にはテクスチャで光らせたい部分だけその色に塗って適用する、と思う。(使ったことがない)
Rim Lighting

Rim Lighting:Rim Color
いつか書く
Rim Lighting:Rim LightingMix
いつか書く
Rim Lighting:Matcap Rim

Matcap画像を設定できる。
Rim Lighting:Parametric Rim Color
いつか書く
Rim Lighting:Parametric Rim Fresnel Power
いつか書く
Rim Lighting:Parametric Rim Lift
いつか書く
Outline

Outline:Outline Width Mode
アウトラインの種類を指定する。
- ・なし:なし
- ・World Coordinates:距離によってアウトラインの太さが変わる。
- ・Screen Coodinates:距離によらずアウトラインの太さは一定。
Outline:Outline Width

アウトラインの太さ、白黒テクスチャでアウトラインの太さを個別に指定することもできる。
テクスチャを使う場合、白で指定した太さの100%、黒で0%の太さとなる。
Outline:輪郭カラー
アウトラインの色。
Outline:Outline LightingMix
アウトラインが光源の影響を受ける割合を指定する。値が高いほど光源の影響を受けやすくなる。
Outline:プレビューを有効にする。
オンにすると3Dビューポート上でアウトラインが確認できる。結構重いので作業中はオフにしておいた方が良い。
MToonについては以下のnoteが詳しく解説している。
[Unity]VRoidユーザー向けMToon解説(できること編)|頼鳥ミドリ
あとドキュメント
specification/VRMC_materials_mtoon-1.0/README.ja.md
シェイプキーを適用してエクスポートする

衣装付きのキャラクターで、素体が衣装を貫通するのを防止するためのシェイプキーがある場合はシェイプキーを操作した状態でvrmファイルをエクスポートすることが出来る。

エクスポート時はシーン上のすべてのアーマチュアが出力されるため、必要なものだけエクスポートしたい場合はダイアログの「非表示のオブジェクトも含める」や「選択されたオブジェクトのみ」のオンオフで対応する。

エクスポートされたVRMファイルを対応ソフトで読み込むと、シェイプキーが適用された状態で出力されていることが確認できる。
VRMエクスポート時の注意
テクスチャが消失する

VRMファイルをエクスポートするとなぜかMToonマテリアルに設定したテクスチャが解除されてしまうことがあるが、これが起きる場合テクスチャノードの接続先を間違えている可能性がある。

例えばLit Color TextureのテクスチャノードはLit Colorではなく、Lit Color Texture Colorに繋ぐのが正しい。間違えてLit Colorにつないだ場合上記のような事象が発生する。
ボーンが消失する

Blenderでの作業時に揺れもの用のボーンの先端にリーフボーンをつけていたのだが、VRMエクスポートした際にこのリーフボーンが消えてしまった。

エクスポートしたVRMファイルをUnityにインポートすると画像のように「ear.L.010」の下についていたはずの「ear_end.L」ボーンが消えてしまっている。

ほかにも消えているボーンがあったので共通点を調べてみたところ、ボーンプロパティの「変形」がオフになっていることが原因だった。

「変形」をオンにしてエクスポートしなおした結果、ちゃんと「ear_end.L」ボーンもエクスポートされていることを確認できた。