CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【VRChat】アバターへの小物類の追加方法等を基本から解説
こちらの記事では、VRChatのアバターへの小物類追加方法の基本を解説しています。
原理も一部解説しているのでしっかりと理解していきましょう。
小物類の定義
アバターにおける小物類とは、服以外のモデル全般となっています。
例えば眼鏡、リングなどの手に付ける物などです。
小物はいわゆるアクセサリーと同じ意味合いとなります。
アバターに追加
アバターに小物類を追加するにはもちろんUnity側でアバターに対して設定を行う必要があります。
大まかな流れとしては、アップロード用のアバターに小物のモデルを追加、必要に応じて設定を調整、アバターをアップロードする、といった流れになります。
単純にアバターに追加
単純にアバターに追加する場合は、その方法は非常に簡単です。
試しに例として、Unity内で作成できる四角いボックスを小物としてアバターに追加してみます。
利用させていただくアバターはかなリぁさんちのハオラン君です。
まずHierarchy(ヒエラルキー)に四角いボックスを作成します、名前はシンプルにboxとします。
作成したらアップロードする予定のアバター自体の中にboxを移動させ、大きさを丁度良い感じに調節してください。
移動させると、そのboxもアバターの一部と認識されるようになりアップロード時にそのboxも含めたアバターがアップロードされるようになります。
この状態のVRChat内でのアバターの挙動はこんな感じです。
動きの仕組みとしてはHierarchyからアバター直下に設置した結果、単にアバター自体の位置に追従するようになったという形です。
次の項目では、アバターの部分的な動きに追従させる方法を解説します。
体の部位にくっつける
前の項目ではアバター自体に追従させる方法を解説しました。
しかし、このままではアバター自体に追従するだけで腕の動きや足の動きには追従しない状態です。
それらに追従させるには、アバターのアーマチュアの中にあるボーンに追従させるように設定する必要があります。
今回は右手首に追従させるのを目標とします。
右手首に追従させるには、右手首のボーンに親子付けをする必要があります。
右手首のボーンはかなり深部にあるので頑張って探しましょう。
ハオラン君の場合は画像の青くなっている物が右手首のボーンとなります。
作業するアバターにもよりますが、分かりやすい名前で言うと、
Armature → Hips →Spine → Chest → Shoulder_R → Upper_arm_R → Lower_arm_R → Hand_R
といった、英語で直接的な名前で付けられてることが多いです。
日本語だとアーマチュア → 腰 → 脊柱 → 胸 → 右肩 → 右上腕 → 右前腕 → 右手首
になっており、人間の体の部位の名前となります。
この位置にオブジェクトを持って来たら設定は完了です。
ゲーム内で挙動を再度確認してみましょう。
右手首に追従してくれるようになりました、これで設定は完了となります。
持てるようにする
小物を持てるようにするには色々な方法がありますが、ここではPhysboneを使った設定を解説します。
ここで解説する方法の仕組みとしては、Physboneに小物を親子付けし、そのPhysboneを引っ張るとそれに追従して小物を動くといった形です。
Physboneを追加する
Physboneを使った持たせ方なので、アバターにPhysboneの追加が必要となります。
まずはHierarchyからアバターにPhysbone用のEmptyを追加しましょう。
アバター自体を右クリックし、Create Emptyを選択し、Emptyを作成する形です。
作成が完了したら、分かりやすいようにEmptyに名前を付けておきます。
ここでは「komono_phys_1」としておきます。
名前を付けたらもう一度emptyを作成する必要があります。
今度は作成したkomono_physを右クリックして同じ様にCreate Emptyを選択し、Emptyを作成します。
名前は「komono_phys_2」とします。
2つ作成する理由としては、1つのみだとVRChat内でPhysboneを掴んでもその場で回転しかしない為です。
正しい手順で作成すると、作成した2つのEmptyは同じ場所にあるはずです。
同じ場所にあることを確認したら、2番目に作成したkomono_phys_2を選択し、現在の場所から少し移動させます。
移動させないとゲーム内で掴んだ時に移動させることが出来なくなります。
移動させたら1番目に作成したkokomo_phys_1を選択し、右手首の位置に移動させます。
大体の位置としては動画の通りです、komono_phys_1が右手首の位置の中心にくるような感じです。
また、動画内でkomono_phys_2が思ってるより離れていたので修正しました、そんな極端に離さなくても良いです。
komono_phys_1の移動が完了したら小物オブジェクト(box)を親子付けします。
今現在のemptyの親子状態は、komono_phys_1 > komono_phys_2 となっています。
これが komono_phys_1 > komono_phys_2 > box となるように親子付けを行ってください。
親子付けを行ったらboxをkomono_phys_1の位置と同じ位置に移動させます。
画像のような感じになればOKです。
次に、komono_phys_1にVRC phys boneというコンポーネントを追加します。
右InspectorのAdd Componentから追加するような形です。
追加されたら小物用のPhysbone追加自体の作業は完了です。
内容を小物向けに設定
Physboneの設定を小物向けに行います。
ゲーム内挙動としては掴んだ時に遅延なく素直についてきて、離したらすぐ元の場所に戻るようにしたいです。
Physboneには色々設定項目がありますがこの記事での解説は省略させて頂きます。
画像の様に設定しました、編集した項目は赤い丸で囲っています。
これでphysboneの設定は完了です。
完了したらkomono_phys_1を右手首に親子付けします。
ゲーム内で確認
小物向けのPhysboneの設定が終わったらアバターをアップロードしてVRChat内での挙動を確認してみます。
左手で掴んでみると小物を掴むことが出来ました。
掴んだ後に話すと瞬時に元の場所に戻ってくれます。
小物自体の表示(アクティブと非アクティブ)切替
小物を非表示にする際は左のInspectorからオブジェクト自体の非アクティブ化することによって、VRChat内でも非表示に出来ます。
Inspectorの左上のチェックボックスを入れる、外すような形です。
画像の赤丸部分です。
アニメーションを使った表示切替
アニメーションを使う事によってVRChat内で表示、非表示の切り替えを行うことが出来ます。
実装方法については、違う部類の話になってしまうのでここでの解説は省略します。
簡潔に原理を説明すると、表示にするアニメーションと非表示にするアニメーションの2つを作成し、それをVRChat内で再生するといった形です。
VRChat特有の仕様
VRChatでは、頭のボーンとなっている部分に親子付けをすると、自分の視点から見えなくなります。
画像の様に鏡越しで見ると左手に物を持っていますが、自分の視点から見ると何も見えない状態になっています。
この効果のメリットとしては、視界付近に小物が入ってくるとそれが原因で前が見えなくなるとを防ぐことが出来るという点です。
まとめ
今回はVRChatの小物類の基本について解説しました。
単にアバターに着けるだけでなく持つことが出来る設定もあるので応用例は無限大です。
ここで得た知識を利用して、自分のアバターに色々なアクセサリーを付けてお洒落にしていきましょう。