VRChatワールドを作る#3(公式ギミック編)

ミラー、イス、アバターペデスタルといったVRChat SDKに含まれているギミックは有用な物ばかりです。
今回はこれらをワールドに置いてみましょう。
内容
今回の記事は3つの独立した内容で構成されています
お好きな所から、どうぞ!
- ミラーを置いてみる
- イスを置いてみる
- アバターペデスタルを置いてみる
ミラーを置いてみる
好みのアバターを使用できるVRChatでは自分の姿を確認するミラーの需要が高いようです。
とても簡単に設置できますので、早速置いてみましょう。
ミラーのプレハブはVRChat SDKをインポートした際に、Assetsに置かれます。
ProjectウインドウでAssets > VRChat Examples > Prefabs2を開き、中に入っているVRCMirrorをHierarchyウインドウへドラッグします。

これだけでミラー設置完了です!

位置、角度、サイズを調整してお好みの場所に設置しましょう。
皆が集まる場所に設置するのがおすすめです。
ミラーには裏表がありますので向きには注意してください。
ミラーの処理負荷について
ミラーは簡単に設置出来るのですが、使用にあたり処理(描画)負荷が高い点には注意が必要です。
今居るワールドと鏡の中のワールドの2つを描画しないといけないわけですから、それはそうですね。
(鏡の数が増えればそれだけ負荷は上がります)
対処法としては、プレイヤーだけを描画するように設定する、スイッチで非表示に出来るようにする、などがあります。
このあたりは今後の記事で取り上げようと思います。
イスを置いてみる
家も建ててミラーも置いたけど、ずっと直立して過ごすのは味気ないな…
と思った方はぜひイスを設置してみましょう。
イスも簡単に設置できます。
ミラーと同じようにVRChat SDKに含まれており、Assets > VRChat Examples > Prefabs2 内にイスのプレハブ(VRCChair)がありますのでHierarchyウインドウへドラッグして設置しましょう。

これまで色々なオブジェクトを設置しましたが、Hierarchyに追加した際に変な座標に置かれてしまうことがあります。
このような時は、Transformコンポーネント右上の歯車マークを押してResetを選択してみて下さい。

Position, Rotationが全て0になり、Scaleが1になります。
これで、ワールドの原点(X, Y, Z座標が全て0)にイスが移動してくれますので改めて調整がしやすくなります。

もちろん複数置く事ができますので、仲の良いフレンドと机を挟んで座る、という事もできます。
わたしにもそのようなフレンドが居ればなぁ…
3Dモデルをイス化する
先程ワールドに置いたイスはCubeを組み合わせた見た目をしていて、なかなか座り心地が硬そうですね。
しかし大丈夫です、別途用意した3Dモデルにイスの機能を持たせる事もできます。手順も難しくありません。
イスのモデルはご自身で用意頂くか、以下よりダウンロードしておいて下さい。
(以降、こちらの3Dモデルを用いて説明します)
用意した3DモデルはAssets内へドラッグし、読み込んでおいて下さい。
では、ワールドへイスのモデルを置いてみます。
前回、家のモデルを設置した時と同じようにHierarchyウインドウへドラッグすれば良いです。

そしてここからがポイント!
イスのモデルにVRCChairを重ねていきます。
これで、イスの3Dモデルにイスの機能を持たせることができるようになります。
Hierarchyウインドウに追加されたイスの3Dモデルに、イスのプレハブをドラッグして持っていきます。

Hierarchyはこのようになります。イスのモデル(Chair)の中にイスのプレハブ(VRCChair)が納まっている状態です。

Unityでは、このようにオブジェクトの中にオブジェクトを入れる事ができます。これを【親子関係】になるといい、イスの3Dモデルの方が【親】、中に入っているプレハブの方が【子】と呼ばれます。
試しに、Hierarchyウインドウでイスのモデル(Chair)を選択して移動させると、イスのプレハブ(VRCChair)も一緒に付いてくるのがわかります。
ここで、うまくモデルと重なるようにVRCChairのほうを動かしておいてください。
私の用意したイスのモデルだと、Z座標が0.3、Y回転が-90あたりが最適でした。


もしVRCChairが変な位置に表示される場合は、HierarchyウインドウでVRCChairを選択してTransformコンポーネントをResetしておくとやりやすいです。

さてさて、イスの設定に戻りますが、見てみると硬そうなイスのモデルが残っていますね。
これはHierarchyウインドウで選択して消してしまいましょう。
先ほど調整していたVRCChairの横に▶マークが表示されていますので、これを選択すると更に中に含まれているオブジェクトが出てきます。

このうちChairBaseとChairBackが白いイスのモデルです。
では早速これを選択してdeleteキーで削除!としたかったのですが、プレハブの中の物を消すのは少々手間がかかります。
今回はお手軽に無効(非アクティブ)にだけしておきます。
オブジェクトの無効化(非アクティブ化)はInspector上部のチェックボックスで設定できます。

このチェックを外すとオブジェクトは非アクティブ状態となり、表示やコライダーの衝突などが行われなくなります。プレイヤーからすれば、ほぼ存在しないに等しい状態です。
ChairBaseとChairBackを非アクティブ状態にして、白いイスが見えないようにしておきましょう。

イスはアバターの身長によってかなり座る高さが変わってしまいます。
普段よく使うアバターで実際に確認して、合わない場合はVRCChairの高さ(PositionのY座標)を調整してみてください。
イスの前にミラーを置くと確認しやすいですよ。


アバターペデスタルを置いてみる
アバターペデスタルというのは特定のアバターにその場で着替えられる仕掛けです。
バーチャルマーケット等でアバターを試着するためにも使用されています。

あまり使用頻度は高くないかもしれませんが、皆で同じアバターになるのも楽しいですよ。
アバターペデスタルを置くためには、まず【パブリック設定のアバター】を用意する必要があります。
これは自分の用意したアバターでも構いませんし、権利・利用規約的に問題無いのであれば他のユーザーが登録したパブリックアバターでも設定可能です。
アバターの設定、アップロードについては説明すると軽く2~3記事分にはなってしまいますので今回は割愛します。また改めてじっくりと解説したいと思います。
今は私がアップロードしているアバターを設定してみましょう。

【試着用】パンダカー
アバターペデスタルの設置方法はミラーやイスと同様です。
Assets > VRChat Examples > Prefabs2 内にアバターペデスタルのプレハブ(VRCAvatarPedestal)がありますのでHierarchyウインドウへドラッグして設置しましょう。

シーンに置けたら、好きな位置にレイアウトします。

さて、ペデスタルは設置できたのですが、この段階ではまだどのアバターに着替えるのかを設定できていません。
このアバターを紐づける設定はInspectorウインドウで行います。
まず、Hierarchyウインドウで先ほど設置したアバターペデスタルを選択します。
Inspectorウインドウに並んでいるVRC_Avatar_Pedestal(Script)コンポーネントに含まれるBlueptint Idの項目を見つけてください。

このBlueprint Id欄でアバターを指定することで、そのアバターに着替えることができるようになります。
自分でアップロードしたアバターのブループリントIDの確認方法も説明しておきます。
VRChat SDKのコントロールパネルでContent Managerボタンを選択すると今までアップロードしたワールドやアバターの一覧が表示されます。
ここでアバターの横にあるCopy IDボタンを押すとブループリントIDが取得(コピーされた状態)できますので、あとは先ほどのBlueprint Id欄でペーストしてあげれば良いです。

Ctrl+Vまたは右クリックメニュー→Pasteで貼り付けてください。

ちなみに、パンダカーのIDはこちらです。
これを設定すれば、パンダカーに着替えるペデスタルが出来上がります。
avtr_6ad49bd6-5412-42ed-acb3-c95ebf40de04

Build & Testで動作確認。
正しく設定できていればこのようにアバターのイメージが表示されます。

このペデスタルをインタラクト(マウスクリックやVRコントローラのトリガー押し込み)すると着替えることができます。
ペデスタル台座の差し替え
設置したペデスタルですが、正しく機能はしていますが下の台座部分の色がおかしいですね。
これはおそらくVRChat SDKに付属しているプレハブのデータ自体がおかしいのだと思いますが、ついでに直してしまいましょう。
直す方法は色々あるのですが、今回は台座のモデルを入れ替えてしまいます。
まず、HierarchyウインドウでVRCAvatarPedestalの横の▶を選択します。

VRCAvatarPedestalの中身が表示されるので、PedestalModelを選択しましょう。
PedestalModelは不要なので、Inspectorウインドウのチェックを外して無効化します。

台座が消えたら、新しいモデルを追加します。
HierarchyウインドウでVRCAvatarPedestalを右クリックして3D Object > Cylinderを選択。

CylinderのTransformは以下のように設定してください。

もう一度動作確認してみると…おおっ、問題無く表示されました。

まとめ
VRChat SDKに含まれているミラー、イス、アバターペデスタルを置いてみました。
いや、もっとあっさりと終わると思っていたのですが、いざやってみるとなかなかのボリュームになってしまいました。
次回ですが、今まで説明してこなかったUnityの画面構成や操作方法について、整理してお伝えしたいと思っています。
本来は最初にやるべきだったかもしれませんが、ある程度Unityに触れた今だからこそ理解できる部分もあると思います。
ではまた、お楽しみに!