【VRoid】3Dモデル(.vrm)をFaceRigにインポートする方法

VRoidの3DモデルをFaceRigで表示できたら最高じゃないか!と思いついたので挑戦!

後述しておりますがフェイシャルの作り方が違うので、ちゃんとした移植は結構な手間がかかります。



vroid-summary-article


【VRoid】制作に役に立つ!おすすめの6つの便利機能・拡張まとめ

この記事の著者
CGブロガー すいみん

CGブロガー

すいみん

Suimin

プロフィール

某美大の油絵科を卒業後、大手CG映像プロダクションに入社。
その後ゲーム業界に転職。
現在は技術系のCGデザイナーをしています。 書籍:Unity デザイナーズ・バイブル
プロフィール詳細はこちら

[検証1]公式サンプル3DモデルをFaceRigにインポート

VRoidのキャラクターをFaceRigに取り込む方法を解説していきます。

公式ドキュメントの場所

参考 FaceRig取得できませんでした

モデルデータの作成方法(公式ドキュメント)
https://drive.google.com/file/d/0B9A2HzJCWwFWYnN6SFRPbW1mRWM/view

FaceRigを導入後、C:Program Files (x86)SteamsteamappscommonFaceRigBinToolsDocsにも公式ドキュメントが格納されています。

  • 3Dモデル/テクスチャのインポート関連(ImporterV2_FacerigModelAndTextureDocumentation.pdf)
  • 3Dモデル/テクスチャのインポート関連(旧式。obsolete_FacerigModelAndTextureDocumentation_15.pdf)
  • ノーマルマップ生成関連(GenerateNormalMapsForFacerig.pdf)
  • Live2D関連(3.0も対応。Live2D_Facerig_Avatars_Documentation.pdf)

サンプル3DデータをFaceRigへインポート

下記から公式のサンプルデータをダウンロード。

https://drive.google.com/file/d/0B8KlsC2kpc7nTW5YNzFWNDBqb0k/view

yexampleの中身は

  • モデル(.DAE)
  • テクスチャ(.tga)
  • ファイシャル(animフォルダの中身)

で構成されています。

C:Program Files (x86)SteamsteamappscommonFaceRigBinToolsImportWizardNewImportWizard.exe

を起動して、Model Importerを選択。

ウインドウ(FaceRig Model Importer)が表示されます、まずはそのままImportボタンをクリック。

バッチ処理が始まるので、完了するまで数分待ちます。

C:Program Files (x86)SteamsteamappscommonFaceRigModVPPC_CustomDataObjectsavataryexample

にデータが生成されていることを確認したら、FaceRigを起動。

アバターギャラリー>Workshop and Custom Avatarsに?のサムネイルが表示されているのでクリック。

初回はしばらくローディングするので待てば、女性のモデルが表示されます!

[検証2]Vroidのモデルデータ(.vrm)をFaceRigにインポートする方法

プリミティブ(立体)から、まずは自作データを表示させようと試みしましたが、エラーばかりで全然進めなかったので、サンプルモデルデータからモデルを差し替えて表示させてみました。

テクスチャを(.tga)に変換

画像編集ソフトで(.png)から(.tga)に変換します。
ついでに名前も変更します。

dがディフューズ、bがノーマル、sがスペキュラーですが、変換はdだけでも良いです。ここだけ命名をちゃんとしておくと、あとでインポートする時の割当が簡単になります。

Targa(24bit)
* F00_000_Body_00.png → neko_body_d.tga
* F00_000_Body_00_nml.png → neko_body_b.tga
* F00_000_EyeWhite_00.png → neko_eyewhite_d.tga
* F00_000_Face_00.nml.png → neko_face_b.tga
* F00_000_Face_00.png →  neko_face_d.tga
* F00_000_FaceMouth_00.png → neko_facemouth_d.tga
* F00_000_Hair_00_nml.png → neko_hair_b.tga 
* F00_000_Hair_00_spe.png → neko_hair_s.tga
* F00_000_HairBack_00_nml.png → neko_hairback_b.tga 
* F00_001_Accessory_01.png → neko_accessory_d.tga
* F00_001_Bottoms_01.png → neko_bottoms_d.tga
* F00_001_Shoes_01.png → neko_shoes_d.tga
* F00_001_Tops_01.png → neko_tops_d.tga

Targa(32bit)
* F00_000_EyeExtra_01.png → neko_eyeextra_d.tga
* F00_000_EyeHighlight_00 → neko_eyehighlight_d.tga
* F00_000_EyeIris_00.png → neko_eyeiris_d.tga
* F00_000_FaceBrow_00.png →  neko_facebrow_d.tga
* F00_000_FaceEyelash_00.png → neko_faceeyelash_d.tga
* F00_000_FaceEyeline_00.png → neko_faceeyeline_d.tga
* F00_000_Hair_00.png →  neko_hair_d.tga
* F00_000_HairBack_00.png → neko_hairback_d.tga

Photoshopでアルファチャンネルを作る方法

選択で、選択範囲を囲ってアルファチャンネルを作成してもよいのですが、

イメージ>演算でチャンネルを透明部分にしてあげると、機械的にアルファチャンネルが作成できます。

VRoidモデルのセットアップ

やることは単純です。

  • 3Dソフトで先に検証したサンプルデータを開きます。

  • VRoid(.vrm)のデータをインポートします。参考:https://www.cg-method.com/blender-import-vrm/

  • テクスチャを変換してTGAに差し替えます

  • ブレンドシェイプのモデルとヒストリーをすべて削除します。

  • サンプルモデルとだいたい大きさを合わせます。骨も動かして大体の位置にあわせます。
  • サンプルモデルの骨とメッシュをバインド。

  • 最後にモデルをエクスポート(.DAE)、先の検証用のデータをコピーして上書きします(yexampleGeometry.DAE)

FaceRigへのVroidのモデルデータ(.vrm)のインポート

検証の時と同じ手順です。

注意点を書いておきます。

  • DAEのモデルデータはキャラ名+Geometry.DAEとしておくこと。Data Folderのパスを指定した後の処理で自動でマテリアルが表示されます。
  • Avatar Nameは好きな名前に変更しておくこと。

  • アルファなしのマテリアルはOpaque(Skin no blended normals)、アルファ付きは値は1にすればOK Opaque(Skin no blended normals)に設定

自作データで試した時のメモ

  • カメラ位置用のNull(ロケーター)をモデルに入れていないとインポートできない。
  • Animations idle1を設定しないとインポートできない。

  • マテリアルを設定しないとインポートできない。

  • キャラの骨が1個だけだとインポートできない。(おそらく)いくつかの必須の骨を仕込まないとインポートできない。

Vroidモデルデータ(.vrm)のFaceRigへのコンバートテスト

  • VRoidの階層データのままでもFaceRigにて表示可能でした。
  • GlobalでZ-180回転したり、スケール変えたり調整
  • 原点に頭がくるようにPosition調整。そこを起点にカメラが回転する
  • 腰骨と同階層にCameraを置く。スケールが小さい場合は原点においてもOK

##[検証3]VRoidをFaceRigへコンバートする設定

Mayaでいろいろ検証して、落ち着いたモデルデータの設定。

  • VRMを変換後、ブレンドシェイプの設定とオブジェクトは削除テクスチャはTGAに差し替え
  • 最上位のノード(ロケーター)のスケールを100→1に変更、さらにRotateYを180度に(正面が背中を向ける様に)、頭の位置を原点に(Translate Y-14.3)

※この方向にしないとFaceRigの上下のカメラ操作が逆になってしまう

  • カメラは階層にいれないRotateYを-180度に、始めはキャラとだいぶ離しておく(Translate Z-80)

階層内にいれると初期カメラの方向がおかしくなる

まとめ2

気をつけることはこれだけと思うかもしれないですが、スケールやカメラ方向などを余計な操作をすると沼にハマります。

最低限の箇所だけいじることで、次のフェーズにスムーズに移れます。

Vカツモデルデータ(.vrm)のFaceRigへのコンバート

VRoidと同様の手順です。
VRMのデータを3DソフトでFaceRigの仕様に合わせてセットアップしなおして、コンバートします。

3Dモデル(.vrm)をFaceRigにインポートする方法まとめ

なんとか3DモデルをFaceRigに入れることができました。

あとは
骨の位置を修正し、ウェイトをちゃんとつけて、可動範囲のアニメーションを作成し、マテリアルを調整すれば
実用に耐えうるFaceRigモデルができると思います。

ブレンドシェイプベースからボーンベースのフェイシャルに変更しないといけないので、作り直しのコストが非常に大きいです。

あとはコンバート処理が時間が数分かかるのとエラーを潰すのが大変なので、もうすこしまとまった時間が必要だと思います。

今回はざっくり表示することろまでにとどめておきます。

参考 FaceRigに自作3Dモデルを入れる方法を学ぶ - トマシープが学ぶトマシープが学ぶ

以上、すいみん(@cg_method)でした!