第12回 コンポーネント紹介 【ローカルで動かす】

第12回 コンポーネント紹介 【ローカルで動かす】 Neosアーカイブ記事

【注意】
この記事は、Resoniteの前身ともいえるVRSNSであるNeosVRに関する内容を転載しております。多くの共通点があるため参考資料として掲載しておりますが、内容が古いためそのままでは動かない場合、もしくは不具合が起きる場合もございます。
予めご了承ください。

NeosVRのFrooxEngineはとても優秀で、ほとんどの動作が勝手に同期されます。
今回は同期させずに、ローカルで動作するコンポーネントを5つご紹介いたします。
中でも、ColliderUserTrackerコンポーネントはとても便利ですので、ぜひ使ってみて下さい。

前回はコチラ

ValueUserOverride(バリュー ユーザー オーバーライド)

リストされている各ユーザー毎に値を駆動できるコンポーネント。

・場所
Transform/Drivers/

項目解説初期値
Target:オーバーライド先。null
Default:初期値。0(型によって違う)
CreateOverrideOnWrite:オーバーライド先の値を変化させたユーザーを、リストに自動追加する。無効
PersistentOverrides:サーバー保存時に、リストの内容も一緒に保存する。有効
_overrides(bag):オーバーライド対象のユーザーリスト。

・使い方
適当なスロットにアタッチ。
Targetを指定。
CreateOverrideOnWriteを有効化。
Target先の値を変化させる。すると、自動的にリストにユーザーが追加されます。

・補足
上記の使い方はあくまでも一例です。他の使い方もあります。
各ユーザー毎にON/OFFできるミラー等は、このコンポーネントが使用されています。
NeosVRでは、水色のUI=ローカル動作で、黄色のUI=グローバル動作のイメージです。
スロットやコンポーネントが非アクティブだと、PersistentOverridesだけ動かなくなるっぽい。
オーバーライドするユーザーを維持(保存)する必要がなければ、PersistentOverridesは無効にすると良いです。
ユーザーリストの各Value欄で、そのユーザーにオーバーライドされる値が分かります。

・Neos Wiki リンク
https://wiki.neosvr.com/ValueUserOverride%601_(Component)

ReferenceUserOverride(リファレンス ユーザー オーバーライド)

リストされている各ユーザー毎に参照を駆動できるコンポーネント。

・場所
Transform/Drivers/

項目解説初期値
Target:オーバーライド先。null
Default:初期値。null
CreateOverrideOnWrite:オーバーライド先の参照を変化させたユーザーを、リストに自動追加する。無効
PersistentOverrides:サーバー保存時に、リストの内容も一緒に保存する。有効
_overrides(bag):オーバーライド対象のユーザーリスト。

・使い方
適当なスロットにアタッチ。
Targetを指定。
CreateOverrideOnWriteを有効化。
Target先の参照を変化させる。すると、自動的にリストにユーザーが追加されます。

・補足
上記の使い方はあくまでも一例です。他の使い方もあります。
ValueUserOverrideのリファレンス版。

・Neos Wiki リンク
https://wiki.neosvr.com/ReferenceUserOverride_(Component)

UserDistanceValueDriver(ユーザー ディスタンス バリュー ドライバー)

各ユーザー毎の距離に応じて、値を駆動できるコンポーネント。

・場所
Transform/Drivers/

項目解説初期値
Node:距離の計測先(ユーザーの部位)。None
Distance:距離。0m
TargetField:ドライブ先。null
NearValue:指定した距離未満になった時に、ドライブする値。0(型によって違う)
FarValue:指定した距離以上になった時に、ドライブする値。0(型によって違う)

・使い方
距離の計測元スロットにアタッチ。
NodeとNearValue・FarValueを設定。
TargetFieldを指定。

・補足
近付くとローカルで動作するギミックを作る時に、すっごく便利です。また、ワールドの描画負荷軽減にも活用できます。
スロットやコンポーネントが非アクティブだと動かなくなります。
NodeはRoot・GroundProjectedHead・Head・Hips・Feet・Viewの6種類から選択できます。Headはユーザーの頭の位置、Viewは三人称視点の位置です。

・Neos Wiki リンク
https://wiki.neosvr.com/UserDistanceValueDriver_(Component)

ColliderUserTracker(コライダー ユーザー トラッカー)

コライダーを使って、出入りするユーザーを追跡できるコンポーネント。

・場所
Physics/Utility/

項目解説初期値
IsLocalUserInside:コライダーの中に自分が居る。居ません
IsAnyUserInside:コライダーの中に誰か居る。居ません
NumberOfUsersInside:コライダーの中に居る人数。0人
_usersInside(bag):コライダーの中に居るユーザーのリスト。自動

・使い方
スフィアやボックス等のコライダーを用意して、TypeをTriggerタイプにします。
コライダーと同じスロットに、このコンポーネントをアタッチ。

・補足
中に入ると動作するギミックを作る時に、すっごく便利です。また、ワールドの描画負荷軽減にも活用できます。
UserDistanceValueDriverとは異なり、コライダーでエリア指定ができるのが良い所です。また、グローバル動作もできるので、自動ドアのセンサーやエレベーターの乗員数カウント等を簡単に作る事ができます。
ただし、メッシュコライダーは中身がスカスカなので使えないです。他の種類のコライダーを使用しましょう。
また、移動方法がノークリップのユーザーには反応しないです。
このコンポーネントで作られた、素晴らしいギミックが用意されているワールドが沢山あります。ワールド巡りをする際は、移動方法を歩行モードまたはフライモードにすることをお勧めいたします。

・Neos Wiki リンク
https://wiki.neosvr.com/ColliderUserTracker_(Component)

LocalAudioDeviceStream(ローカル オーディオ デバイス ストリーム)

自分の声をローカルで取れるコンポーネント。

・場所
Uncategorized/

項目解説初期値
AudioDeviceIndex:オーディオ機器(マイク)のインデックス。0
UseFilteredData:ノイズゲートした音を使う。有効

・使い方
適当なスロットにアタッチ。
AudioDeviceIndexを-1にする。

・補足
自分の声がローカルで取れるだけ。(コンポーネントの名前の部分を掴む。)
AudioDeviceIndexを-1にしておけば、とりあえず有効なマイクが選択される。
AudioOutputのSourceに入れると、ローカルで自分の声が聞けます。
VolumeMeterのSourceに入れると、ローカルで自分の声の音量が表示されます。
この音量はローカルですが、LogiXでWrite処理を行うことで、疑似的にグローバル化できます。
ちなみに、普通に声(Voice)を取る場合は、インスペクターを操作して直接指定するか、AvatarVoiceSourceAssignerコンポーネントを使います。
電話機や無線機等を作る場合は、使用するユーザーをAvatarVoiceSourceAssigner等を設定済みの仮アバターに一瞬着替えさせて、スグに元のアバターへ戻してあげれば声を取る事ができます。
トラブルを避けるため、音声関係のギミックや処理は、相手の同意を得てから行った方が良いかも。

・関連
AudioInputDeviceSelection
AvatarVoiceSourceAssigner
AudioOutput
VolumeMeter
VisemeAnalyzer

おわり

以上で第12回は終了です。拙文ではございますが、最後までご覧頂きありがとうございました。
Neosでは同期処理をテストするよりも、ローカル動作になっているかをテストする方が多いかもしれませんね。
次回は名刺やポスター等に使えるリンク機能を紹介予定です。
お楽しみに!

第13回 コンポーネント紹介 【ハイパーリンクとか】

タイトルとURLをコピーしました