見出し画像

VRChat PB対応メモ書き(Quest化含む)

個人メモでっす!
※アバター改変スコシワカルという人よりの内容です
量が多すぎるので読みたい所だけ読んでね!(目次から飛んでね)
・スカート1mmだけワカルヨウニナリマシタ
・VRC内での設定ではなくUnity上での設定の話をまとめます。
・ここで言うQuest化はQuestでVery Poor表示できるようにするという意味となります
・間違っている内容あると思います。違ってたり変わってたら自分で調べてね!


文が長ぇ!!Quest対応した結論教えろや!

QuestでPBが動いて見えるまで設定した結果はこちら

●Legacy SDKのインストール方法(2023.5.3更新)

※注意
SDK3を使用している場合、下記の方法で最新のSDK3にした後に、
VCCのインストール方法へ進んでください。

VCCへの移行に伴い2023年の初め頃をもって古いSDKの形式のサポートが終了します。【VRCSDK3-AVATAR-2022.10.27.00.35_Public】という形式のUnity Packageのものが古いSDKと呼ばれる物になります。
SDKの更新がされなくなり、今後のVRChatの大型アプデ等で使用できなかったり、新機能が使用できないなどの不具合が発生していく可能性が高まります。

前準備

・Unityのバージョンを確認しましょう。
 Currently Supported Unity Version (vrchat.com) 
2022年12月31日においてはUnity2019.4.31f1になります。

・最新のSDK3を用意しましょう。2022年12月31日においては
【VRCSDK3-AVATAR-2022.10.27.00.35_Public】となっております。
下記リンク内にあるLegacy SDK3 - Deprecatedの項目に
SDKのUnitypackageがあるのでダウンロードしておきます。

・プロジェクトのバックアップを取りましょう!!!!!!
プロジェクトの!!!!!バックアップ!!!!!

・SDKのアップデートの方法は公式で下記サイトのようになっております。
インストール手順でうまくいかない場合の別の対策も記載されております。
Updating the SDK (vrchat.com)

インストール手順

  1. Unityを閉じる

  2. バックアップの為にプロジェクトファイルをコピーしておく!

  3. 更新したいプロジェクトをUnityで開く

  4. 古いSDKは何も触らずに新しいSDKをそのままインポートする

  5. 完了!

※SDK更新後にエラーが出る場合はUnityを再起動!それでもだめなら公式ドキュメント参照

●VCCのインストール、移行方法(2023.5.3更新)

2023年に新しいSDKとしてVRChat Creator Companion (VCC)が作成されました。
今までバラバラに管理されていたプロジェクトの状態をこれ一つで見ることができるようになったり、便利なツールを配布したりする事ができるようになっていくそうです。
ただし、UdonSharpを使用している場合
Ver.が0.x ではなく1.0に更新されています。特にワールドで不具合が発生しやすくなっています。

不具合の詳細は下記を参考にしてください、UDONはナンモワカラン

前準備

・VRChatのHPよりVCCをダウンロードしてインストールします。

・VCCをインストールした段階で自動でUnityの有無、Ver.を確認し必要であればボタンが表示され簡単に最新版のUnityのダウンロードができるようになっています。

VCCを起動してこんな画面になれば準備完了!(VCC1.0.6のスクショなので古いですが・・)

上記の方法で上手くいかない場合は公式テキストリンクを確認してください。

VCCへの移行手順

既存のプロジェクトをVCCに移行する手順を記載します。
公式文書のリンクはこちらになります。

1:Projectより右上の【Add Exsiting Project】を選択し、移行したいUnity Projectのファイルを選択する。

2:【Project】をクリックして先ほど追加したUnity Projectを選択して、Migrate Projectを選択

SDK3のプロジェクトは赤でLegacy表記がされます。

すると下のような表示がでるので
【Migrate a copy】を選択
【Migrate in place】を使用する場合は必ず
自分でバックアップを実施してください

最終確認が出るのでYesを選択すると移行作業が始まります。

3:プロジェクトを開く
VCC対応すると現在VCC関連の入っているソフトが一覧で表示され
必要に応じて追加でインストール、Ver.のダウングレード等も可能になっています。
アバターの場合は
・最新のVRChat Package Resolver Tool
・最新のVRChat SDK-Base
・最新のVRChat SDK-Avatars

が入っているか確認してください
他にもスクロールを下げて見るといくつか任意でインストールできるものがありますが、内容は下記文書リンクを参考にしてください

【Open Project】を選択するとUnityでファイルを開きます

新しいVer.が出ている場合、Latest Versionに表示されます

4:シーンを開く
Unityを開くと恐らくシーンにまっさらの状態で表示されると思います。
【Asset】内の【Scenes】に自分の作ったシーンがあると思うのでクリックすれば今まで作ったものが出てきます。
シーン名を特に決めてない場合は画像のようなSampleScenesになっていると思います。

シーンを理解してなかったのでここで詰んでた人です(n敗)

●DBをPBへ自動変換する方法

※既存のプロジェクトを使用し、Dynamic Bone(以下DB)が入っている前提で話します。

1.VRChat SDKからShow Control Panelを開く

2.DBが入っていますがPhysBones(以下PB)に変換しますか?というAuto Fixが新しく増えているのでAuto Fixをクリック

3.DBを削除してPBに置き換えます、この操作は元に戻せないから
バックアップ取ってね!という警告がでるのでProseedをクリック

4.白と紫とかの表示から水色やら緑に変化したらOK!

●触る、掴むに関する設定方法(2023.5.3更新)

VRC上の設定との違い

・VRC上のメニューからできるON、OFFに関しては全てのPBへのON、OFFのコントロールになっています。
その為、スカートは持たれたくないけどケモ耳と尻尾は触って欲しい!といった部分毎の設定ができません。
Unity上ではその設定がPB個々単位で設定できるので触って欲しい場所、触られてくない場所の設定ができます。

PBの設定わかんねぇけどセクハラ対策はしときたい人はここです。

選べる3つの状態

触る、掴む、固定するという3つのステータスの設定ができます。
触る:Collision
掴む:Grabbing
固定する:Posing

Posingを行うとボーンの向きがその位置で固定されて、その場所で揺ら揺ら動く挙動をします。
そしてこの3つは組み合わせが可能です。
下の動画であるように触れないけど掴めるといった事も可能です。
ただし、Posingするためには掴まないといけないので必然的にGrabbingがセットでついてきます。

設定方法

1.設定したい部分のVRC Phys Boneを開きます(インスペクターにでてきます)
2.Allow_〇〇の項目を変更する事で触ったり、掴んだりできなくなります。
(デフォルトではすべてTrueが入っています)
True:誰でも触れる、掴める
False:誰も触れない、掴めない
Otherにすると2つのチェックが出てきて
Allow Self:自分だけ掴める、触れる
Allow Other:他人だけ掴める、触れる
と変更する事ができます。

注意:この時、Collisionの半径 (radius) が0より大きい事を確認してください。0の場合、チェックが入っていても持ったり触ったりする事ができません。
半径が0より大きい場合は上の動画のようにボーンの周りに水色の当たり判定が見えます。

●PBのデバックモード

調整はしたけどちゃんと設定できていないのか
それとも自分の触り方が下手なのかどっちなんだい!!!
通常のパラメータのデバックとは別でPB用のデバックモードがあります。

手順

1.手元のボタン長押しでEXとかのメニュー出す(名前忘れた)
2.Option⇒Config⇒Avatar Overlayを選択

デバックモードの機能

4つのモードがあります

  • None

  • PhysBones

  • PhysBones Proximity

  • Contacts

None

デフォルトはこれ、何も見えない、いつもの世界。
デバックモードの状態のボーンは写真に写っちゃうので通常はNoneでOK。

PhysBones

Acriveになっている全ての
PhysBone components
PhysBones colliders
が見えるようです。(検証不足)

PBをActiveにしていなければ見えないので、アイテムを消している場合そのボーンは見えなくなります。

足周りの黄色はVRC PhysBone Colliderです。

PBの状態ではGrabbing、Posingの確認もできます。

Grabbing(掴んでいる)場合はボーンの線が
Posing(固定している)場合はボーンの線が

また、触る掴むに関する設定方法で話をした半径が0で触れない、掴めないボーンは半径にあたるボーンの周りの水色がありません。

PhysBones Proximity

PhysBonesにしたら目の前まっ黄色で見えない!!!
ってなってるのが多いと思います。その時はこちらでテストしましょう。

手を近づけた所だけ?PBが見えるようになります

Contacts

  • VRCContactSender

  • VRCContactReceiverを表示します。

何も設定していなくても上の写真の部分には搭載されています。
Receiver Typeが定数(Constant)において互いが接触して信号が送れた場合は
Receiverが緑になるようです。

●PBの調整(Simplified)

ベータ版の中で遊んでいた記録を残しておきます。
公式サイトのPBの説明部分:PhysBones (vrchat.com)

Pull

Spring

Gravity(重力)(2023.5.3追記)

PB1.1より仕様が変わり
動いていない時のみ重力がかかるような挙動になった
移動したり、回転したりすると慣性が働くような感じに

PBは2023.5.3現在インスペクター内のVersionを1.0か1.1と選ぶことができます。

Immobile

Limit:制限なし、角度(Angle)、Hinge

Limit:Polar

●PBの調整(Advanded)2023/5/3更新

(2023.5.3追記)PysboneにVer.が振られるようになり最新のPBがVer1.1と
なりました。
Advancedに関連する更新は下記になります
Stiffness(屈曲剛性):骨を以前の向きに保つ強さにパラメータが変わりました。

公式文書より抜粋
Simplified is a more stable method that feels a bit slower and less reactive to external impulses and forces, but is easier to configure.
SimplifiedはAdvancedより簡単に設定できるし安定性が高いよ、ただし周りからの衝撃や力に対する反応が鈍いよ。

・Advanced is less stable, but allows more complicated configurations, and tends to be more reactive to external impulses and forces.
Advancedは安定性が低いよ。ただしSimplifiedより複雑な設定ができて周りからの衝撃や力に対する反応が大きいよ

上記のように特徴が違うのでゆったり動かす尻尾とかはSimplifired、スカートはAdvancedなど、どちらか1つというよりは使い分けた方が良いのかな!

Momentum

意味としては「運動量、はずみ、勢い」という意味
Simplifiedと同じく遊んだ記録です。
基本条件
PULL:0
重力:0.05

Stiffness(屈曲剛性)(PB Ver.1.0)

Momentum:1.0で実施。

なんやかんやで上記2つを調整した結果がこれ
スレッドに数値残してあります。

Stiffness(屈曲剛性)(PB Ver.1.1)

PB1.1で新しい仕様に変更されました。
ボーンの前の状態を維持する力という書かれ方をしていますが
ボーンが動いた後にその形で留まろうとするようです。
その為値を1.0にすると移動では全く動かないガチガチになります。
しかし、モーションの影響は受けるので動画のように回転した後に崩れた状態で維持しようとするので1.0で使うのはなかなか癖がありそうです。

Immobile (World)

※注意:この機能は現在Experimental(実験的)機能です。今後のアプデで大幅に変化、または消滅する可能性があります。

この機能を使用すると移動した時(スティック移動、ジャンプ)のみImmobileが働くようになります。フルトラ時の挙動にPBを合わせた後に移動時の挙動を緩やかにして破綻を防ぐなどする事ができます。Dynamic BoneだとInertに相当する機能だそうです。

●PBの調整(伸び縮み)(2023.5.3更新)

PBのVer.が1.1になった事により
伸ばすだけでなく縮める事ができるようになりました
更にStretch Motionを設定する事によって今まで掴んで伸ばすことしかできなかったものが、移動や自分の手足の動きなどでも伸び縮みできるようになりました!
・Max Stretch:伸ばす比率

ボーンの長さを基準として1~5倍の長さまで伸ばす事ができます。
ボーンが3つで構成されている場合3つ個々がそれぞれ伸びる事になります。
・Max Squish:縮む比率
ボーンの長さを基準としてボーンを縮める事ができます。
最大の1.0にするとボーンを完全に縮める事ができます。
Stretch Motion:動きによる伸び具合
移動や手足の動きによって伸びる比率です。
これが0の場合はPB Ver.1.0と同様Grabで掴んだりCollisionに当たったりする事によって伸び縮みさせる事ができます。

●PBの調整 Curve(カーブ)2022/5/15追記

SimplifiedでもAdvancedでも(アニメーション作成でも)使用できるカーブという機能。これを使用することでボーン1つ1つに細かい調整をする事ができるようになります。

アニメーションだとここのカーブをクリックとでてきます。

手順

「C]をクリックしてグラフを出して🔹をドラッグすると
尻尾の稼働角度の範囲が下のボーンに行くほど小さくなりました!

また、右クリックを押して調整する「キー」を追加することもできるので

真ん中だけ動かない!なんて設定もできます。

グラフの動きの変化

それぞれのキーを右クリックするとグラフの動き方を変更することができます。

・自由に調整(Free)
デフォルトはこれ、滑らか~に動きます。

ブロークンにチェックを入れると左右バラバラに調整できるので

こんな極端なグラフにすることもできます。

・リニア(Linear)
アニメーションだと飛行機のプロペラや扇風機などの一定の速度で動作するものに役に立つ線引き。

直線グラフに

一定(Constant)
次のキーまで横一直線に動く

カクン、カクン

便利小技

カーブを作っている途中で
値が大きすぎてズームアウトが永遠に終わらんとか
小さすぎて微調整できない・・・とか

上の終わりが見えない・・・

そんな時はキーボードの「F キー」を押すだけで

選択したパラメータの全体を見せてくれるように
良い感じにズームの調整をしてくれます!

●PBによるアイテムの両手持ち(Blenderでやる方法)

Aim Constraintなし!Questでも使用可能という便利技術!
ただしBlender使います()

●PBによるアイテムの両手持ち(Unityでやる方法)6/4追加

ツイッターで流れていた方法です。上記のBlenderでボーンを追加した作業をUnity上のみで完結させる方法です。
ただし、オブジェクトの位置を変える為、もしかしたら道具に入れたアニメーションがMISSINGするかも。(頑張って直してね、良い直し方あったら教えてほしいです・・・)

必要なもの

  • 空のオブジェクト2つだけ!!

手順

1.空のオブジェクトを作成し、武器の稼働軸になる部分(以下:TooL_Hand)に1つ、持ち手になる部分(以下:TooL_Hand_End)にもう1つ用意します。

軸になる部分
持ち手の部分

2.TooL_Handのオブジェクトが親になる様にTooL_Handの中にTooL_Hand_Endのオブジェクトを入れます。そしてTooL_Hand_Endの下に動かしたい道具を入れてください。上下が逆になると稼働軸が逆になります。

3.TooL_HandのオブジェクトにVRC_PhysBoneを追加
この時点で設定したオブジェクト2つの間にPBの白い線が通れば成功してます。これ以外に白い線が出てきても次のステップで消えるので気にしない!

4.TooL_Hand_Endの下に入れた道具をIgnore Transformに入れる。(上の剣だとChronoBladeのオブジェクト)

道具の中に他のボーンが入っている場合は必ず必要です。設定しないと道具内のボーン全てがPBとなり自由に動ける様になります。

この武器はシリンダーにボーンが入っているのでこのように・・・
Ignoreに入れれば大丈夫!

5.Bldender編のようにPBの値を設定していきましょう!

●PBのパラメータの使用例(2023.5.3更新)

パラメータ何があるの?

5つあります。
そしてここで設定したパラメータはExpression Menuのパラメータに組み込まなくても使えます。(アニメータのパラメータには同じものを入れてね)

〇〇_IsGrabbed:そのボーンを掴んだか、掴んでいないか。Bool式
〇〇_IsPosed:そのボーンを固定したかどうか。Bool式
〇〇_Angle:そのボーンの角度。Float式
〇〇_Stretch:そのボーンの伸び具合。Float式
〇〇_Squish:そのボーンの縮み具合。Float式

※Strech、SquishはMax Stretch、Max Squishのパラメータを0以上にあげておく必要があります。

〇〇の部分は自分の好きな名前を入れると下記画像のように勝手に5つのパラメータが作られます。

水風船のゴムが移動で伸びているのでStretchの値が増えています

〇〇_IsGrabbed

握ったらTrue、話したらFalse
Stretchの刀の動画のように握ったら抜刀モードへ移行するなんて使い方も可能

〇〇_ISPosed(未完成)

作成中・・・・

〇〇_Stretch

ボーンが完全に伸びきった状態を1.0としたFloat式
3倍に伸びを設定した場合は3倍まで伸びないと1.0にならない。

〇〇_Squish(未完成)

作成中・・・・

〇〇_Angle(2023.11.08動画追加)

下記の動画ではコッキングレバーにPBを入れて
LimitのHingeで動きを1軸に固定しています。

応用すればVertialLens2とかのズームや露出が直感的に弄れるようになる?

●PBをON,OFFさせる(2024.2.5更新)

たくさんの洋服を実装していたり
舌や武器のアクセサリーなどを表示した時だけ揺れるようにしたい場合
オブジェクトのON,OFFだけではPhysBoneが残り
負荷が重くなったり、相手のPBを触ろうとした時に自分の手元のPBを触ってギミックが誤作動してしまうというような問題が発生する場合があります。
その為、アニメーションでON,OFFする事ができます。

1:アニメーションに追加する

コントロールするアニメーションにPBのON,OFFに関わるパラメーターを追加します。

  1. 設定するアニメーションを選択してAdd Propertyを選択

  2. コントロールしたいPBのVRC_Phys_Bone_(Script)を探します。

  3. VRC_Phys_Bone_(Script)内のVRC_Phys_Bone.Enabledを追加します。

2:PBの設定を確認する

PBのON、OFFを行った場合
PBの設定によってOFFにした時の挙動が変化します。

ドレスや舌など揺れたまま固まると顔からはみ出たり
ドレスから足がはみ出たりするのを防ぐ為に
PBの設定内にあるReset When Disabledを確認します。
チェックを入れていない:揺れた状態で固まる
チェックを入れる:揺れる前の初期位置で固まる

●PBの揺れ具合をアニメーションで変更する(2024.2.5更新)

PBのON、OFF以外にもアニメーションを用いる事で
VRChat上で揺れ方を変える事も可能です。(公式非推奨)

いじろうと思えばこんなにいじれる・・・!

挙動を変えれるから面白い事できそうな気はする・・・

公式に無理って書いてあるじゃん

PhysBone properties like Spring, Pull, Stiffness, etc are set at initialization and cannot be animated.(PhysBones (vrchat.com) noteより抜粋)

Spring、Pull、StiffnessなどのPhysBoneプロパティは、初期化時に設定され、アニメーション化することはできません。

できんやんけ!!!

いつものようにアニメで数値を変更してそれを動かすだけではなんも変わりません。大事なのはPBの設定が初期化時に設定されるという点のようです。その為、ツイッター情報の一度OFFにしてONにするという手順が挟まってきます。

ざっくり言うと

  1. アニメでPBの数値をいじる

  2. PBを一回OFF⇒ONにして初期化

上記の流れの為、流動的なアニメーションは作成できない点に注意が必要です。また、この手順はサポートされていない方法の為、今後のアップデートで使用できなくなる可能性があります
作ったアニメを紹介します。

PBアニメ設定手順(例:Max Stretchで耳を伸ばす)

※Write DefaultはOFFの前提で話を進めます。

●用意したアニメ

  • Max Stretchの数値のみ変えたアニメ

・PBを初期化するためのアニメ

真ん中でPBをOFFにして再度ONに

・PBを元に戻すためのリセットアニメ

最後の1で初期化する前にPBのパラメータを戻します。

後はアニメータ作ってEXメニューとかにいれて
PBの数値をいじる⇒PBの初期化の手順をVRChat内で行えば
下の動画のような事が可能です!
※2023.5.3追記
下記動画のGrabなどの接触判定に関しても
上記の再起動作業が必要になりました。

●Colliderの設定方法(簡易版)2022/8/30追記

2022/8/30追記:ナニモワカランの状態からとりあえず紐づけれるようになったので追記しました。

スカートの命、コライダーです。これがあることによって座ったり、太ももを上げたりしたときにスカートから足がはみ出たりするのを防ぐことができます。
他にも髪の毛やたれ耳が移動時に頭の中に埋もれてしまうのを防いだりする事も可能です。

手順

1:VRC Physbone Colliderを入れる

入れたい部分に「コンポーネントを追加」からVRC Physbone Colliderを追加します。
空のオブジェクトを作成してそこに追加しても問題ありません。
半径、高さなど使用して大きさを合わせたりしていきましょう。

Colliderをまとめて見やすくするために
空のオブジェクト(Tail)を作成しRoot Transformに
本来入れたいオブジェクトを指定しています。

はい!できてーーーーーーーーーーーーーーません!!!!
まだです!今のままですとただの緑野郎です。

尻尾が反応しない・・・・

2:Phys BoneにColliderを登録する

コライダーはどのボーンと当たるようにするか設定する必要があります。
コライダーに当たって欲しいVRC Phys Boneを開き
コライダーのサイズをコライダーを登録する数だけ増やします。
そこに作成したColliderを追加してください。
例えば、両太ももに作ったコライダーに反応してほしい場合はサイズを2として登録します。

作ったコライダーをPBのコライダー枠にいれる

こうすることによって

動くようになりました!

●Quest対応の方法

※かなり大雑把な内容です。
もっと効率のいいやり方あると思います!
公式サイトの情報はこちら
Avatar Performance Ranking System (vrchat.com)

2つの注意点

Quest化するにあたって注意点として2点あり
PBに関するパフォーマンスがVery Poorになった場合の強制PBの削除アップロード不可
QuestとPCの触っている部分の同期ズレ
があります。
特に同期ズレに関しましては、PBパフォーマンスPoor化の手順だけを実施するとほぼ必ず起きると考えられます。

●PCとQuest間でのPB同期ズレの修正(2023/5/3更新)

※2023/5/3追記
現在オープンベータにおいてこのズレを解消する為のNetwork IDが導入されました。これにより下記手順を行う事無くPBの同期ができるようになりました。
しかし、PBの管理方法としては扱いやすい為このまま残しておきます。

この後説明するQuest対応に向けたPBの削減を行う前にこちらの説明が必要になったので追記になります。
Quest化させたことによってPC勢と触っている、掴んでいる場所が違って見えている・・・?という不具合が起きている事象への対策になります。
また、この同期ズレに関しましてはツイッターでの同症状が発生している方々の情報、対策方法を閲覧させて頂き解決致しました。特に参考になったツイートとしてクロツ様の当該ツイートを掲載させて頂きます。(ツイートはスレッドになって続いております)


(クロツ様の VRCQuestTools - クロツグミ - BOOTH  はQuest対応時に非常に便利なツールです!)

原因は?これがもたらす問題点

現在考えられている原因としましてはヒエラルキー内のVRC Phys Boneコンポーネントが入っているオブジェクトの順番が上下入れ替わる事で発生するようです。
検証撮影に協力頂きました、「ときわ様」ありがとうございました。

下のQuest版のPBコンポーネントのEarの左右の順番が逆です。
これだけで同期がズレます。
上の結果がこれ、右耳を持ってもらったのですが左耳が手に引っ張られ頭にめり込んでいます。

ヒエラルキー上でPBの上からの順番がズレると発生します。
その為、耳のPBを1つにまとめたりすると耳より下にあるPBが全てが1つずつPC版とズレることになり

例:Quest版の眼鏡PBの位置をアホ毛の上に動かす

上の状態だと
 PC    Quest
左耳  ⇒ 左耳
右耳  ⇒ 右耳
アホ毛 ⇒ 眼鏡
髪   ⇒ アホ毛
尻尾1 ⇒ 髪
尻尾2 ⇒ 尻尾1
眼鏡  ⇒ 尻尾2
 
という同期の仕方をする為、場所によっては髪⇒胸など大変な同期ズレが起きる可能性があります。\(^o^)/

アホ毛を引っ張って貰ったはずなのにQuestからは眼鏡が取られたように

Quest同期ズレ対策方法

対策としましては
QuestとPCで共通のPBを上に、PC版のみのPBを下にまとめることです。
しかし、PBはDBのように基本各ボーンに入っている為、編集した時に上下ズレたのかどうか非常に分かりにくいです。
そこで、更にArmatureのようなPB専用のオブジェクトまとめ欄を作成します。

空のオブジェクトを上記のようにPB分作成し
各パーツのPBコンポーネントをそれぞれコピーして入れてきます。

ただオブジェクトを作っただけではPBは移行できないのでPBをコピーしてきます

1:作った空のオブジェクトにコンポーネントを追加から
【VRC Phys Bone】を追加する

2:Armature内のボーンに入っているPBのデータをコピーする
・・・の部分をクリックすると項目がでてくるので
【コンポーネントをコピー】を選択

3:1でつくったデフォルトのPBに張り付ける

また、この時に【Root Transform】にArmatureのボーンが指定されていることを確認してください。
これによってPBの起点を指定している為です

ここが指定されていないと機能しません

4:Armature内のボーンに入っているPBを削除する
PBが同じ場所に二重でかかっている状態なのでArmature側のPBを削除して完了です。

上記のようにしていれば仮にボーン自体を移動させた場合でも同期がズレることはありません。

PBは上記の別管理にした状態でEarのボーンの位置を上下入れ替えた
正常に同期しています。うにょ~~~ん

Network IDによるPBの同期手順(2023/5/3追記)

2023/4/26のオープンベータにおいてPysboneがVer1.1となると同時にPB用のNetwork IDが導入されました。
これは、PBに番号を振り分け、その番号によってPBを同期するものです。

PC版とQuestアバターのPBの構成が完全に同じ場合は問題ないですが
異なる場合はこの設定が必要になります。

1.VRChat SDKを選択し➡Utilities➡Network ID import and Export Utilityを
クリック

2.TargetにIDを振るアバターを選択する

この時はまだ下は何もないです

3.Regenerate Scene IDsをクリックしてIDを作成する

一度IDを消して振り直しますがよろしいですかと警告がでますが
まだIDを作っていないので問題ありません

実行しますとPBのあるオブジェクトにIDが振られます。
ここの並び順は今までと異なり、アルファベット順にならんでいますので
PB_QuestよりもPB_PCが先になっています。

これで準備完了です。

4.Quest用アバターを用意する
・Questで稼働させるPB以外を削除します

5.Network ID import and Export Utilityを開き
ターゲットにQuest用アバターを選択してIDを確認する
この時に残っているPBがPC版で作ったIDの番号と同じであることを確認してください。
これで終了です!!

10~13はPC用のPBでしたが消されても番号は詰めずにそのままになっています

補足:QuestアバターのIDがなくなっていた場合

Quest用にPBを削った状態でIDを作成しなおすと新たに振り直す為
PC用のアバターのID番号と一致しなくなります。
この場合はPC版のID情報を取得する必要があります。

PC用のPBを消した状態でRegenerate Sence IDsを実施した結果です
Questで13番の左耳を持つと、PCでは13番の右髪を持つことになります

1.PCアバターのIDをExportを押して出力する

~~_network_idsという名前のファイルが作成されます

2.Questアバター側をターゲットに選択してImportを実施する

作ったファイルが見当たらないですが赤い丸部分のクリックすると出てきます
作成したファイルを選択して「開く」をクリック

3.消えているPC用のPBをIgnoreする
・Object not in SceneにあるIDをIgnoreして削除する
・問題ないPBの方はSelectをクリックして確定させる

もし、オブジェクト名を変えたことによって見つからないとなった場合は
該当するオブジェクトを選択してPCアバターと同じID番号へドラッグする。


●PBパフォーマンスのPoor化

今までのQuest化と大きく違う所は
PBに関連するパフォーマンスがVery Poorの場合、アップロード時にPBが全て削除され、全く動かなくなる。
PBそのものが削除されているのでShow Avatarをしても揺れません!!!

※2022/5/1現在:PB関連がベリプだとアップロードできません!
(Built & Publishが押せない)

Android Buildの場合、Runtimeの時に全部消すぞと宣言してきます。

ただし!要求されているのはあくまでPBに関するパフォーマンスのみ
それ以外のポリゴンが100万だろうが、メッシュが50個で結果的にベリプだろうが関係なしです!

  • 8 PhysBone components

  • 64 PhysBones affected transforms

  • 16 PhysBones colliders

  • 64 PhysBones collider checks

  • 16 Avatar Dynamics Contacts

上記の範囲に収めればQuestでもちゃんと揺れます!

ひとまず、引っかかるであろう
PhysBone components
PhysBones affected transforms
PhysBones collider checks
の削減方法でやった事を記載しておきます。

PhysBone componentsの削減

ええ、みんなが今必死こいていじくり回しているソイツです。
8個???スカートで終わりですが?????

14個のボーンにPBが・・・・

でもよく見るとPBの設定数値はみなほぼ同じ・・?
ならまとめちゃいましょう!

1.まとめる親を作る
・PBの入っているボーンをまとめているオブジェクトがあればそれを使いましょう。(今回はHips(Dress)を使用します。)
ない場合は「空のオブジェクトを作成」しましょう。
・作ったオブジェクトにまとめたいPBを全部入れる
・Hips(Dress)にコンポーネントを追加から「VRC Phys Bone」を追加

2.子に入れたボーンのPBからコンポーネントをコピーする

3.Hips(Dress)のPBにコンポーネントの値を貼り付けする。

4.Root TransformがコピーしたボーンになっているのでHips(Dress)に変更する。
※コライダーは主があんまり使ってないので説明省きます

他のも同様に、髪の毛、リボン、両耳などまとめられるものをとにかくまとめたり、目立たないような部分のPBを消したりすれば・・・

こんだけPB残して48個⇒8個に収まりました!

2022/5/1補足
※PBコンポーネント1つに対して同時にGrabbingできるのは一か所のみです。上記のように耳を1つにまとめたりすると片耳しか持つことができません。(Posingは可能です)

PhysBones affected transformsとPhysBones collider checksの削減(2022/8/30更新)

●affected transforms:揺れるPhysboneの合計数
●Collider Checks:
VRC Physbone Colliderと接触判定がされているボーンの合計数となります。

更に厳密に言うと
Collider ChecksはUnity画面で見れる水色のHinge部分の数
・affected transforms
は水色のHinge部分の数 + Bone Endとなります。

上の尻尾の場合、
Collider Checksは7
affected transformsは8になります。

スカートの場合ですとだいたい
5つくらいのボーン×周りに同じボーン12列×両太ももコライダー×両膝のコライダーくらいになるので
affected transformsはEndが付くので6×12=72
Collider Checksに関しては5×12×2×2=240 \(^o^)/

破綻を覚悟で削っていくしかありません!!

・削るボーンをIgnore Transformに入れる。

入れたボーンより下のボーンも自動で除外されます。
画面上でもボーンが減ります

頑張って削る、動かしたい所以外を妥協しつつ!削る!!

最終的に
・耳、尻尾、ドレスの3つだけになり
・髪の毛、後ろのリボン、他動いてるのかわからんやつのPBを削除して

Poorにねじ込みました!
PhysBones affected transforms:190⇒61
PhysBones collider checks:370⇒56

消えてますがPhysBone componentsは8 ⇒ 4になってます。

PhysBones collidersの削減(2022/8/30修正)

2022/8/30:とんでもねえ事間違いを書いていると気づいたのでここの内容を全面削除しました。ごめんなさい。

●PBPoor化と同期ズレの弊害(2022/5/1追記)

ここまで読んだら気づいたかもしれません
PBパフォーマンスをPoorにする為に耳やスカートをまとめた結果、同期ズレが発生するということに\(^o^)/

その為可能な限りQuestと同期させようとしてアバターをPB化すると、まとめられないPBなどが発生してきます。

下の図ですと本来PC版では髪のPBは前髪、後髪と分かれていました。
しかし、Questで髪を揺らすために髪のPBをQuestだけまとめてしまうと同期ズレが起きてしまう為、PC版の方の髪をまとめました。

上記のような事をする為、現状この2つを意地でも両立させるには
PC版のアバターの時点でまとめられるPBはまとめる
など工夫が必要になってきそうです。

終わりに

PBが実装されてすぐの情報なのでこれからもっと分かりやすく、効率よい情報がたくさん出てくると思います。
この情報も自分の情報がバラバラになっているのを整理する為に作成したものですが、誰かの役にたったらいいな!

いいなと思ったら応援しよう!