【Unity 2022】CATSでVRoidのモデルをVRChatに導入する

以前書いたVRoidモデルをVRChatへ持ち込む記事(現在非公開)の最新版です。突貫作業で書いたので、色々と端折っています。また、不適切な説明をしている場合がありますので予めご了承ください。

BlenderとCATSプラグインでVRMファイルを編集して、Unityで扱いやすい状態にします。Blender 3.6 LTSで行いますので、そちらをインストールしておいてください。

3.6 LTS — blender.org
Blender Foundation and the online developers community proudly present Blender 3.6 LTS!

VRoid Studioでモデルのエクスポート

何も削減せずにエクスポートしておきます。今回はVRoid StudioのサンプルモデルAを使って、VRM1.0形式で挑戦します。

Blenderプラグインのインストール

CATSの公式版は更新がされていないので、非公式版を使います。何か困っても、CATSの公式Discordサーバーで質問をしないでください。

「Blender 3.6.11」に「CATSの非公式版(3.6.7.1)」と「VRMアドオン」、「PolyQuilt」を入れておいてください。

Release 3.6.7.1 (Only for blender 3.6) · Yusarina/Cats-Blender-Plugin-Unofficial-
This version is only for Blender 3.6 if you need another version of blender please go here and look for a version of Cat...
Releases · saturday06/VRM-Addon-for-Blender
VRM Importer, Exporter and Utilities for Blender 2.93 to 4.1 - saturday06/VRM-Addon-for-Blender
Releases · sakana3/PolyQuilt
Blender Lowpoly support addon for Blender2.8. Contribute to sakana3/PolyQuilt development by creating an account on GitH...

PolyQuiltでキーマップ設定

PolyQuiltはメッシュを弄るときに便利なプラグインですが、今回は「Unityと同じカメラ操作に変更」するために使います。Blender慣れしているのならこの操作は不要です。

インストールした後に「ゲームエンジン風キーマップをセットアップ」を押せばOKです。

日本語化設定

Blender プリファレンスから日本語設定が行えます。

念のため、新規データのチェックだけ外しておきます。

次に、ビュー内で「Nキー」を押すと右側にアイテムやツールなどのメニューが出てきますので、CATSを選択します。

「Settings & Updates」から日本語に変更可能です。

CATSでのモデルのセットアップ

日本語設定でざっくり説明します。

VRMモデルをインポートする

「モデルのインポート」から.vrm形式のファイルをインポートします。

自動修正をする

Fix MMD Model

かつてCATSにあった「モデルを修正」ボタンは削除されています。「レガシーなもの」の中に、「Fix MMD Model」ボタンがあるのでそちらを使用してください。

モデルの修正は少し時間が掛かるので、処理が終了するまで待ちましょう。

処理が終わるとArmatureとBody等のメッシュのみの構成になるはずです。

固定材料(Fix Material)

翻訳がおかしいですが、マテリアルの修正をするボタンです。

その他

多分該当する物は入ってないと思いますが、「剛体とジョイントを削除(Remove Rigidbodies and Joints)」ボタンは押しても大丈夫そうでした。「同じマテリアルを組み合わせる」のはダメそうなので触らないでおきます。

リップシンクの作成

メッシュ欄に面(Face)を割り当てて、「fcl_MTH_A」「fcl_MTH_U」「fcl_MTH_I」になっていることを確認してから「バイセムを作成する(Create Visemes)」を押してリップシンク用のシェイプキーを生成します。

但し、VRoid Studioで口のサイズを変更しているなどで、「MTH U」が破綻している場合は、「MTH O」で代用したほうが良さそうです。

vrc.v_から始まる名前のリップシンク用シェイプキーが複数生成されます。

アイトラッキングの修正

目のボーンの向きを修正します。「Eye_L」と「Eye_R」を割り当てて、「目のボーンを回転させる」を押します。

下にあるアイトラッキング作成ボタンは使わないので触らないでください。

FBX形式でエクスポート

「モデルをエクスポート」から「Unity用FBX」を選んでエクスポートを行います。

警告が表示されますが、メッシュは結合せずに「Continue to Export」を押して保存してください。

テクスチャをエクスポートする

テクスチャが埋め込まれていると不便なので書き出します。書き出す前に「ファイル→名前を付けて保存」から、一度blendファイルを保存しておくと良いでしょう。

「ファイル→外部データ→リソースをパック解除」を選びます。

「現在のディレクトリのファイルを(必要があれば作成して)使用します」を選ぶと、blendファイルの保存先に「textures」フォルダが作成されてテクスチャがエクスポートされます。

Unityと和解する

最初にVCCかALCOMを使用してVRChat用のプロジェクトを用意してください。今回はALCOMを使います。

ALCOM - fast open-source VCC
Download page of ALCOM

VPMリポジトリの設定

Modular Avatar」と「AAO: AvatarOptimizer」と「liltoon」はよく使うので、そちらを入れます。それと、表情作成が必要なので、「FaceEmo」も入れておきます。

VPMリポジトリを追加ボタンから、以下のアドレスを入れてリポジトリを追加してください。

  • https://vpm.nadena.dev/vpm.json
  • https://vpm.anatawa12.com/vpm.json
  • https://lilxyzw.github.io/vpm-repos/vpm.json
  • https://suzuryg.github.io/vpm-repos/vpm.json

リポジトリを追加したら、新規作成したプロジェクトの「管理」ボタンから、「AAO: AvatarOptimizer」と「liltoon」をインストールしておいてください。

FBXファイルとテクスチャをUnityにインポートする

出力したFBXファイルをプロジェクト内にドラッグ&ドロップします。テクスチャも「textures」フォルダごと入れておきましょう。

モデルの設定

Read/Writeのチェックと法線をインポートに設定しておきます。

リグの設定

リグをHumanoidに変更して、「適用する」を押します。

それから「設定」ボタンを押すとリグ編集画面に切り替わりますので、左側のInspectorタブで「Head」を選んでください。

「Jaw」を「なし」に変更しておきます。

下にスクロールすると「Done」ボタンがあるので押して終了します。

マテリアルの設定

「外部マテリアルを使用(古い機能)」を選んで「適用する」を押します。

別の方法もあると思いますが、とりあえずこれで行きます。

マテリアルの編集

Materialsフォルダにマテリアルが出力されているはずなので、全て選択してからliltoonに変更します。

マテリアルにテクスチャを入れる

とても面倒ですが、手動で入れます。(前は自動で入ってたんだけどな……。)ノーマルマップ(真っ青なテクスチャ)があるものは、ついでに入れておくと良いでしょう。

メインカラーのところにテクスチャを入れて、色はE7E7E7からFFFFFFにします。

ノーマルマップ設定を開くと、ノーマルマップも選べます。

テクスチャ名の数字はモデルによって全く異なると思われるので、あまり参考にはなりませんが一応掲載しておきます。「_01.png~_11.png」までは身体と顔なので共通だと思いますが、それ以降は髪と衣装のマテリアル数に応じて変わってくるはずです。

サンプルモデルAの場合は以下のようになりました。

マテリアル名テクスチャ名ノーマルマップ描画モード備考
N00_000_00_Body_00_SKIN_10_11不透明
N00_000_00_EyeHighlight_00_EYE_03半透明
N00_000_00_EyeIris_00_EYE_02カットアウト
N00_000_00_EyeWhite_00_EYE_06不透明
N00_000_00_Face_00_SKIN_04_05不透明
N00_000_00_FaceBrow_00_FACE_07半透明
N00_000_00_FaceEyelash_00_FACE_08半透明
N00_000_00_FaceEyeline_00_FACE_09半透明
N00_000_00_FaceMouth_00_FACE_01不透明
N00_000_Hair_00_HAIR_01_15不透明
N00_000_Hair_00_HAIR_02_17不透明
N00_000_Hair_00_HAIR_03_19不透明
N00_000_Hair_00_HAIR_04_21不透明
N00_001_01_Shoes_01_CLOTH_03カットアウト
N00_001_02_Bottoms_01_CLOTH_12カットアウトカリングOFF
N00_005_01_Tops_01_CLOTH_14カットアウトカリングOFF

参考程度に描画モードの設定も書いておきましたが、描画モードは見栄えに合わせてカットアウトと半透明を使い分けてください。

できるだけカットアウトで済ませた方がトラブルになりづらいです。全部半透明にすると重なったときに消えたりしておかしくなりやすくなります。(※レンダーキューの都合)

アバターのセットアップ

シーン内にモデルを投げ込んでください。マテリアル設定を間違えていなければ、目元が黒くなったりはしません。黒くなっている場合は描画モードをカットアウトか半透明に切り替え、テクスチャを間違えている場合は置き換えます。

「コンポーネントの追加」から「VRC Avatar Descriptor」を入れます。

View Position

良い感じの位置に設定します。サンプルモデルの場合Yが1.41、Zが0.08ぐらいになりました。

LipSync

Viseme Blend Shapeにして、シーン内のFaceメッシュを選択すると自動的にシェイプキーが登録されます。

Eye Look

Eye_LとEye_Rを選択して、目の可動範囲を設定します。

シーン内に幾つかアバターを配置している場合は、Hierarchyの方からツリーを展開していって、直接持ってくるのが確実です。

Blender側で特に弄っていなければ、可動範囲は±5ぐらいの範囲が無難ではないかと思われます。

まばたきの設定

EyelidsをBlendshapeにして、Faceメッシュを設定するとまばたきのシェイプキーが選べるようになります。

まばたき用のシェイプキーは用意しなかったので、とりあえずBlinkに「Fcl_EYE_Close」を入れておきます。他2つは無しでもOKです。

表情作成

FaceEmoでよしなにしてください。

簡単な表情メニューを作る | FaceEmo
本ツールによる表情メニュー作成のサンプルとして、「どちらかの手のジェスチャーが Victory のとき笑顔になる」表情メニューを作ってみましょう。

アバターの最適化

この状態のVRoidアバターはそんなに重くはありませんが、アバター直下に「AAO Trace And Optimize」を入れておくと良い感じに最適化してくれます。

今後色々と弄って重たくなってきたら、しっかりとした最適化に挑戦することをオススメします。

Quest対応は?

VRoidアバターをQuest対応する為には半透明テクスチャを一切使わないようにする必要があります。しかし、それはあまりにもしんどいので解説はしません。Blenderで目元を全部作り直す気力があるなら、まぁその……。

VRChatにアップロードする

多分動くと思うので名前とサムネイルを設定してアップロードをします。

Streaming Mip Mapsのエラーが出ているはずなので、Auto Fixを押しておいてください。

予め設定する場合は、テクスチャのインポート設定で、「ミップストリーミング」にチェックを入れて適用します。

ノーマルマップ設定で怒られた場合もFix nowを選択してください。

細かいところはかなり端折ったので、そのうち書き足すと思います。

トラブルシューティング

目元が黒くなったりする

VRoidモデルは半透明テクスチャで色々とくりぬいている構造なので、描画モードが不透明だとおかしくなります。描画モードをカットアウトか半透明に設定してください。

スカートの裏側が透ける

カリングをOFFにします。liltoonであれば、基本設定の中にCull Modeがあるので、それをBackからOffに切り替えてください。

色が少しくすんでいる・暗い

シェーダーのメインカラーが灰色になっているかもしれません。

色が少し黄色っぽい

ディレクショナルライトの色を白にしてください。

矢印(キズモ)が出てこない

シーンビューの右上のボタンがオンになっているか確認してみてください。

プレビューする度に一時停止してしまう

エラーで一時停止する設定になっているかもしれません。コンソールタブを確認してください。

タイトルとURLをコピーしました