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では同期処理をテストするよりも、ローカル動作になっているかをテストする方が多いかもしれませんね。
次回は名刺やポスター等に使えるリンク機能を紹介予定です。
お楽しみに!