見出し画像

ケツについてくる椅子を普及させたい話

はじめに

 見ての通りアバターに仕込んだ椅子がケツについて動いている様をご覧いただけたと思います。
 一年ほど前にフルトラでログインして酒を飲む際、空気椅子状態になるのがなんかイヤで椅子を持ち込むことにし、それ以来愛用しているシステムです。
 ただ、当時は椅子を伸ばすためにConstraintを使っていたので、Questユーザーに見せることができず、Note書くほどでもないかな・・・と思って書いていませんでした。(VRC内では何度か解説した)
 PhysBoneをうまいこと使えばなんとか出来たのかもしれないが、たしか丁度ポケモンあたりを狂ったようにプレイしていた関係でアバターの更新が面倒くさく、Constraintのまま放置していたものがこちらになります。。

 しかし先日(2023/05/12現在)PhysBone1.1が公開され、
縮むPhysBoneが使えるようになりました。
これはもうやったるしかねぇということで記事を書くことにし、せっかくなのでBoothを用いての配布も行うこととします。
ただ、肝心の椅子のモデルがわたしが15分で作ったカクカクのそれなので、この記事を読んで各自お好みの椅子をケツに貼り付けて座っていただきたいと願う次第です。

仕組み

長々と御託を並べてはみたものの、仕組みそのものは単純です。

構造

 Seatに設定したPhysBoneが重力によって常に真下を向き、先端であるGroundChairColliderにぶつかって押しつぶされることで接地するようになっています。
 このSeatGroundはウェイトの乗ったボーンになっています。次の画像を御覧ください。

Blender上でのウェイトペイント

 伸び縮みする上のシリンダー以外は2種類のウェイトをベタ塗りしているだけです。
なんならウェイトペイントすら使わずにSeatとGroundのVertexGroupに該当頂点をAssignしただけで出来ております。簡単!
 ChairColliderはアバターのRoot、Armatureやメッシュと同じ階層に置いてあるので、VRC上で言えば当たり判定カプセルの底に常に居る感じです。

セットアップ

 いつも通り作業動画を用意しますが、今回は本当に単純なのでいらないかもしれません。
 椅子を作る部分は割愛し、特にボーンとかがない椅子が存在するとして始めていきます。

 あとは普通に書き出して下さい。書き出し設定自体はどっか別のサイトを見るか、なんか過去の記事のどっかで書いてたような書いてなかったりするような気がするので適当に。

 完成したFBXをUnityに持ち込みます。ここではマテリアルも何もいじってないですが、あくまでも椅子の見た目は完成している前提なので、普通に突っ込んで下さい。

ここから

 アバター直下に先程のFBXを突っ込んだ状態がこちらです。

 今回例としてお借りしたのはショコラッタちゃんのQuestVerです。
かわいい
ヒエラルキーをいじっていきます。

 まず最近話題の初手UnpackPrefabします。ここで椅子のボーン構造を作り間違えてた事に気づきますが動画を取り直すのがめんどくさいのでヒエラルキー上でしれっと直しています。
 Armatureはいらないので消します。SeatHipsに入れたらアバター直下にChairColliderを作り、Planeコライダーを設定。
 Groundを4メートルほど伸ばします。ここの数値がSpaceDragで伸ばす際の限界の長さになります。
じゃあなんぼでも伸ばしてええやんけとなる向きもありますが、次にBoundsの拡張を行います(これをやらないとめっちゃ伸びた時にアバターを見ると椅子が消えたりする)
で、このBoundsのサイズはPerformanceRankに規定があるので、まあアバター全体で5mぐらいまでに収めておいたほうがスマートだと思います。 
 そしてSeatにばばばっとPhysBoneを設定しています。

設定値

 さすがに動画では見づらいと思うので画像を用意しましたが、これもさして複雑なことはしていません。
Pull(本来の形に戻る力)を1、Spring(戻ったときにビヨる度合い)は0、Gravity(重力)は1、Immobile(移動したときになびいたりするのを抑える奴)を1にすれば「常に真下に引っ張られていてブレない」設定は完了です。
 Colliderを1つ(ChairCollider)設定したら、今回の新機能であるMaxSquishを最大に。詳しくテストしていないのですが、1だとどこまでも縮められて0.5だと半分まで縮められるとかなんかそんなんだろうということで1
 途中でAllow系は全部Falseにしています。今回のケースでは触ったり掴んだり固定したりがあるとちょっと具合が悪いですからね。
Is Animatedはいらんような気もしますがなんとなくONに。
再生したら冒頭の動画と同じ挙動をしているのが確認できますね。

あとがき

 そんなわけで駆け足でケツについてくる椅子の解説でした。どうでしょう?出来そう?
冒頭でも述べた通り、フルトラ時に自前の椅子があると気分がアガるので是非試してみてください。
また、この記事内では椅子の出し入れに関する部分は削っていますが、まあ椅子のMeshをEnabled/Disabledするだけの話なので持ち物をオンオフするみたいな記事を探してええようにしてやって下さい。
 Boothに上げる方のUnitypackageはModularAvatarでもって投げ込むだけでセットアップ完了するようにしてあります。
椅子を作って荒稼ぎしてやるぜという向きの方がもしいらっしゃったらそちらも参考にしていただければと思います。

それではお疲れ様でした!

ダウンロード