View on GitHub

NeosVRJP-Techbook

NeosVRJP-Techbook (NeosVRの応用編・技術ノート)

Ez Cameraのアバターへのインストールとアンインストール

概要

レニウム(@rhenium_vrc)さんが作ったEZ Cameraはインストーラーがあります。そこではCamera(NeosVR Essentialにある)をアバターの左手につけておくためのインストールと、左手につけていたCameraを外すアンインストールをするLogiXがあります。その解説をします。

pic

解説

全体

全体を見渡すと、 左にButton Eventsが2つあり、これがそれぞれ上の図の「Install」と「Uninstall」のボタンに接続されています。また右ではインストールするときのSet ParentとアンインストールするときのDestory Slotがあります。

pic

インストール作業

インストールをすると、左手に次の図のような球と「Submit」が現れます。

pic

これは次のスロットの階層のEZ CCamera by rheniumが左手の子スロットになった状態です。”pref”はプレハブ(prefab)という意味で、インストール作業をしているときだけ親スロットにいます。そして間違った操作が行われないようにしています。つまり親スロットの名前に”pref”があると、インストール作業中であることが分かります。(スロットをアクティブにしてセッションに現れさせる参照)

pic

さらに「Submit」ボタンを押すとuiというスロットが消されて、位置がInit Pointに書き込まれていて、最終的にInit Pointとez camera logixのみが左手の子スロットとして残ります。uiスロットには球、カメラの形、「Submit」ボタンなどが入っています。(Submitボタンを押してインストールを完了する参照)

pic

Ez Cameraには2つのボタンがあり、「Install」ボタンを押すとButton Eventsが一番の上の出力(Pressed)からImpulseを出します。

Impulseは分岐できないので、Sequenceを使ってImpulseを3つに分けています。

1つめのImpluseで現在のユーザーの情報をLocal UserWriteを使って、変数Userに格納しています。

2つめのImpulseを使って、すでにインストールされているときには、現在のインストールされているEz CameraをDestory Slotを使って消します。

3つめのImpulseを使って、インストール作業をします。まずDuplicate Slotを使ってEZ Cameraスロットを複製します。緑色の帯の左端は切れていますが、中身を確認すればEZ Cameraスロットに接続していることを確認することができます。そして、複製されたEZ Cameraスロットをユーザーの左手のスロットが親になるようにSet Parentを使って設定します。これにより”pref”から外れて、結果的に”pref”が消えます。これで左手にEZ Cameraが入りました。途中でユーザーの左手のスロットを取り出すために、Body Node Slotを使っています。

そして次に、Set Local PositionSet Local RotationSet Local Scaleを使ってCameraスロットの位置、回転角度、スケールを初期設定します。ここでSet Local PositionとSet Local Rotationの左の入力値がないのですが、(0,0,0)が入力されます。Cameraスロットの親スロットがInit Pointなので、Init Pointと同じ位置に初期化されます。

最後にNo Impulseと表示されているノードがありますが、これはデバッグ用で、最後までImpulseが届いていることを確認しています。

アンインストール作業

Ez Cameraにあるもう一つのボタンである、「Uninstall」ボタンを押すとButton Eventsが一番の上の出力(Pressed)からImpulseを出します。これをまたSequenceで2つに分けます。

1つ目のImpulseにより、インストール作業と同じように変数Userにローカルユーザーを記録します。

2つめのImpulseにより、Destory Slotを使ってインストールされているEz Cameraスロットを消すのですが、その前にEz Cameraスロットがあるかどうかを確認しています。ここではFind Child By Tagを使って、ローカルユーザーの左手のスロットの下に”Ez Camera”を見つけています。

Destory Slotで消した後もSequenceでまたImpulseをIfに戻しています。これは複数Ez Cameraをインストールしているときに、無くなるまで消すことができる処理です。

おわりに

ここではEz CameraでCameraを左手にインストール、アンインストールするLogiXを説明しました。インストール後には球と「Submit」というボタンが現れます。左手との位置を決めてこのボタンを押すとインストールが完了します。その解説はまた別な記事で行います。(Submitボタンを押してインストールを完了する参照)

関連するノード

Button Events, Write, Sequence, Local User, Body Node Slot, Duplicate Slot, Set Parent, Set Local Position, Set Local Rotation, Set Local Scale, NotNull, Find Child By Tag, Destroy Slot, Relay