VRMモデルのセットアップの基礎

本記事ではVer4.8.6で数回に渡るマイナーアップデートにより強化されたVRM編集機能について解説します。

VRMはVR/メタバースなどで使用されることを想定した3Dキャラクター・アバター用のファイル形式です。glTFをベースに、キャラクターに特化した属性を持たせられるよう、主に下記の情報を付加する形で拡張が行われています。

  • アニメ調表現を行うMToonシェーダ
  • 標準的な人体のボーン構造(ヒューマノイド)
  • ばねボーン
  • 視線の制御
  • 1人称/3人称視点における可視設定
  • 著作権や利用用途・配布の許諾などを含むメタ情報

VRMファイルそのものの詳細ついてはVRMコンソーシアムvrm.dev技術仕様などをご参照ください。

VRMモデルのセットアップ作業の大半は[ボーン]コマンド内で行います。以下の説明は[ボーン]や[モーフ]コマンドの基本操作を理解していることを前提としています。一般的なボーン・モーフのセットアップ方法についてはヘルプ内のチュートリアルなどを参照してください。また、全体的な流れをつかむのが目的で、詳細な操作方法の説明までは踏み込んでおりませんので、実際に操作しながら確認したり、またヘルプも併せてご覧下さい。

MToonシェーダの設定

VRMでは材質のシェーダには以下が利用可能です。

  • Constant(陰影のない単色)
  • glTF(物理ベース)
  • MToon(アニメ調)

このうち、MToonシェーダがVRMモデルには最も一般的に扱われています。MToonシェーダを適用するには、[材質設定]の[シェーダ]欄から「VRM1.0 MToon」を選択してください。(VRM 0.xを使用する場合もこちらを指定)

MToonシェーダの特徴として、陰影・リムライト・輪郭線が挙げられます。

陰影はアニメ調表現において最も核となる要素で、光の当たる箇所と当たらない箇所をはっきりと分けて、明暗を強調する表現を行います。陰影の色や位置(シフト)、幅の調整が可能です。

左:デフォルト、中:陰影シフトを下げる、右:陰影幅を上げる

リムライトは後方から光が当たったようにオブジェクトの端付近が明るくなり、輪郭を際立たせることができます。

左:リムライトなし、右:リムライトあり

輪郭線はオブジェクトの境界の外側にオブジェクトと異なる色の領域を設けることによって、オブジェクトと背景や、オブジェクトの重なる箇所を明確に分ける効果が得られます。

左:輪郭線なし、右:輪郭線あり

VRMモデル用ボーンのセットアップ

ボーンを一からセットアップする場合と、VRM以外の用途に既に作成したボーンセットアップ済みモデルをVRM向けに改変する場合でそれぞれ説明します。

一からのセットアップ

VRMモデル用のボーンも、(VRM以外の)一般的なキャラクターモデルと同様に、おおまかには以下の手順でセットアップ行います。

  1. スキン用のオブジェクトを作成する
  2. オブジェクトに合うようにボーンを作成する
  3. [スキン設定]を行う
  4. [スキニング > ペイント]でウェイトを調整する

一般モデルと異なるのは、2でのボーンの作成時に[リギング > ボーン > 追加]コマンドで一から作成する代わりに、VRM用のテンプレートを用います。

[テンプレート]>[標準テンプレート]から「VRMヒューマノイド」を選択すると、VRMモデル用の標準構造を持ったボーンが生成されます。

生成後は、各ボーンをスキン用のオブジェクトに合うよう位置を調整します。スキン用オブジェクトは肩から両腕を横に伸ばした、いわゆる「Tポーズ」が基本となります。

標準構造で定義されていない、例えば髪や衣服、尻尾などのボーンが必要な場合は、さらに[リギング > ボーン > 追加]でボーンを追加します。

また、テンプレートの適用と同時に[ボーン設定モード]がVRM用に切り替わりますが、(既にVRM 0.xが指定されていない限り)VRMのバージョンは1.0となります。必要に応じて[表示設定]内の[ボーン設定モード]でVRM 0.x/1.0を切り替えてください。(VRMバージョンによる違いについては別記事を参照

既存のボーンセットアップ済みモデルをVRM向けにする

ウェイト調整済みのボーン付きモデルをVRM向けに改変したい場合、各材質にMToonなどのVRM向けシェーダを適用した上で、まず[ヒューマノイド]を設定します。

モデルを読み込んだ状態で、上でも説明したように[ボーン設定モード]を「VRM 0.x」または「VRM 1.0」に切り替えてください。

この状態で[ボーン設定]を呼び出すと、[基本情報]内に[ヒューマノイド]の設定項目が付加されているので、どのボーンが腰・頭・手・足などのどの部位に当たるかを一つずつ設定します。どの部位のボーンが必須かはVRM仕様書に記載されています。

ヒューマノイドの設定が一通り終わったら[VRM 0.x]または[VRM]タブ内から[VRMを検証]を呼び出し、ヒューマノイドの設定に不備がないかを必ず確認してください。(ヒューマノイド以外のチェック項目はこの時点では気にしなくて構いません)

ばねボーン・衝突体の設定

ボーンとヒューマノイドの設定を終えたら、ばねボーンのセットアップを行います。ヒューマノイドで設定されたボーンが動いたときに、形を変えながら追従して動くような「揺れ」を表現するためにばねボーンは用いられ、長い髪や衣服などに適用すると有用です。

紫色の球体がばねボーン、オレンジ色の球体が衝突体を示す。ばねボーンの表示はVRM 0.x/1.0で異なる。

髪や衣服にも追加のボーンをセットアップしている状態で、以下の手順で既存のボーンに重ねるようにばねボーンを作成します。

  1. [ばね]内の[新規作成]をオン
  2. 3Dビューやボーンリスト内でボーンを選択
  3. [ばねボーン作成]ボタンを押す

ばねボーンの作成後、[VRMプレイヤー]内で揺れ具合を調整します。

VRMプレイヤー内でばねボーンを選択し、各パラメータを変更しながら、モデルをドラッグで動かして、実際にどう揺れるかを確認してください。

ばねボーンを設定しただけの状態では、ばねボーンを設定した箇所が体内にめり込んでしまうので、合わせて衝突体(コライダー)の設定も行います。頭や胴体、腕、足などめり込む可能性のある箇所に球体またはカプセル型(VRM 1.0のみ)の衝突体を配置すると、ばねボーンがその内部には入り込まずに避けてくれる動きになります。

髪の毛用のばねボーンに対して、頭・腕・胴体に衝突体が設定されている

表情モーフの設定

表情モーフはVRMに必須の項目ではありませんが、特にフェイシャルトラッキングを用いたアバター配信には欠かせない要素です。VRMでは以下の表情が定義されています。(VRM 0.x/1.0で若干違いあり、詳細は技術仕様を参照)

  • 感情(喜・怒・哀・楽・驚)
  • リップシンク(あ・い・う・え・お)
  • 瞬き(両目・左目・右目)
  • 視点(上・下・左・右)

これらの表情は、顔のオブジェクトを複製して頂点の位置のみを動かしたものを対象オブジェクトとして複数用意した、頂点モーフのプリセットとして設定します。

各表情は頂点を動かしただけで元は同じオブジェクト

表情モーフは[モーフ]コマンド内で設定します。[ターゲット設定]でモーフの対象オブジェクトを指定するのと併せて、[設定モード]にVRM 1.0またはVRM 0.xを指定すると、プリセットの選択項目が表示されます。

プリセット選択欄の横にVRM 0.x/1.0用プリセット追加の項目があり、必要なプリセットを一括して追加することができます。

追加されたプリセットごとに対象オブジェクトのスライダーを調整して、どのモーフを適用するかを指定します。スライダーの値を変更した後は必ず[登録]してください。

プリセット「a」にA用の対象オブジェクトを100%適用した例

プリセットごとに対象オブジェクトを1つずつ用意するのが基本ですが、1つのプリセットに複数の対象オブジェクトを組み合わせることも可能です。

その他の設定

メタ情報のうち、モデル名と作者名は必須です。配布や用途に応じた許諾、サムネイル等も併せて設定しましょう。

視線情報と可視設定は通常は初期設定のままで構いませんが、配信システムやメタバース用ソフトなどで使用されるものがあります。必要に応じて設定してください。

VRMファイルへ出力

ファイルを出力する前に、ヒューマノイドの設定でも説明した[VRMを検証]を呼び出します。問題が残ったまま出力すると、受け側ソフトで読めないことがあるので、修正が必要です。「オプション」と記載されている項目はそのままでも構いません。

問題がないことが確認できたら、[名前を付けて保存]でVRM形式を指定して保存します。

最後に

駆け足ぎみに一通り説明しましたが、単に記事を読んだだけで理解するのは難しいので、併せて既存のVRMモデルを眺めることをお勧めします。VRMモデルはVRoid Studioを使って自身で作成したり、VRoid Hubニコニ立体などのサイトでダウンロード可能な既存のモデル(※著作権や利用許諾に注意すること)が配布されていますので、ばねボーンやモーフなどの構造がどうなっているかを確認しながら理解を進めていましょう。