Unity の Humanoid モデルを VRM モデルに変換してみた
目的
Humanoid モデルを VRM モデルに変換して、VirtualMotionCapture でいじれる様にしようか。
尚、説明レベルは「Unityとか名前しか知らない」レベルで。
基本的に、Booth 等で販売されてるモデルは Humanoid*1 ベースが殆ど。
というのも、現実的に VRM 形式だと変更/修正などが容易ではなく、カスタムして使うということが実質不可能だからだと思われる。
(なんかやる方法探せばないこともなさそうではあるけど…)
因みに、著作権の問題から、変換モデルの配布とかはしないので、試す人は買ってどうぞ。
ざっくり流れ
事前準備
- Unity を用意しましょう。(この記事を書いてる時のバージョンは 2019.4.9f)
unity.com - Uni-VRM をダウンロードしておきましょう。検証したバージョンは「0.59.0_873a」で、バージョンアップで使えなくなってたらメンゴ
Releases · vrm-c/UniVRM · GitHub - Humanoid モデルを用意しましょう
3Dキャラクターに関する人気の同人グッズ6221点を通販できる! - BOOTH
尚、利用規約に改変が可能かはきっちり見てください。
自分が買ったのはコレ。
booth.pm
(アルビノっ子大好きなので)
1. Unity でプロジェクトを作成して、プラグインを突っ込む
起動したら、とりあえず「新規作成」。
まぁ 3D だよね
起動したら左下の「Assets」を右クリックして「Package import」
先ほどダウンロードどしておいた UniVRM-0.59.0_873a.unitypackage
を指定する。
何か色々言われるけどそのまま import を実行
すると Assets の中がこんな感じになってるはず
2. お目当てのHumanoidモデルを読み込む
今回買ってダウンロードしてた Noy は、Unity パッケージが一緒だったので、パッケージインポートを行う。
そうでない場合は、「fbx」ファイルを直接取り込むことになる。
読み込んだらモデルを「Hierarchy」にドロップ
ドロップすると、「Scene」にキャラクターが表示されます。
3. VRM 用にモデルを編集する
モデルを読み込んだら、それを Humanoid として認識させる。
Hierarchy からモデルを選択すると、Inspector に「Avatar」なる項目が出るので、それをシングルクリックする。
すると、モデルの fbx が表示されるので、そいつをクリック
Inspector の内容が変わるので、「Rig*2」を選択して「Humanoid」を指定する。
(モデルによっては Generic になってるらしい)
これでまずは Humanoid 化はできたと。
そのままだとシェーダ*3 が VRM で標準ではない(要するに使えないソフトとかが出る)状態になってしまうので、シェーダーを片っ端から変更していく。
これは body (という fbx)を開くと、Inspector 上で色々表示されている。
で、このシェーダーですがVRMの標準で対応しているのが
- Standard : テクスチャ+標準影表示
- VRM/MToon : トゥーン(アニメ調)レンダリング(+影)
- VRM/UnlitTexture : 外部光の影響を受けない(Unlit) テクスチャ貼り付けのみ
- VRM/UnlitCutout : 外部光の影響を受けない(Unlit) 透過設定サポート
- VRM/Transparent : 外部光の影響を受けない(Unlit) αチャンネル(透過)対応のテクスチャ貼り付け
- VRM/TransparentZWrite : 外部光の影響を受けない(Unlit) ... だとは思うけど良くわからん
で、対象モデルはトゥーンでいいはずなので、全部MToon にしてしまおうと思う。
で、顔だけ MToon にしてみた結果がこれである。
うおっ!まぶしっ!
これは何が起こっているかと言うと、モデル自体が発光してしまってます。
発光もある程度は必要です(でないと、暗い画面においてモデルが真っ黒でみえなくなるからです)。
調整しようと思ったら、テクスチャを Emission の左の空欄にもっていき
すぐ右の HDR
をクリックして、明るさ調整します。
ライトのアイコンを切って、Intensity をほどほどに調整します。
こんな感じの調整を周りのテクスチャにも適用します。
4. VRM エクスポート
モデルのルートを選択して、「VRM > UniVRM-0.59.0 > Export humanoid」で、保存先を指定して保存。
これで一旦は完成です。
本当はエクスポートした後に眼球の移動範囲、表情の調整、服の揺れ設定などもあるのですが…そこまでやるなら下記参照してください。
因みにこの記事の内容は上記をスクショ込み、操作方法込みで書いてるだけです。
*1:Humanoidは、人型のモデル用に作られたモーションを他の人型モデルにも適用できるようにする仕組みです。 【Unity】Humanoid / Genericアニメーションについての基礎知識 - LIGHT11
*2:インポートしたモデルのメッシュ(ポリゴンのカクカク)にどのようにデフォーマー(≒角の取り方)をマッピングするかを定義し、アニメーション化できるようにします。
*3:3D の表面に、光や影、質感を与えるための設定