メインコンテンツまでスキップ

VRM の特徴・内容

VR(Virtual Reality)や VTuber などで 「キャラクターや人型のアバター(の 3D モデル)」 を取り扱おうとした場合、従来はアプリケーションごと、3D モデルデータごとに、 独自のシステムを開発したり細かく調整したりする必要がありました。

  • 3D モデルデータを取り扱うフォーマットは、仕様が必要以上に複雑であったり、必要な情報が不足している。
    • 何でも格納できるので、ファイル每にどのように入っているかを調べる必要がある。
    • 「アバターとして使用する」という観点で見ると、必要な情報が不足している。
  • ゲームエンジンはアセットとしてビルドする時に取り込むことが想定されていて、ランタイムにロードすることは想定されていないことが多い。
注記

対応ソフトが多い「FBX ファイル」はファイル毎に読めたり読めなかったりします。そのファイルがどのアプリケーションのどのバージョンで出力した FBX なのか…というのを気にしたかたも多いと思います。

VR でのアバター表現が急速に盛り上がる中でこういった状況が続くと、アプリケーション開発者・3D モデルクリエイターにとって二度手間三度手間になってしまいます。 この状況を改善するために、「人型 のキャラクターやアバター」に対象を絞ってモデルデータの差違を共通化・統一し、 ひとつのファイルでランタイムロードしてすぐに使用できるフォーマットを策定しました。

「VRM」は 「プラットフォーム非依存の 3D アバターファイルフォーマット」 を提案します。

ポータビリティ

  • ❗ テクスチャーやマテリアルが別ファイルになっている。絶対パスが記述されている。
  • ❗ zip になっている。文字コード、フォルダ構成。
  • ✅ テクスチャやマテリアルを含めたすべてが1ファイルにまとまり 簡単にランタイムロード できます。➡️ glb ベースです。

モデル情報を共通化する

  • ✅ タイトル・作者名だけでなく、サムネイルや VR 時代に即した、アバターに特化したライセンス情報 を内包できます。 ➡️ Meta

座標系を共通化する

3D モデルを作成したクリエイターや使用したモデリングツールによって「作法」が違いデータの状況がひとつひとつ異なっている。

  • ❗ 座標系 (右手系, 左手系, Z-UP, Y-UP etc)
  • ❗ スケール (m, mm, cm, inch etc)
  • ✅ 右手系 Y-UP
  • ✅ メートル単位
glTF の仕様に準拠しています。

モデル操作を共通化する

ポーズ、表情、目線の3つを操作できます。

備考

➡️ 関連して VRM Animation があります。 ポーズ、表情、目線の3つを格納できます。

モーション操作を共通化する

  • ❗ 様々な骨(ボーン)の入れ方(ボーンの識別(命名)方法、親子、リグ)
  • ❗ 様々な初期姿勢 (A-Pose 、T-Pose、Z-向き、Z+向き)
  • ✅ ヒューマノイドを定義し、モーションキャプチャーなどのモーションを再生できます。
  • ✅ T-Pose Z+向き

モーションを共通化するには、骨格もある程度共通化することが必要です。 標準のhumanoid bone の構成と初期姿勢 T-Pose を中心に仕様化しています。

vrm-1.0 update

vrm-0.x は 右が +X であるように Z-向き でした。 vrm-1.0 で仕様変更で Z+向き です。

vrm-0.x では T-Pose で正規化されていること が必要でした。 vrm-1.0 では制限が緩和されて T-Pose であること、が必要条件になりました。

表情操作を共通化する

  • ❗ 表情の表現方法(Morph, Bone, TextureUV, 識別(命名)方法, 粒度(喜怒哀楽, 顔の部品単位の変形(左口角上)))
  • ✅ 「喜怒哀楽」 「瞬き」 「あいうえお」といった標準の顔操作が定義されていて以下のようなことができます。
    • ユーザー操作で表情を選択
    • 音声からリップシンク
    • ランダムで瞬き
    • フェイシャルキャプチャーを割り当てる
    • ➡️ BlendShape
vrm-1.0 update

vrm-1.0 では喜怒哀楽に驚が追加されました。

視線操作を共通化する

マテリアルを共通化する

  • ✅ 3 種類のマテリアル(シェーダー)に対応しています。

ゆれものなどの自動的な要素を共通化する

  • ✅ キャラクターの髪の毛などについて、物理エンジンに依存しない「揺れ物」標準実装があります。
vrm-1.0 update

vrm-1.0 では constraint が追加されました。

VR設定を共通化する

  • ❗ 一人称視点を実現するためのアバター上のHMDの正確な位置はどこか
  • ❗ 一人称視点からアバターの頭部を非表示にしたい。具体的にはどこを消すのか
  • ✅ VR でのアバター利用のための 「一人称視点再現のための情報」 があります。
vrm-1.0 update

vrm0.x では視線基準位置と、HMDが別れていました。 vrm-1.0 では共用になります(HMDの精確な指定が分らない)