はじめに
今回はModular Avatarにある「MA Mesh Settings」の使い方を紹介します。
MAの導入方法やUnityの基本操作はこちらをご覧ください。
何に使うモノ?
ボーンやシェイプキーで「変形する形状」に対して特使の処理を行うモノです。

これを使えば特定の角度でモデルが消えたり…

導入したモデルの明るさが一部だけ違うといった問題の “回避率” を上げてくれます。

このあたりの問題の詳細はこちらで解説。
やってることは「Skinned Mesh Rendererの中から要点を抜き取って外部で操作。
VRChatアップロード時に上書きする処理を送るだけです。

基本的にMA Mesh Settingsを設定した階層以下にある全ての「Skinned Mesh Renderer」に影響を与えます。


MA Mesh Settingsを「親」と「子」入れて2重構造にしたりすれば…
“全てに影響” でないこともありますが…
ややこしくなるので、その話はいったん省きます。
つまり、Skinned Mesh Rendererにある “重要な部分” を抜き出し。
回りくどく外部制御してるだけです。

なので理解ある作者が適切にBoudns設定したモデルを配布。
+理解あるユーザーが「アンカーオーバーライド」を適切に設定できる場合は不要です。

ただ… アンカーオーバーライドまで設定できるユーザーほとんどいないよね問題。
(私も技術顧問、Unityの師匠に聞いて初めて知った存在)
最重要はSkinned Mesh Rendererの理解
またMA Mesh Settings何か特別新しいことをやってないです。
「Skinned Mesh Renderer」を外部操作してるだけになります。
なので、これを使う上では…
「Skinnes Mesh Rendererへの理解」の方が超重要になります。
↓必要な方はこちらもセットでご覧ください。
MA Mesh Settingsの使い道
MA Mesh Settingsの使い道は下記の3つ。
・あるアバター "専用モデル" のアンカーオーバーライド指定
・最上位に入れて雑くBoundsとアンカーオーバーライド設定
・ワールド固定ギミックに使う
この3つを見ていきます。
① あるアバター “専用モデル” のBoundsとアンカーオーバーライド指定
MA Mesh Settingsを設定したモデルをアバターの階層に入れると…
自動でボーンを引っ張ってきます。
これがBoothでショップをやってる販売者側の人間にすごく心強いポイントです。


個人的に思う1番の強みがこのアンカーオーバーライドのパス指定。
Skinneed Mesh Rendererのアンカーオーバーライド指定は “アバター名” まで記録されます。

なので1つのアバターでアンカーオーバーライドを「Chest」などに設定した場合…
ほかのアバターにモデルを入れても、元のアバターにある「Chest」が読み込まれてしまいます。

そして元のモデルを消すとエラーになります。
なので、Skinned Mesh Rendererでの指定は使えません。

一方MA Mesh Settingsのパス指定は「Armature」部分から始まります。

つまり “アバター名” は空白です。

その結果、モデルを入れたアバターの名前を自動で読み込んでパス指定してくれます。
これがとても強い。

これを使えば作者側が適切なアンカーオーバーライドを指定できます。
→ 理解あるユーザーが自力で「アンカーオーバーライド」を設定しなくて良くなります。

個人的にこれが一番の強み。
モデル内でライトプローブ球の参照先が変わって色が違う問題を回避できます。


ライトプローブ球の参照先はアンカーオーバーライドで指定してます。
これを「Chest」などに揃えることで…
顔と体で色が変わるみたいな問題を回避できます。
ではこれ最強なので全てのモデルに入れたらいいじゃん?
と思うかもしれませんが…
○○専用モデルにしか使わない方が良いです。

公式ドキュメントにもそう書かれてます。

この理由を見ていきます。
“専用モデル” でなければ使わない
複数のアバターで使われる可能性があるモデルは「MA Mesh Settings」を入れないでください。

アバター次第では、ボーン名や構造が違うことがあります。
このような場合に正しく動かない可能性があります。


極端な例ですが…
「Armature」の名前が「Armatu Nyan」になってたらこの時点で動きません。
他にも最上位にMA Mesh Settingsが入ってると子モデルへの干渉問題が起こったりします。

このような多重設定によるエラーなども考えると…
「○○専用」みたいな「元のアバターの状態を保証できる」モノにしか使えないです。

ユーザの改変にも対応しきれない
ユーザーが過度な改変をした場合でも動かないです。
(ボーンを変えて1からUnityに入れるなど)

なので最終的には「ユーザーに任せるしかない」です。
こちらではユーザーが何やったかまでサポートできません。

最強なのはユーザーへの教育活動
これまでの情報を踏まえ、結論として最強なのは…
「MA Mesh Settings」でメーカー側がアンカーオーバーライドをパス指定することではなく…
アンカーオーバーライドに関することのユーザーへの注意喚起と学習の機会を用意です。
↓みたいな記事を買いてモデルの使い方の所に組み込んだりしてください。

Booth販売ページにこのブログURLで引っ張っても大丈夫です。
それでも「○○専用モデル」と売り出すものであれば…
ユーザーが大幅なアバター改変をしてないことを前提に、アンカーオーバーライドの自動設定のために使ってもいいかなというモノになります。


この尻尾リボンみたいな…
さすがに、わざわざ形を変えて別のモデルに入れたりしないよね。
+ボーン名まで変えてUnityに上げなおした猛者は知らん(サポート外)
みたいなモデルに使えます。
② 最上位に入れて雑くBoundsとアンカーオーバーライド設定
公式説明でトップに出てくる用途がコレです。

一番上の所に「MA Mesh Settings」を入れて使いましょうねというモノ。

これで、1発で中にある全てのBoundsとアンカーオーバーライド設定を統一化できます。

ただしこれを使うと…
モデルの1パーツで見ればすごい無駄で広いBoundsができることもあります。

重要なのは「アンカーオーバーライド」です。
これさえ合ってれば大丈夫です。

なので最上位に入れるなら…
個人的にはアンカーオーバーライドだけChest指定するのが良いかなと思います。

これで非破壊的にアンカーオーバーライドの一括設定ツールと同じ効果が出ます。

Boundsはユーザーが追加したアクセサリーの範囲のままが良かったりします。
なのでBoundsは個別設定、アンカーオーバーライドだけChestにしましょうねという処理です。

あとアバターの方もできれば「Skinned Mesh Renderer」でBounds範囲を個別に決めれば
最適化になりますが…

それがめんどくさいよねという問題もあるので「Bounds」までやっちゃうのも手。
特にアバター制作者のデバッグ段階でメッシュ構造がコロコロ変わる場合は…
「アンカーオーバーライド」と「Bounds」の2設定を入れておくと作業の手間が少し減ります。

あと今のパソコンの性能を考えると…
Bounds範囲がちょっと大きいぐらい普通に許されると思います。


なので、一番上にMA Mesh Settingsを入れてBoundsをアバター全体にするのは…
普通にやっていいことだと思います。
ただ教材としては「Boundsを個別最適化しましょうね」という必要があるジレンマ。
以上が最上位に入れて雑くBoundsとアンカーオーバーライド設定の解説です。
③アバター由来のワールド固定ギミックに使う
アバター由来のワールド固定オプジェクトを生成した場合…
アバターとギミックで出したオプジェクトの距離が大幅に離れます。

この時、何かしらの理由で親に「MA Mesh Settings」が入ってたりすると…
ワールド固定したオプジェクトとBounds範囲が大幅に離れることがあります。

その結果、正しく表示されない現象が起こる可能性が出てきます。

こちらに対処するために…
ワールド固定ギミックであれば子オプジェクトにMA Mesh Settingsを入れるのも手です。


ただ、そんな場面ある? と言われれば謎…。
MA Mesh Settingsの使い方
ヒエラルキーでMA Mesh Settingsを追加したいモデルを選択。
インスペクター → コンポーネントを追加 → Mesh seで検索。
→ 「MA Mesh Settings」を選択して配置。

あとは細かな設定をしていく流れになります。
設定モード関係の操作
一番最初の設定モードは「継承」です。
これは「MA Mesh Settings」が何も特別な処理をしないことを意味します。

親にMA Mesh Settingsがあればその設定を引き継ぎます。

親にMA Mesh SettingsがなければSkinned Mesh Rendererの設定を引き継ぎます。

設定しないは “絶対に” Skinned Mesh Rendererの設定を引き継ぐ処理になります。

親にMA Mesh Settingsがあっても、それを潰してきます。

設定は「絶対的な変更」です。

親に設定があっても、その設定を引き継がず…
書かれた通りの処理が入ります。


「設定」は不具合が起こる原因になりやすいので…
避けた方が良いです。
これは③の用途、ワールド固定ギミックで配置したモノ向け。
分かってる人でない限り、使わない方が良いです。

一番無難なのは「親で指定されてる時は継承、それ以外は設定」です。

親に設定があればそちらを優先。

なければ設定したモノの影響だすという状態。

①と②の用途であれば…
基本的に「親で指定されてる時は継承、それ以外は設定」を使うことをおすすめします。
そのほかの設定項目
「設定モード」の操作が終われば後は「Skinned Mesh Renderer」を置き換えるだけです。
↓下図の位置に対応してます。

要点は下記。
・Boundsを1周り大きく
・アンカーオーバーライドを物体の中央(Chest)で統一
この設定になれば何やっても良いです。

あとはEditor LangageでUIの言語を変えれます。大家好。

以上がMA Mesh Settingsの使い方です。
まとめ
今回はVRChat向けUnityの MA Mesh Settingsの使い方を紹介しました。
・MA Mesh Settingsは「Skinned Mesh Renderer」を上書きする処理
・主な用途は○○専用モデルの自動アンカーオーバーライド設定
・最上位の階層に置けばアバター全体のアンカーオーバーライド設定を統一できる
・親にMa Mesh Settinsgがある場合でアバター由来のワールド固定ギミックを使う場合は子でBoundsの基準点を分けるような個別に設定を入れる
・これを使う上では「Skinned Mesh Renderer」の理解が非常に重要
・アンカーオーバーライド関係で最強の答えはユーザーへの教育
また他にもVRChat向けUnityや3DCGについて解説してます。
ぜひこちらもご覧ください。
コメント