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

VRM の特徴・内容

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

というのも…

  • 3D モデルを作成したクリエイターや使用したモデリングツールによって「作法」が違いデータの状況がひとつひとつ異なっている。
    • 座標系 (Y-UP, Z-UP, 右手系, 左手系)
    • スケール (メートル単位, cm 単位)
    • 初期姿勢 (T-Pose, A-Pose, Z+向き、Z-向き)
    • 表情の表現方法(Morph, Bone, TextureUV, 識別(命名)方法, 粒度(喜怒哀楽, 顔の部品単位の変形(左口角上)))
    • 骨(ボーン)の入れ方も状況によって異なっていたり(ボーンの識別(命名)方法、親子、リグ)
  • 3D モデルデータを取り扱うフォーマットは、仕様が必要以上に複雑であったり、必要な情報が不足している。
    • 対応ソフトが多い「FBX ファイル」はアプリケーションごとに読めたり読めなかったりします。どのアプリケーションのどのバージョンで出力した FBX なのか…というのを気にしたかたも多いと思います。
    • ゲームエンジンはアセットとして取り込むことはできても、ランタイムロードは想定されていないことが多い。
    • テクスチャーやマテリアルが別ファイルになっている。絶対パスが記述されている。zip になっている。文字コード、フォルダ構成。
  • 3D モデルデータを「アバターとして使用する」という観点で見ると、必要な情報が整備されていません。
    • 一人称視点を実現するためのアバター上のHMDの正確な位置はどこか
    • 一人称視点からアバターの頭部を非表示にしたい。具体的にはどこを消すのか

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

備考

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

ポータビリティ

  • テクスチャやマテリアルを含めたすべてが1ファイルにまとまり 簡単にランタイムロード できます。

モデル情報を共通化する

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

モーションを共通化する

  • ヒューマノイドを定義し、モーションキャプチャーなどのモーションを再生できます。
備考

➡️ 関連して VRM Animation があります。

T-Pose であることが必要です

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

表情を共通化する

  • 「喜怒哀楽」 「瞬き」 「あいうえお」といった標準の顔操作が定義されていて以下のようなことができます。
    • ユーザー操作で表情を選択
    • 音声からリップシンク
    • ランダムで瞬き
    • フェイシャルキャプチャーを割り当てる
    • ➡️ BlendShape
備考

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

視線を共通化する

マテリアルを共通化する

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

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

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

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

VR設定を共通化する

  • VR でのアバター利用のための 「一人称視点再現のための情報」 があります。
備考

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