はじめに
こんにちは。なたでです。
今回は、前回のVRoid Studioの紹介編の続きです。VRoid Studioだけでは編集が難しかった部分をメタセコイアを使用して補う方法を紹介していきます。

ここで記載した内容は、2024/4/7時点の情報となります。最新の場合は変わる可能性があるので注意してください。また私がよくわからないまま触って調べた情報なので誤りがあるかもしれません。間違っていたら教えていただけると幸いです。メタセコイアはVRMの読み書きにスタンダード版が必要です。
メタセコイアでVRChat用アバターの編集
VRoid StudioからVRMを出力
前回説明したVRMエクスポートからVRM0で出力します。

VRM0形式で出力する理由は、ぽけもり BOOTH支部さんが作成したツール「VRM Converter for VRChat」がVRM0形式からVRChatのAvatar3.0へ変換するツールのためです。
最適化について
いくつかのVRサービスの最適化基準を紹介します。
VRChat
VRChat 用の最適化基準です。項目がたくさんあるので関係ありそうなもののみ抜粋しています。揺らすボーンを使うと Phys Bone Collision Check Count を減らすのが厳しくなり、頑張ってもPoorレベルになります。
| Avatar Quality | Excellent | Good | Medium | Poor |
| Polygons | 32,000 | 70,000 | 70,000 | 70,000 |
| Texture Memory | 40 MB | 75 MB | 110 MB | 150 MB |
| Skinned Meshes | 1 | 2 | 8 | 16 |
| Basic Meshes | 4 | 8 | 16 | 24 |
| Material Slots | 4 | 8 | 16 | 32 |
| PhysBones Components | 4 | 8 | 16 | 32 |
| PhysBones Affected Transforms | 16 | 64 | 128 | 256 |
| PhysBones Colliders | 4 | 8 | 16 | 32 |
| PhysBones Collision Check Count | 32 | 128 | 256 | 512 |
| Animators | 1 | 4 | 16 | 32 |
| ボーン数 | 75 | 150 | 256 | 400 |
※この基準はPC版のものでQuest用のはもっと厳しくなる
NEOKET
NEOKET 用の最適化基準です。VRoid Hub にアップロードすると準拠しているか表示されます。PhysBonesの概念がないのですが、テクスチャ数の制限が厳しいです。VRoid Hubにアップするとなぜかテクスチャ数が上がります。
| フォーマット | VRM 0.0のみ |
| 年齢制限 | 全年齢のみ |
| ポリゴン数 | 70000以下 |
| メッシュ数 | 16以下 |
| サブメッシュ数 | 32以下 |
| テクスチャ数 | 16以下 |
| ボーン数 | 200以下 |
| ブレンドシェイプ数 | 128以下 |
| バウンディングボックス | 2.5m×2.5m×2.5m以下 |
「透明メッシュを削除する」とは
「透明メッシュを削除する」のチェックが有効化されていると、「肌マスク」で非表示かしているメッシュが削除され、服の下の肌のポリゴンや、上まつ毛、下まつげなどのポリゴンが部分的に削除されます。
今回説明をしませんが、パーフェクトシンクを作成ツールである「HANA_APP」などはポリゴンから動かしてモーフを作成するため、削除されているアバターには使用ができません。もしフェイストラッキングで上記ツールの使用を考えている場合は、この「透明メッシュを削除する」のチェックを外して出力し、事前にツールでモーフを作る必要があります。
猫耳のボーンの修正
ボーンを確認する
モデリングのボーンを押すことでボーンを確認することが出来ます。

VRoid Studioで作成した猫耳のボーンは次のように正しく入っているように見えます。

しかしパラメータを変更した場合は、猫耳のボーンが追従されず正しく設定されていないことが分かります。

リギングでボーン位置を調整する
「ボーン」の「リギング」で、ボーンのつなぎ目のボールを移動させて正しい位置にボーンを設定します。先にどちらかの耳を設定した後に、もう片方へ同様の設定を行います。このとき数値入力を使って具体的に設定すると楽です。

耳の先までボーンの設定が入れば完成です。

当たり判定の設定を行う
リギングの「VRM0.xタブ」の「ばね」でCatEarを設定すると、赤い〇が表示されます。これが当たり判定を示していますが、耳の先には当たり判定がないことが分かります(恐らく・・・?)。

「ボーンリスト」から猫耳の先の「*_end」と書いてあるボーンを選択して「+」を押すことで当たり判定として有効化できます。

追加されると左側のリストの中に「*_end」と書いてあるボーンが追加されます。

このサイズだと当たり判定が小さいので、大きくしておきます。例えば以下は60mmに設定したものです。これによってVRChat内で耳を触ることが可能になります。

不要な当たり判定の除去する
「ボーン」の「リギング」の「VRM 0.x」の「衝突体」を選択すると、体に「*_UpperArm」という衝突体が入っていることに気が付くと思います。これは、髪の毛などのばねボーンがめり込まなくするための当たり判定となります(多分)。特に腕に多く入っているのですが、髪の毛が短いアバターであれば衝突する可能性がないので除去しておいた方が、VRChatの「Phys Bone Collision Check Count」項目が削減できるので消しておきましょう。

衝突体はHair用のばねボーンの1つ1つに設定されているので、全ばねボーンを確認して解除していきます。

正直、衝突体はもっと減らせそうですが、これぐらいにしておきます。最適化する際はこのボーンがポイントです。例えば髪が短ければ、後ろ髪のボーン自体を除去してしまうというのも手です。
尻尾のボーンの修正する
ブログを記載した2024年4月7日当時「VRoid Studio 1.26.3」では尻尾に対応していなかったのですが、ちょうど数日後の2024年4月11日にリリースされた「VRoid Studio v1.27.0」からは尻尾に対応しています。ここの情報は古いですが、参考のために残しておきます。
親ボーンを付け替える
前回の「VRoid Studio 1.26.3」であった尻尾のボーン問題を解決していきます。見ての通り現状頭の「J_Bip_C_Head」から尻尾の「J_Sec_Hair1_08」にボーンがくっついています。

ボーンリストから「J_Sec_Hair1_08」を選択した状態で「ボーン設定」をクリックします。

ここで基本情報にある親を「J_Bip_C_Head」から「J_Bip_C_Hips」に変更してOKを押します。

これで親ボーンの付け替えが完了です。

スキニングの設定をする
もともと「つけ毛」で作った尻尾なので、スキニングは髪型用になっています。「スキニング」を選択し「ボーン選択」のスキンで「Hair」を選択してボーンをクリックすると、ボーンの影響を確認できます。赤い部分ほど影響を受けることが分かるのですが、根本に影響がないことが分かります。

このままだと塗りにくいので、Bodyを非表示にしてHairへ影響性をペイントのブラシから設定していきます。

何度も根元をクリックして赤くなったら完成です。

当たり判定の設定を行う
猫耳と同じように当たり判定が入っていないので入れて設定していきます。

尻尾の先までばねボーンを選択

追加します。

当たり判定を好きなサイズまで大きくします。

揺れ具合を確認する
ばねボーンの設定から硬さ、抵抗、重力設定が可能です。この設定がどれぐらいの影響があるのか、VRMプレイヤーでプレビューが行えます。「リギング」の「VRM 0.x」の「ばね」をクリックすると、VRM用の色々な機能が表示されます。ここで「VRMプレイヤー」を選択します。

「VRMプレイヤー」画面上でアバターの位置を動かすと、揺れ具合がリアルタイムでわかります。ちなみにこのプレイヤー上から各種パラメータを調整できるのですが、3Dモデル側の設定には反映されないようなのであくまでプレビュー程度で使ってみてください。

以下は設定例です。
| 尻尾 | 猫耳 | |
| 当たり判定 | 65mm | 60mm |
| 固さ | 0.20 | 0.80 |
| 抵抗 | 0.50 | 0.50 |
| 重力 | 0.00 | 0.00 |
アクセサリーを付ける
現状、VRoid Studioだけだと自分の好きなメッシュのアクセサリーを付けること出来ません。そこでメタセコイアを使って付けてみます。今回は以下で私が初めて作った星を頭につけてみたいと思います。

頭に取り付ける
ファイルをドラッグ&ドロップを行い『[オブジェクトを挿入]として、編集中のファイルに追加する』を選択してファイルを読み込みます。

頭の位置にアクセサリーとして設置します。

マテリアルの設定
VRM用のマテリアルの設定が必要になるので、マテリアルのシェーダーを「VRM1.0 MToon」にしておきます。あとは諸設定でシェーダー向けの色々な設定をしておきます。

ボーンの設定
アクセサリーは頭の上に乗せただけだと、頭のボーンに追従しませんので設定が必要です。「スキン設定」を選びボーンの設定が行えるように対象オブジェクトを追加します。今回は、オブジェクト名がstarなのでそれを選択。

「スキニング」の「ペイント「の「ボーン選択」からstarを選択する。そしてヘッドのボーンを選択する(どのボーンに追従するかの設定)。

あとは赤く塗れば完成。

モーフを確認する
今回は説明しませんがモーフの設定も可能です。このモーフはUnity上ではBlendShapeと呼ばれています。モデリングのモーフを押すことでモーフを設定、確認することが出来ます。ここでは確認程度に留めます。

モーフは、Faceにあるneutralのメッシュから他のメッシュへ各ポリゴン内の座標が補間されてスムーズに移動します。

モーフ情報とプリセットという概念があります。モーフ設定された情報は複数変更が可能で、これをプリセットという情報で設定が行えます。口を開ける、目を閉じる程度なら既存のモーフを用いればいいですが、例えばほっぺを膨らませたり、舌を出すというモーフとか多彩な表情を作る場合は厳しいため「HANA_APP」を用いることをおすすめします。
おわりに
最後まで読んでいただきありがとうございます。今までメタセコイアは使ったことがあったのですが、ボーンとモーフについては全く手を出せていませんでした。今回VRChat向けにいろいろ編集することがあり、いろいろ調べて大体分かるようになりました。ここでできることは、UnityやBlenderを使用してもできることかと思いますが、メタセコイアを持っている方はぜひ試してみてください。




コメント