コンテンツにスキップ

Socket

Socket は、SPS の中で Plug を受け入れる側のコンポーネントです。SPS for NDMF が実際にビルド処理の対象とする2つのコンポーネントのうちの1つです。

Socket(旧称 Orifice)は、挿入される側の部位に取り付けて使うコンポーネントです。Socket 自身が Plug のように変形するわけではなく、Plug が向かって曲がってくるための「受け入れ側の目印」として機能します。

Enable Deformation は、この Socket を SPS の対象にするかどうかのメインスイッチです。オンにすると以下の設定が表示されます。

設定 内容
Mode Socket の種類です(選択肢は下表を参照)。
Radius Offset Plug の向かう先を Socket の太さ分だけオフセットする設定です。手のひらのような「表面に沿わせる」用途向けです。
Guided Path 中継地点(Transform)を最大3つまで追加できます。追加すると、Plug は Socket 本体に到達したあと、その地点を順にたどるように曲がります。

Mode の選択肢:

Mode 内容
Auto 取り付けたボーンから自動的に判定します。Hips(腰)または Head(頭)に取り付けられている場合は Hole、それ以外の場合は Ring になります。
Hole 穴のように奥で収束するタイプです。
Ring 輪のような形状で、両側から挿入できます。
One-Way Ring Ring と似た形状ですが、片側からのみ挿入できます(通常はほとんど使いません)。

Radius Offset と Guided Path は、SPS2(0.2.x)系のコンポーネントで追加された設定です。SPS1(0.1.x)系のコンポーネントには存在しません。

Enable Menu Toggle をオンにすると、この Socket をアバターのメニューから ON / OFF できるようになります。

設定 内容
Name in menu メニュー上に表示する名前です。
Include in Auto selection? 近くの Plug に応じて自動的に選ばれる「Auto」枠の対象に含めるかどうかです。検出用の Contacts は、SPS2 ではアバター全体で共有の1個ですが、SPS1(0.1.x)では Auto 対象の Socket ごとに1個使います。
Menu Icon メニューに表示するアイコンです。

同時に有効化できる Socket の数(版差)

Section titled “同時に有効化できる Socket の数(版差)”
バージョン 同時に有効化できる Socket の数
SPS1(0.1.x) Plug 側が Unity の点光源(頂点ライト)を使って Socket の位置を検出する方式のため、1つのメッシュが同時に認識できる Socket の数に実質的な上限があります。そのため、メニュートグルを持つ Socket が2個以上ある場合は既定で「どれか1つを ON にすると他が自動的に OFF になる」排他制御が働きます。この制約を外す Dual Mode というトグルもありますが、同時に ON にできるのは最大2個までで、有効にすると強い警告文が表示されます。自分にしか見えない Stealth Mode が ON の間は、この排他制御は働きません。
SPS2(0.2.x) Socket の検出方式が変わり、同時に有効化できる Socket の数は実質無制限です。

Depth Animations(深度アニメーション)

Section titled “Depth Animations(深度アニメーション)”

Depth Animations は、Plug がこの Socket にどれくらい近づいているか・挿入されているかに応じて、任意のアニメーションを連続的に駆動できる機能です。Enable Depth Animations をオンにすると、リストに1つ以上の設定を追加できます(複数登録可)。それぞれで次の項目を設定します。

設定 内容
Actions(Action Set) 深度に応じて駆動したい内容です。アニメーションクリップを1本指定することも、ブレンドシェイプ・オブジェクトの表示切り替え・マテリアル切り替えなどのアクションを組み合わせて指定することもできます。
Activation distance アニメーションを「開始する距離」と「最大になる距離」を、-1〜3 の範囲のスライダーで指定します(値の意味は下表を参照)。スライダーで指定した「近い側(挿入が進んだ側)」の距離でアニメーションが最大になり、「遠い側」の距離で完全にオフになります。単一のアニメーションクリップを指定した場合は、クリップの再生位置そのものが深度に連動します。
Range Units 距離の単位です。Meters(実距離、メートル単位)、Plugs(相手 Plug の長さを1とした相対距離)、Local(アバターの拡大縮小スケールを1とした相対距離、アバターのサイズを変えても見た目の閾値が変わりません)から選べます。
Allow avatar to trigger its own animation? 自分自身のアバターが持つ Plug との距離でもこのアニメーションを動かすかどうかです。オフの場合、他のアバターの Plug との距離だけが対象になります。
Smoothing Seconds 目標の深度へアニメーションが滑らかに追従するまでの、おおよその秒数です。値が大きいほどゆっくり追従します(フレームレートに依存するため、高FPS環境ほど速く滑らかに追従します)。
Reverse clip (unusual) クリップの再生方向を反転します(通常は使いません)。

Activation distance の値の意味:

意味
負の値(例: -1) Socket の入口より奥、つまり挿入が進んだ状態
0 Plug の先端がちょうど Socket の入口にある状態
正の値(例: 3) Plug の先端が Socket の入口から離れている状態

距離を常時測定し、その値をなめらかにアニメーションへ反映し続ける仕組みです。典型的な使い道としては、挿入の深さに応じてブレンドシェイプの値を連続的に変化させたり、専用のアニメーションクリップを深度に連動して再生させたりする用途があります。

Enable Active Animation をオンにすると、この Socket がメニューで ON になっている間だけ再生されるアニメーション(Action Set)を1つ設定できます。

Depth Animations との違いは、距離が一切関係しないことです。Depth Animations は Plug との距離を常時測定して連続的にアニメーションへ反映しますが、Active Animation は「メニューでこの Socket が有効かどうか」という単純な ON / OFF だけで再生・停止が切り替わります。ソケットが有効な間は常に一定の内容を再生したいだけの場合は、こちらを使います。

Enable hand touch zone? は、手で触れたときに反応する範囲を追加するかどうかの設定です(Auto / On / Off から選択。Auto は Socket が腰まわりに配置されている場合のみ自動的に追加されます)。これは Plug の挿入判定とは別の、手による接触専用の仕組みです。

ID sent to OGB は、対応する触覚(ハプティクス)デバイス連携アプリへ送信する識別名です。

折りたたまれた詳細設定には、以下のような項目があります。

設定 内容
Plug Length / Plug Width をアバターパラメータとして公開する設定 挿入されている Plug の長さ・太さの情報を、アバターパラメータとして他のギミックから参照できるようにします。
Use hip avoidance 腰まわりの Socket と干渉しないようにする設定です。
Position / Rotation の手動指定 Socket の位置・向きを手動で調整するための項目です。