見出し画像

【VRChat】EXメニューなしに物を出し入れしたい!(解説と応用)

こちらの記事の解説となっています。まずはこちらの記事から読んでね。

この記事は、前記事で使った3つのコンポーネントについて簡単な説明と活用法を紹介します。

解説

PhysBoneを用いたパラメータの制御

揺れものによく使われる【PhysBone】ですが、実はパラメータの制御もできます。

具体的には、次のような操作でパラメータを制御できます。

  • グラブした時(Bool)

  • 引っ張った時(Float)

  • 曲げた時(Float)

面白いのがFloat値を制御できるところで、例えば引っ張り具合で制御する色んなギミックに活用できます。

例)ほっぺをつねられる

ほっぺのひっぱり具合で表情が無段階に変わります
( オリジナル3Dモデル [ もにもに・コニカ ] VRC_Quest対応)

例)番傘の開閉

Float値を使った制御についてはこちらのサイトがおすすめです。


VRC Avatar Parameter Driverを使った同期ズレ対策

同期がずれると、見えてるものが変わっちゃう…

アバターギミックを扱う上でよく起こる問題として、同期ズレが挙げられます。
具体的には、自分からは銃を手に持っているように見えるのに、他人からはホルスターに仕舞ったままに見える…といった具合です。

なぜこのような同期ズレが起こるかというと、VRChatにおいて他のプレイヤーと同期されるのは『パラメータ』であり、『ステート(状態)』ではないからです(たぶん)
(「パラメータとかステートってなに?」という方には、こちらのサイトがおすすめです。)

この問題を解決するコンポーネントが【VRC Avatar Parameter Driver】です。

【VRC Avatar Parameter Driver】は特定のステートに遷移したときに、パラメータを変更するコンポーネントです。(たぶん)

このコンポーネントにより『ステート(状態)』を『パラメータ』に変換することで、同期ズレを防ぐことが可能となります。

応用

ParentConstraintを使った出し入れ円滑化

※Quest非対応です。

今回の方法は、「取り出す」というよりは「表示と非表示を切り替える」と言った方が正しいです。
なので、出し入れする際に物が瞬間移動してしまいます。

また、手に持った物としまった物、合計2つの物をアバターに組み込むので、ポリゴン数などが無駄に増えてしまいます。

これらの問題を解消するコンポーネントが【ParentConstraint】です。

【ParentConstraint】はオブジェクトを追従させるコンポーネントです。(たぶん)

これを使うことで物の『手に追従する』、『ホルスターに追従する』の切り替えが可能になり、もろもろの問題が解決します。

取り出し比較
Parent Constraintはぬるっと取り出していることがわかりますね

導入方法はこちらのサイトを参考にしてみてください。

持っているものをぐるぐる回す

銃を構えたら、次は回したくなりませんか?なりますよね!
そんなあなたには、こちらの記事がおすすめです!!!!

Parent Constraintと併せて実装するとこんな感じになります。

さいごに

今回は3つのコンポーネントについて書きましたが、どれもすごく便利でいろいろな応用が利くので、覚えておいて絶対に損はないです!

また、これらのコンポーネントはBOOTHなどで販売されているアバターにデフォルトで組み込まれていることも多いです。
コンポーネントの使われ方はアバターによって様々ですので、ぜひ見てみてください。いろんな発見があって面白いですよ!

もし記事の内容に間違いや改善点あれば教えてくれたら嬉しいです。

ここまでお読みいただき本当にありがとうございました。

参考にさせていただいたもの


【Avatars3.0】Avatars3.0の仕組みについて!VRChatから内部の動きの解説めかにゃんこ様)

VRChat備忘録② Parent Constraintのススメ(こむぎ*様)

[VRChat] コントローラーの握り具合に応じて表情を変えるyakumo's memo様)


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