VR向け3Dアバター新フォーマット「VRM」発表、ドキュメントひととおり読んでみた話 - ReDo

2018年4月17日

VR向け3Dアバター新フォーマット「VRM」発表、ドキュメントひととおり読んでみた話

スクリーンショット 2018-04-17 10.38.14.png

dwangoが、VR向け3Dアバター新フォーマットの「VRM」を発表しました。
ドキュメントを一通り読んでUnityでセットアップして手元のモデルをニコニ立体へのアップロードまで試してみたので、つらつらとその内容、読み取ったことを述べたいと思います。

VRM - dwango on GitHub
https://dwango.github.io/vrm/

○何ができるのかまとめ

・VRMでニコニ立体にアップロードしておくと、VRライブ・コミュニケーションサービスであるバーチャルキャストで自分のアバターとして使えます。

「VRM形式の投稿」「バーチャルキャスト連携許可」に対応しました - ニコニ立体お知らせブログ
http://blog.nicovideo.jp/3d/2018/04/vrm.html

・VRイベントルームサービスであるcluster.もVRMでの独自アバターに対応を発表しています。

・VRMはフォーマット中に「アバターとして他人が使っていいのか」「特定の許可された人だけが使っていいのか」「暴力・性的・商用利用可能か」「再配布・改変が可能か」といったライセンス情報が標準で含まれており、配布時にどのように使っていいかの利用規約を別途検討するコストが下がっている他、使う側や第三者も利用範囲のジャッジが容易という「グレーゾーンを低いコストでホワイトにする力」がとても高められています。

賛同企業一覧(50音順) 株式会社インフィニットループ、株式会社エクシヴィ、株式会社オーナカ、Gugenka(R) from CS-REPORTERS.INC、クラスター株式会社、株式会社Psychic VR Lab、株式会社ViRD、株式会社ハシラス

このラインナップをサービスに当てはめると、バーチャルキャスト、cluster.、パペ文字がVRM対応予定発表済み、他AniCast, HoloModels, STYLEもVRM対応すると期待できそうです。(カバーさん/ホロライブは検証中っぽい)

○公式ドキュメント

目的やその特徴については公式にかなり丁寧に書かれていますので、一通り目を通すのをオススメします。
全ページ読んでみたコメントをばつらつらと。

VRM - dwango on GitHub
アリシアちゃんのVRMはニコニ立体からダウンロードできます、セットアップの参考になるのでまずこれをUnityで開いて見るのが良いです。

「VRM」って何?どんなことができる? - dwango on GitHub
・目的、特徴とライセンスに含めることができるライセンス他メタ情報の説明があります。CC系の標準具合が良いです。また、他ライセンスページや二次創作時の参照親のURLを入れられるあたり揃っていて便利です。
CC-BY 3.0のドロイド君ことAndroid-Robotのようなキャラクターのモデルを作る際にもそのあたりをフォーマットに完全に含めて記載できます。ありがたい。

VRMファイルを作ってみたい - dwango on GitHub
・Unityと、UniVRMというUnity上でVRMの設定・import・export他を行うツールを使います。
UniVRMはOSSなのでPRとかガンガンやっちゃえばいいと思います。
・git submoduleとしてトゥーンなシェーダーMToon、glTFをUnityで扱うUniGLTF、BVHをUnityのHunmanoidに適用するUniHumanoidという3つのプロジェクトが含まれており、全部dwangoのスクラッチでMITライセンスで揃えられており、意図的に綺麗にしたんだろうなと感じます。

VRM仕様 - dwango on GitHub
・「VRMにどのようなデータを含めることができるのか」が書いてあり、つまるところ「fbxとかのモデルをUnityに持って来たあと、セットアップ作業として何をしなくてはいけないのか」がわかります。

UniVRMモデルのワークフロー - dwango on GitHub
・ワークフロー図について、export先のパスをUnity内のプロジェクトにすると(デフォルトがそうなっている)、自動的にimportが走るので少々わかりづらい動作をします。更新・上書きについて少し気をつけてください。
・「前髪に顎ボーンが割り当てられる」草。VRChatでのHumanoid自動認識でおなじみのノウハウですね。
・「正規化」という名称の行程で、座標系の修正、T-Pose強制、rotationのリセットが行われます。

ブレンドシェイプの設定 - dwango on GitHub
・いわゆる唇の形の「リップシンク」と、喜怒哀楽の「表情モーフ」のセットアップを行う必要があります。
・Editor拡張は使いやすいです。ただの1:1対応ではなくて、BlendShapeを複数選ぶブレンドができるのがありがたいです。
・Twitterでも少し出てましたが、「A I U E O」だとちょっとグローバルな感じではないので、OVRLipSyncでも採用されているMPEG-Viseme Standardにのっとって、「NEUTRAL(sil), aa, ih, ou, e, oh」という表記だけあわせるのはいかがでしょうか。

比較しながらやると作業がやりやすいです。

一人称表示 - dwango on GitHub
・一人称表示時に、モデルを首なしにする仕様があります。メッシュが分かれていればそれを指定可能で、また特定ボーン(デフォルトはHead)以降のメッシュを表示しないというAutoがあります。
・一人称首なし表示はモデル情報としてはただのメタデータで、描画側でCullingMaskやLayerを駆使して対応する必要があります。そのあたりがVRMFirstPersonCameraManager.csのコメントに書いてあります。

視線制御 - dwango on GitHub
・視線制御をボーン(デフォルト)かモーフか選べます。ボーンでやる際にはモーフ側BlendShapeのLOOK_UP他の設定はとくに使われません。

VRMSpringBone - dwango on GitHub
・各プラットフォームで銘々がやるしかない揺れもの話については、コライダ対応SpringBoneを独自に実装してきました。
・貫通対策側のコライダは複数オフセット込みで自由に設定できてシンプルでいい感じなのですが、揺れる側のコライダがモデルのボーン構造に依存するのでどうもモデル側で「揺れもの開始ボーン」と「自動的にコライダがいいように張り付くためのエンドボーン」をつけておく必要がありそうです。

→と思ったのですが適当にBlenderで空ボーン足しても、黄色いGizmo球を無視してスカートを元気に貫通してしまったので、よくわかりません。もう少しスカートをいじりながら試さないとわからなそうです。

UniVRMで使えるシェーダー - dwango on GitHub
・「UnityのStandard Shader」「透明まわりのバリエーションを揃えたUnlit」「2色陰なトゥーンシェーダーMToon」の主に3種類に対応している、という表現がたぶんあってると思います。
・ニコニ立体のプレビューでは強制Unlitになっちゃってるようなのでうまくいってるのかはバーチャルキャストのアップデートを楽しみにしたいと思います。

MToon - dwango on GitHub
・こちらがたぶん標準にしたいと考えていそうなトゥーンシェーダーです。
・僕は高性能なトゥーンシェーダーがよくわからないので、これだけあったらアバターシステムとしてはひとまずよいんじゃないかな、と思います。

VRMモデルを実行時にインポートする - dwango on GitHub
・UniVRMにはVRMファイルからの読み込みや実行中に(ダウンロードして)ストリームから読み込むなどのローダがあらかじめ組み込まれています。
・OS依存ないしスマホひっくるめて「サーバからモデルダウンロードして表示、すぐ利用」みたいなの組みやすいのではないでしょうか。

というわけで3Dグラフィックスよくわからないマンなりには一通り確認が終わったので、バーチャルキャストとcluster.のアップデートを楽しみにしたいと思います。

スクリーンショット 2018-04-17 10.59.34.png

コメントする