Skip to content

ExternalReceiver.cs

gpsnmeajp edited this page Nov 10, 2019 · 8 revisions

ExternalReceiver.cs

基本

デイジーチェーン機構の仕組み上、EVMC4U基本コンポーネントは1GameObjectに1つである必要があります。
1つのGameObjectに複数のEVMC4U基本コンポーネントがセットされている場合、動作は不確定になります。

uOSC Server

VMCからデータを受信するには、uOSC Serverが同じGameObjectにアタッチされている必要があります。
ExternalReceiverでのデフォルトのポートは39539です。

uOSC Serverが存在しない場合、ExternalReceiverはMasterモードになります。
uOSC Serverが存在しない場合、ExternalReceiverはDaisyCahinモードになります。
この場合、MasterとなるExternalReceiverが別に必要となります。

ExternalReceiver

Model

操作対象のModelを入れます。
VRM規格、HumanoidかつAnimatorが付いているGameObjectである必要があります。
姿勢同期は下記の通り切り離せるため、あくまでモデルを指定してください。

Freeze

位置同期系の処理を一切止めます。Status表示も更新されなくなります。
ポーズを固定し、撮影するときなどに便利です。

Root Synchronize Option

Root姿勢の同期に関するオプションです。

Root Position Transform

Root位置を操作する対象を指定します。
nullの場合、Modelが自動で指定されます。
主にVR時に使用します。

Root Rotation Transform

Root回転を操作する対象を指定します。
nullの場合、Modelが自動で指定されます。
主にVR時に使用します。

Root Position Synchronize

Rootの位置情報を同期するか(既定でtrue:する)

複数体同時に動かしたり、ルームスケール位置を反映せず強制的に制御したい場合はfalseにすると便利です。
ただし、ルームスケールでの移動ができなくなり、オブジェクトの原点に固定されます。

Root Rotation Synchronize

Rootの回転情報を同期するか(既定でtrue:する)

ルームスケールでの回転ができなくなります。
カメラに常に向かせたいときなどはオフにしても構いません

Root Scale Offset Synchronize

Rootのスケール・オフセット情報を同期するか(既定でfalse:しない)
主にMR撮影用の機能です。現実の体の大きさ・位置と厳密に同じになります。
VMCをMR撮影モードにする必要があります。

Other Synchronize Option

Blend Shape Synchronize

VRMのBlendSharp(表情・リップシンクなど)を同期するか(既定でtrue:する)

オンのとき、VRMのBlendSharp(表情・リップシンクなど)を同期します。
VRMじゃないモデルを動かしたいときや、表情などを同期したくないときにオフにします。

Bone Position Synchronize

ボーンの位置情報を同期するか(既定でtrue:する)

UnityとVMCで全く同じVRMを読み込んでいるときはオンにすると首の位置などの精度が上がります。
一方で、UnityとVMCでちょっとでもボーン位置が違うモデルを読み込むと酷い壊れ方をします。(指が伸びる、首が伸びるなど)

腰が不自然に浮く問題が発生するため、v2.6より既定でオンになりました。
それが気にならない場合はオフにすると違うモデルに同じ動きが適用できるようになります。

Synchronize Cutoff Option

通常同期するべき情報を部分的にカットする設定です

Hand Pose Synchronize Cutoff

手の指のボーン情報をカットします。
これにより、指認識グローブなど別のシステムからの入力と干渉しないようになります。

Eye Bone Synchronize Cutoff

目のボーン情報をカットします。
これにより、視線認識システムなど別のシステムからの入力と干渉しないようになります。

Lowpass Filter Option

ローパスフィルターを掛けます。
手ブレ防止、劣悪通信環境下での補助などに利用できます。

Bone Position Filter Enable

ボーンの位置に簡易ローパスフィルタを掛けるか(既定でfalse:しない)

手ブレやガクつきをなくしたい場合にオンにしてください。

Bone Rotation Filter Enable

ボーンの回転に簡易ローパスフィルタを掛けるか(既定でfalse:しない)

手ブレやガクつきをなくしたい場合にオンにしてください。

Bone Filter

簡易ローパスフィルタ係数(0~1:既定で0.7)

1に近いほど過去の影響が強くなる
1.0あるいは以上にすると正常に動かなくなります。

Status

Status Message

現在の状態が表示されます

Daisy Chain

Next Receiver

デイジーチェーンとしてデータを流す先を設定します。
通常は以下を指定します。

  • InputReceiver
  • DeviceReceiver
  • CameraReceiver
  • CommunicationValidator

対象のGameObjectにはIExternalReceiverが実装されたコンポーネントが必要です。

外部公開されている要素

上記に加え

public void UpdateDaisyChain()

更新されたデイジーチェーンを内部に再読込する

public void ApplicationQuit()

シーンを終了する