View on GitHub

NeosVRJP-Techbook

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

拘束具

概要

pic

このトーラスに腕を通すと、そのユーザーは右腕を動かすことができなくなってしまいます。どのようにしてこの機能を実現しているのでしょうか?

解説

全体

pic

これが全体のLogiXの様子です。左はトーラスから来ています。そして最後はSet Slot Active Selfが働いています。上のSet Slot Active SelfではTrueが入り、下ではFalseが入っています。Falseが入ると、腕が動かなくなるという仕組みです。

Slotの中身

最初に右下のSlot変数に何が入るか見てみましょう。左のGet Active Userによりトーラスを握っているUserを得ます。そしてBody Node SlotFind Child By Nameを通じてRight Hand ProxyのSlotを得ます。これが右下のSlot変数に入る内容です。

トーラスをつかんでいるとき

最初はトーラスをつかんでいて、これを拘束したい別のユーザーに近づけます。このときには動かなくなったら困りますので、動けるようにする必要があります。これを上の部分で行っています。Is Grabbable Grabbedにより、このトーラスが握られているかどうかを判定します。これがTrueの時にはFire On TrueでImpulseをSet Slot Active Selfにだします。ここではTrueが入力されており、動けます。

トーラスから手を離すと

そしてトーラスから手を離すと下のSet Slot Active SelfでRight Hand ProxyのSlotがFalseにされます。つまり動けなくなります。

おわりに

この拘束具はSet Slot Active Selfを使って、Activeかそうでないかを設定することによりアバターの動きを決めていました。実際に動けなくなると、かなりおかしなことが起きます。自分一人の時には助けが誰もいませんから、緊急リスポーンが必要になるかもしれませんね。

関連するノード

Set Slot Active Self, Is Grabbable Grabbed, Get Active User, Body Node Slot, Fire On True, Write

追記

作者のAetorizさんはこの拘束具を拡張して、両手、両足、首、腰まで動けなくする機能を追加しています。参考までにそのLogiXを下記に示しておきましょう。たしかにRight Hand Proxyの他にいくつものProxyが設定されていることが分かります。しかし、とても根気のいるプログラミングだったでしょう。

pic

pic