見出し画像

Prefab Variantを使った楽々アバター改変のススメ

ちょっと待った「Unpack Prefab」

 「とりあえずUnpack Prefab」という流れ作業でアバターをUnpack Prefabしている人も多いかと思うが、実はこれは多くの人にとってはかなり大きなデメリットを生じてしまう行為である。
 この記事は、多くの人が改変で触れるであろう要素に触れ、それに対してPrefab Variantというものがどのように機能するかを説明することで「とりあえずUnpack Prefab」を無くし、自分のスタイルに応じた適切なPrefab Variant活用を促すものである。


改変ってこんなこと多くない?

 現時点で1年半ほどVRChatで遊ぶ中で、フレンドたちの様々な改変アバターにて以下の使い方が多く見られた。

  1. 共通した「自分らしさ」を入れる

  2. 服を着せかえる

  3. サイズを変える

 詳細は小単元で触れるが、次の章ではこの使い方をする場合にPrefab Variantが提供する便利な特性について触れるため、該当する人はPrefab Variantにより多くのメリットが得られると思われる。

共通した「自分らしさ」を入れる

 ベースが同じアバターに限らず、大きく以下の方法で自分らしさを表現するケースが多いと思う。

  1. 瞳の色やデザインを共通化する

  2. 髪の色を共通化する

  3. 小物を共通化する

改変前
改変後

服を着せかえる

 主に人間体系のアバターを使う場合に見られるが、上記「自分らしさ」を入れたアバターの服を着せかえ、シチュエーションや気分に応じて使い分ける事がある。

服装1
服装2

サイズを変える

 ゲームワールドなどでギミックに対して適正なアバターサイズが存在するため、上記「自分らしさ」を入れたアバターをリサイズすることで快適に遊べるようにする事がある。

身長変更の例 ※服装変更を含む



Prefab Variantでできること

Prefab Variantを使うことでできることの例として、以下の3点を挙げる。

  1. 「自分らしさ」をいろんなバリエーションに適用・更新できる!

  2. 変更した箇所がわかる!トラブルが起きたら戻せる!

  3. アバター更新を簡単適用!

「自分らしさ」をいろんなバリエーションに適用・更新できる!

 最も大きなメリットが得られる部分のため、少々長くなることを前置きする。
 前の章を読み替えると、「自分らしさ」を入れたアバターのバリエーションを複数作るケースが多いと言えるが、ここでバリエーションが作られるタイミングを考えた場合、果たして「自分らしさ」が完成した後にバリエーションが作られるだろうか?
答えはNOだ。なぜなら「自分らしさ」自体変わっていくものだし、バリエーションを作りたくなるタイミング(着せたい服が発売されたとか)は非常に多い。
この場合、複数作られたバリエーション全てに対して更新をかけるのは非常に骨が折れる作業となるし、必ず作業漏れが発生する。
 ここでPrefab Variantの特性が効いてくる。
以下はPrefab Variantを使った構成の一例を現した図である。

左が元アバター、右の先頭がバリエーション作成前のPrefab Variant

ここでは、バリエーションを作成する前に一つのPrefab Variantを作成している。※実際には着せ替えのためデフォルトの服は後述する手段で無効にしているが、ここでは着た状態にする。
この構成にした場合、バリエーションが作成される手前のPrefab Variantに入れた変更内容は、一部例外(後述)を除きすべてのバリエーションに適用される。後は各アバターをアップロードするだけで更新作業が完了する。
さて、一部例外と書いた部分だが、これは「バリエーション作成時に変更した部分」が該当する。つまり「意図的に変更した箇所は変更されたままになる」ということであり、マテリアル変更で肌色を変えようが髪色を変えようが、勝手に巻き戻されることはない。

変更した箇所がわかる!トラブルが起きたら戻せる!

 アバターに変更を加えた場合、変更箇所が太字になっているのを見たことはないだろうか?
これは元となったPrefab Variantから変更された箇所が可視化されている状態である。
一般にトラブルは変更箇所から発生するため、改変中に何かトラブルが発生した場合、この可視化された部分をチェックすることで改善の近道とすることができる。

シェイプキー変更の例
変更点を一覧する場合

 また、変更箇所がわかるようになっているということは、お決まりの機能として「元に戻す」という機能がある。該当の変更を右クリックしてRevertを選択するだけで元に戻せる。

元に戻す(Revert)

 この2点により改変中の取り返しのつかない操作を回避することができるため、気楽に改変を進めることができる。

アバター更新を簡単適用!

 2022年末現在、多くのアバターではいわゆる揺れものとしてPhysbonesが設定されていたり、Contactsを使ったギミックが搭載されている。
この設定は作者によりUnity上で行われ、その後Prefab Variant化されることでユーザーが簡単にアップロードできるようになっている。
また、作者によるアバター更新が発生する場合、このPrefab Variantが更新されたうえで再パッケージされる。
 この前提に立つと、購入したアバターをUnpackせずに改変した場合、更新版パッケージのインポートによって、作者によるPrefab Variant更新が現在のアバターに適用される。また、前述したPrefab Variantの特性に従い、ユーザーが変更した箇所はそのまま残る。
 つまり、Prefab Variantを活用した改変環境では、作者による更新内容を詳細に見ながらアバターを再設定する必要がない。


Prefab Variantでできないこと

 ここまでPrefab Variantが提供するメリットについて触れたが、Prefab Variant(厳密にはPrefab自体)が抱えるデメリットも存在する。
 この章ではデメリットとその回避方法(回避可能なものに限る)に触れ、前述したメリットと比較してどちらをとるかを選択できるようにする。

  1. ボーンやメッシュを含むGame objectの並び替え

  2. ボーンやメッシュを含むGame objectの階層変更

  3. ボーンやメッシュを含むGame objectの削除 

ボーンやメッシュを含むGame objectの並び替え

 Prefab VariantとなったGame objectを並び替えることはできない。
これはデータ構造を維持したまま回避する方法が存在しないため、どうしても変更したい場合はUnpackが必要になる。
 ただし、並び順は人間の可読性くらいしか影響がないため、前述したメリットを放棄してまで実施するかはよく検討する必要がある。

ボーンやメッシュを含むGame objectの階層変更

 Prefab VariantとなったGame objectの階層構造を変更することはできない。
これはデータ構造を維持したまま回避する方法が存在しないため、どうしても変更したい場合はUnpackが必要になる。
 これについては、特定の機能を実現するためには必須な場合が多いため、結論としてUnpackに至る可能性が高い。

ボーンやメッシュを含むGame objectの削除

 Prefab VariantとなったGame objectを削除することはできない。
これはデータ構造を維持したまま回避することが可能である。
方法は簡単で、TagにEditorOnlyを指定するだけである。
これによりオブジェクトは実行環境(VRChat)にはアップロードされなくなるため、DL負荷増加などを避けることができる。
 ※EditorOnlyによってアップロード対象から外したPhysbonesやContactコンポーネントがAvatar Performance Rankingに計上されるが、これが気になる場合は対象のコンポーネントを削除すれば計上されなくなる。また、このコンポーネントはRevertすることで再度使用することができる。

EditorOnlyによるアップロード回避
Physbonesコンポーネント削除の例

Unpackの影響

 ここまででPrefab Variantを使った改変のメリットとデメリットに触れた。
それを踏まえUnpackするかどうかを判断するために、Unpackが与える影響を簡単におさらいする。

  1. 元のPrefab Variantに戻すことはできない

  2. アバター更新が大変になる

  3. どこを変えたかわからなくなる

要約すると、「後戻りはできず、手間のかかる作業が爆発的に増える」。
これは作者によるアバター更新が未来にわたって不定な回数発生することに起因する。


Unpackをする時は

 上記全てを踏まえた上で「自分のやりたいことはUnpackしなければできない」という結論に至ることも当然あるため、その場合は以下2点を推奨する。

  1. 改変後にPrefab化することで、その後の改変の基準にする

  2. 「このバリエーションはこの改変が最後」という気持ちでUnpackする


さいごに

 この記事を読むことで、アバター改変においてPrefab Variantがどのようなメリットを与えるかがわかったと思う。
これを踏まえた上でUnpackすることももちろんあるが、「とりあえずUnpack Prefab」という状況は脱していると思う。
 良い改変ライフを!

この記事が気に入ったらサポートをしてみませんか?