VRMについて
あえて記事にすることではないかもしれないが、VRMに関しては全てhttps://dwango.github.io/vrm/に書いてある。実際に変換する過程をここで紹介しようと思う。
前提
手元に、オリジナルのVRChat用モデルがあり、それをVRMとして出力する、という前提で進めます。ちなみに私のキャラの名前はロアといいます。どうぞよろしくおねがいします(他己紹介)
まずunitypackageとして出力しておこう
普段編集しているUnityプロジェクトを開く。VRChat用なので、恐らく5.6.3p1でのプロジェクトだと思います。ただ、VRM書き出し用とVRChatアップロード用のプロジェクトは分けておいたほうが汚染されなくて済むので分けましょう。実際VRMのSDKスクリプトに割と警告が紛れ込んでいて、コンソールログが(ただでさえVRChatSDKで汚れているのに)更に汚れることになります。
あとはみなさん、多分Assetsフォルダの中身、たくさん入ってるんじゃないですか?私はこの有様なので、VRMとごっちゃにしたくないので、プロジェクトを分けます。
色は黒いですが、同じUnityです。
いつも使っているアバターを、HierarchyからProjectへドラッグアンドドロップします。Prefabが一個できます。
そのPrefabを右クリックし、「Export Package」をクリックします。
このような画面が出ます。Unity完全に理解マンはここで適切に出力するものを選んでもいいですが、とりあえず脳筋で全て出力しましょう。保存先を聞いてきますが、適切な場所を選んで出力します。ここまで終わったら、そのプロジェクトを閉じましょう。これからは新しくプロジェクトを作成して、そちらで作業します。
新しいプロジェクトを作る
ここから、Unityのバージョンを2018.2.1へ移します。VRMのツールがどこまで遡れるかわからないのですが、公式のドキュメントでは2017.2.0f3での画像なので、5.6.3p1でできるかどうかは怪しい。(試していません) Unityを起動したら、右上のNewをクリックし新しくプロジェクトを作ります。名前はテキトーでいいかと。(どうせすぐ消すし)
バージョン違いのUnityなんてどうやって入れるんだよ、っていう方はこちら(執筆中)で説明しています。
しばらく待つと起動します。いつもと同じです。
UnityPackageのインポート
先程出力したUnitypackageをプロジェクトへD&Dします。ここでも同じくどれをインポートするか聞いてきますが、とりあえず全部入れちゃいましょう。
なんか出てきたら「I Made a Backup. Go Ahead!」をクリック。
ただコミコミなので、インポートに時間が掛かるでしょう。その間に、VRMのUnity用SDKであるUniVRMをダウンロードしておきます。
ダウンロードページはhttps://github.com/dwango/UniVRM/releasesです。とりあえず最新のunitypackageをダウンロードしましょう。執筆時点での最新はv0.44でした。
ダウンロードが終わり、モデルのインポートも終わったら、このUnityPackageまで入れてしまいましょう。同じ様にProjectへD&Dします。このunitypackageは必ず全部インポートしましょう。
正規化のための出力
一度シーンへモデルを配置します。先程おいたPrefabからHierarchyへD&Dします。アバターがピンク色だ!!
VRChat用にCubedParadoxシェーダーを使っていたことが原因ですね。unitypackageに同梱されなかったみたいで、シェーダーが見つからずにピンク色になっています。でも問題ありません。
ではこれから、モデルをVRMの仕様に合わせていきます。以下は記事執筆時(2018年11月10日)時点での情報です。こちらから、最新を確認してください。
- モデルの位置
- モデルは原点に位置する
- モデルのスケール
- 1.0 = 1m
- モデルの向き
- モデルは+Zの方向に向いている
- 質感(マテリアル/シェーダ)
- 以下のシェーダの中から使用することを強く推奨します。
- PBR
- Standardシェーダー(Unity標準)
- Unlit系シェーダー
- VRM/UnlitTexture (UnityのUnit/Textureと同じ)
- VRM/UnlitCutout (UnityのUnit/Cutoutと同じ)
- VRM/UnlitTransparent (UnityのUnit/Transparentと同じ)
- VRM/UnlitTransparentZWrite (アルファブレンディングかつZWriteありです。実体のある半透明物への適用を想定しています)
- Toonシェーダー
- VRM/MToon (照明対応トゥーンシェーダ)
モデルの向き
アバターの向きを調整
シェーダーの再設定
キャラクターのマテリアルを見つけ出します。それぞれをVRM指定のシェーダーへ置き換えていきます。どれを使えばいいか分からない場合は、VRM/UnlitTexture(ライティングの影響を受けません)か、VRM/MToonなどを選べばいいと思います。
ロアについて言えば、CubedParadoxシェーダーを使っていた4つのマテリアルを全てVRM/MToonへ変更していきます。
それを全てのマテリアル分繰り返します。そしてパラメータをいじります。わからないものは適当にスライド動かしてやればよかろうなのです。
1回目の出力
VRMをとりあえず出力します。Export humanoidから選択したアバターを出力、TitleとAuthorを適切に設定してから、Export。
出力し終わったら、Hierarchyにあったモデルを非表示にします。
Unityに出力したVRMを読み込む
先程出力したVRMをUnityへD&Dで読み込みます。そうすると、prefabが生成されるので、同じくHierarchyへD&Dしシーンへ配置します。
配置したモデルをクリックすると、InspectorにVRM Metaというスクリプトがアサインされていて、何やらいろいろ入れる場所が出てきます。これに関して全て埋めていくことになります。ライセンス関係はめんどくさいとの公式文章ですが、非公開モデルであるならば、そんなに気にしなくても良さそうです。
さて、このあと表情や揺れモノなど設定してくのですが、次に回して、とりあえず暫定版を出力しましょう。
1回目の出力と同じ様に、モデル(Meta情報を更新したもの)を選択し、Export humanoidを行います。
デフォルトからそうなっていますが、Force T PoseもPose Freezeもチェックを外してください。Exportを押して、出力完了を待ちます。
完成
試しにVワールドなどに読み込んでみましょう。https://naby.booth.pm/items/990663
かわいい…
表情、揺れモノ追加
ここで一旦この記事はおしまいにして、次の記事で表情、ゆれものを追加していきたいと思います。