Haply::Inverse::Unity::Inverse3
DeviceBehaviour を継承する。
イベント
名称 | |
---|---|
デバイスデリゲート | デバイス状態変更() 各ハプティックフレームでトリガーされるイベント。 |
公共機能
名称 | |
---|---|
デリゲート・ボイド | デバイスデリゲート(Inverse3device) Inverse 3デバイスのInverse3.DeviceStateChangedイベントを処理するメソッドを表します。 |
ボイド | CursorSetLocalForce(in Vector3 force) デバイスのローカル空間の x, y, z 軸に沿ってカーソルにかかる力をニュートン (N) で設定します。 |
ボイド | CursorSetLocalForce(float x, float y, float z) |
ボイド | カーソルセットフォース(in Vector3 force) カーソルにかかる力をワールド空間のニュートン(N)で設定します。 |
ボイド | CursorSetForce(float x, float y, float z) |
ボイド | CursorSetLocalPosition(in Vector3 position) カーソルの位置設定ポイントを、デバイスのローカル空間の x 軸、y 軸、z 軸に沿ってメートル (m) 単位で設定します。 |
ボイド | カーソル位置設定(float x, float y, float z) |
ボイド | カーソル位置設定(in Vector3 position) カーソルの位置設定点をワールド空間のメートル(m)単位で設定する。 |
ボイド | カーソル位置設定(float x, float y, float z) |
ボイド | トルク設定(in Vector3 torque) Inverse3デバイスの各ジョイントに必要なトルクをニュートンミリメートル (Nmm) 単位で設定します。 |
ボイド | トルク設定(float x, float y, float z) |
ボイド | JointsSetAngles(in Vector3 angles) Inverse3デバイスの各ジョイントに、希望のジョイント角度を度 (°) で設定します。 |
ボイド | 関節角度設定(float x, float y, float z) |
ブール | TryResetForce() カーソルのすべての力と位置制御のリセットを試みる。 |
ベクトル3 | TransformPoint(Vector3 position) キャッシュされたLocalToWorldMatrixを使用して、デバイスまたはカーソルのローカル空間からワールド空間に位置を変換する。 |
ベクトル3 | TransformVector(Vector3 vector) キャッシュされたLocalToWorldMatrix を使用して、デバイスまたはカーソルのローカル空間からワールド空間にベクトルを変換します。 |
ベクトル3 | InverseTransformPoint(Vector3 position) キャッシュされたWorldToLocalMatrix を使用して、ワールド空間からデバイスまたはカーソルのローカル空間に位置を変換します。 |
ベクトル3 | 逆変換ベクトル(Vector3 vector) キャッシュされたWorldToLocalMatrix を使用して、ベクトルをワールド空間からデバイスまたはカーソルのローカル空間に変換します。 |
オーバーライド文字列 | 文字列() |
保護された機能
名称 | |
---|---|
オーバーライド void | 設定() |
オーバーライド void | 固定更新() |
オーバーライド void | AddClientListeners(内部.クライアントコネクションclientConnection) |
オーバーライド void | クライアントリスナーの削除(内部.クライアントコネクションclientConnection) |
公共施設
名称 | |
---|---|
オーバーライド DeviceType | デバイスタイプ |
オーバーライドCursorBehaviour | カーソル |
ベクトル3 | ローカル位置 デバイスローカル空間におけるInverse3カーソルの位置をメートル(m)単位で取得します。 |
ベクトル3 | 位置 LocalPositionとLocalToWorldMatrixからInverse3カーソルのワールド空間の位置を取得します。 |
ベクトル3 | ローカル速度 デバイスローカル空間におけるInverse3カーソルの速度をm/sで取得します。 |
ベクトル3 | 速度 LocalVelocityとLocalToWorldMatrixからInverse3カーソルのワールド空間の速度を取得する |
手の大きさタイプ | 選択された手の長さ Inverse3デバイスの希望するハンドネスタイプを取得または設定します。 |
手の大きさタイプ | ハンドネス 実行時にデバイスのハンドネス・タイプを取得します。 |
ベクトル3 | ワークスペース中央左 HandednessType.Left-handedデバイスのワークスペース中心ローカル座標。 |
ベクトル3 | ワークスペース中心座標 HandednessType.Right-handedデバイスのワークスペース中心ローカル座標。 |
ベクトル3 | ワークスペース中心 Handedness値に応じたワークスペース中心のローカル座標。 |
マトリックス4x4 | ローカル・ワールド行列 デバイスまたはカーソル空間をワールド空間に変換する行列。 |
マトリックス4x4 | WorldToLocalMatrix ワールド空間からデバイス空間またはカーソル空間に変換する行列。 |
保護されたプロパティ
名称 | |
---|---|
トランスフォーム | SpaceTransformationReference LocalToWorldMatrixとWorldToLocalMatrix のセットアップに使用される参照変換。 |
公開イベント・ドキュメント
イベント DeviceStateChanged
DeviceDelegate DeviceStateChanged()
各ハプティックフレームでトリガーされるイベント。
を参照してください:ClientConfiguration.HapticFrequencyHzを参照。
カーソルの位置と速度がリアルタイムで更新される。
このイベントは、カーソルの状態を継続的に追跡する必要があるアプリケーションや、リアルタイムの制御コマンドを適用する場合に便利です。このイベントでは、Position、Velocity、LocalPosition、LocalVelocityなどのプロパティを使用できます。
そして、以下のようなコントロール方法だ:
- カーソルに力を加える、
- カーソルの位置を設定するCursorSetPosition、
- JointsSetTorqueでデバイスのジョイントにトルクをかける。
- JointsSetAnglesで、デバイスのジョイントの角度を設定します。
このイベントがトリガーされる周波数は、ClientConfiguration.HapticFrequencyHzで設定できるハプティックループ周波数によって決定されます。
パブリック・ファンクション・ドキュメント
関数 DeviceDelegate
delegate void DeviceDelegate(
Inverse3 device
)
Inverse3デバイスのInverse3.DeviceStateChangedイベントを処理するメソッドを表します。
パラメーター
- deviceイベントを発生させるInverse3デバイスのインスタンス。
関数 CursorSetLocalForce
void CursorSetLocalForce(
in Vector3 force
)
デバイスのローカル空間のx、y、z軸に沿って、カーソルにかかる力をニュートン(N)で設定する。
パラメーター
- forceデバイスのローカル空間における、ニュートン(N)単位の希望する力ベクトル。
例外あり:
- InvalidOperationExceptionクライアント接続が確立されなかった場合にスローされる。
- Exceptionサービスから予期せぬエラーを受信した場合にスローされる。
このメソッドは、処理されていない力ベクトルをローカル空間のデバイスに直接送信するため、LocalPositionおよびLocalVelocity と組み合わせてのみ使用する必要があります。力の計算がワールド空間座標(Positionと Velocity)に基づいていたり、変換された(位置、回転、またはスケール)コントローラを含む場合は、代わりにCursorSetForceを使用する必要があります。
力を発生させると、デバイスのLEDが緑色に点灯する。Inverse3デバイスは合計10Nまでの力を発生させることができますが、達成可能な最大力はワークスペースによって異なります。要求された力がデバイスの能力を超える場合、デバイスは同じ方向に可能な最大の力を発生させるか、力のスケーリングが有効な場合は、同様の方向を維持しながら達成可能な最大の力を提供するように調整します。すべての軸に沿った力をゼロに設定すると、カーソルに正味の力は発生しませんが、カーソルは、有効な場合、重力補正されたままになります。
関数 CursorSetLocalForce
void CursorSetLocalForce(
float x,
float y,
float z
)
関数 CursorSetForce
void CursorSetForce(
in Vector3 force
)
ワールド空間でカーソルにかかる力をニュートン(N)単位で設定します。
パラメーター
- forceワールド空間でのニュートン(N)単位の力ベクトル。
参照:CursorSetLocalForce、InverseTransformVectorを参照してください。
このメソッドは、提供された力ベクトルをデバイスに送信する前に、ワールド空間からデバイスのローカル空間に変換します。これは、力の計算がワールド空間座標に基づいている場合に使用する必要があります。直接ローカル空間を制御する場合は、代わりにCursorSetLocalForceを使用してください。
関数 CursorSetForce
void CursorSetForce(
float x,
float y,
float z
)
関数 CursorSetLocalPosition
void CursorSetLocalPosition(
in Vector3 position
)
カーソルの位置設定点を、デバイスのローカル空間の x 軸、y 軸、z 軸に沿ってメートル (m) 単位で設定する。
パラメーター
- positionデバイスのローカル空間における、メートル(m)単位の希望位置ベクトル。
例外あり:
- InvalidOperationExceptionクライアント接続が確立されなかった場合にスローされる。
- Exceptionサービスから予期せぬエラーを受信した場合にスローされる。
参照:WorkspaceCenterLeft、WorkspaceCenterRight。
このメソッドは、指定された位置にカーソルを移動させる位置セットポイントを設定する。このメソッドは、ローカル空間のデバイスに非処理位置を直接送信します。位置計算がワールド空間座標(Position、Velocity)に基づいている場合、および/または変換された(位置、回転、またはスケール)コントローラを含む場合は、CursorSetPositionを考慮する必要があります。
位置制御モードでは、デバイスのLEDが青色に点灯します。到達不可能な位置を設定すると、Inverse3デバイスのアームはゆっくりと下降するか、現在の位置に留まります。位置制御モードを終了するには、力(ゼロでも可)を加えるか、TryResetForce を使用するか、デバイスから切断します。
関数 CursorSetLocalPosition
void CursorSetLocalPosition(
float x,
float y,
float z
)
関数 CursorSetPosition
void CursorSetPosition(
in Vector3 position
)
カーソルの位置設定点をワールド空間のメートル(m)単位で設定する。
パラメーター
- positionワールド空間のメートル(m)単位の希望位置ベクトル。
参照:CursorSetLocalPosition、InverseTransformPointを参照。
このメソッドは、位置設定点を設定する前に、提供された位置をワールド空間からデバイスのローカル空間に変換する。これは、位置計算がワールド空間座標に基づいている場合に使用する必要があります。直接ローカル空間を制御する場合は、代わりにCursorSetLocalPositionを使用します。
関数 CursorSetPosition
void CursorSetPosition(
float x,
float y,
float z
)
関数JointsSetTorque
void JointsSetTorque(
in Vector3 torque
)
Inverse3デバイスの各ジョイントに必要なトルクをニュートンミリメートル(Nmm)で設定します。
パラメーター
- torque希望するトルクベクトルをニュートン・ミリメートル(Nmm)で指定します。
例外あり:
- InvalidOperationExceptionthrowExceptionがtrueで、クライアント接続が確立されなかった場合にスローされる。
- Exceptionサービスから予期せぬエラーを受信した場合にスローされる。
トルクが発生すると、デバイスのLEDが緑色に点灯する。
Inverse3デバイスは、各ジョイントで最大1000Nmmのトルクを発生させることができます。希望するトルクがこの制限を超える場合、デバイスは代わりに最大トルクを発生します。
- ジョイント1はヘッドをコントロールする。
- ジョイント2は腕の内側の関節をコントロールする。
- ジョイント3は腕の外側の関節をコントロールする。
関数JointsSetTorque
void JointsSetTorque(
float x,
float y,
float z
)
関数JointsSetAngles
void JointsSetAngles(
in Vector3 angles
)
Inverse3デバイスの各関節の希望する関節角度を度(°)で設定します。
パラメーター
- angles希望の関節角度ベクトルを度 (°) 単位で指定します。
例外あり:
- InvalidOperationExceptionthrowExceptionがtrueで、クライアント接続が確立されなかった場合にスローされる。
- Exceptionサービスから予期せぬエラーを受信した場合にスローされる。
デバイスの希望する関節角度を設定します。達成不可能な角度を設定すると、デバイスは物理的に達成可能な最も近い構成に移動します。例えば (-90, 180, 0)
は、頭部が平行で腕が身体に対して垂直になる位置にデバイスを移動させる。
- ジョイント1はヘッドをコントロールする。
- ジョイント2は腕の内側の関節をコントロールする。
- ジョイント3は腕の外側の関節をコントロールする。
関数JointsSetAngles
void JointsSetAngles(
float x,
float y,
float z
)
関数 TryResetForce
bool TryResetForce()
カーソルのすべての力と位置の制御をリセットしようとする。
を返す:クライアント接続が確立されていないか、予期しないエラーが発生した場合は false。
このメソッドは、ClientConnection が既に閉じている場合は例外をスローしないので、プログラムの終了時や OnDisable イベントでの使用に適しています。クライアント接続が確立されていない場合や、力および位置制御のリセット中にサービスから予期しないエラーを受信した場合は、false を返します。
関数 TransformPoint
Vector3 TransformPoint(
Vector3 position
)
キャッシュされたLocalToWorldMatrixを使用して、デバイスまたはカーソルのローカル空間からワールド空間に位置を変換する。
パラメーター
- ポジション現地でのポジション
戻る:世界のポジション
InverseTransformPointを使えば、ワールド空間からローカル空間への逆変換を行うことができる。
関数 TransformVector
Vector3 TransformVector(
Vector3 vector
)
キャッシュされたLocalToWorldMatrixを使用して、デバイスまたはカーソルのローカル空間からワールド空間へベクトルを変換する。
パラメーター
- ベクトルローカル・ベクトル。
戻る:世界のベクトル。
InverseTransformVectorを使えば、ワールド空間からローカル空間への逆変換を行うことができる。
関数 InverseTransformPoint
Vector3 InverseTransformPoint(
Vector3 position
)
キャッシュされたWorldToLocalMatrixを使用して、ワールド空間からデバイスまたはカーソルのローカル空間に位置を変換する。
パラメーター
- ポジションワールドポジション
戻る:現地でのポジション
関数 InverseTransformVector
Vector3 InverseTransformVector(
Vector3 vector
)
キャッシュされたWorldToLocalMatrixを使用して、ワールド空間からデバイスまたはカーソルのローカル空間にベクトルを変換します。
パラメーター
- ベクトル世界ベクトル。
を返す:ローカルベクトル。
関数 ToString
override string ToString()
保護された関数のドキュメント
機能 セットアップ
override void Setup()
関数 FixedUpdate
override void FixedUpdate()
関数 AddClientListeners
override void AddClientListeners(
Internal.ClientConnection clientConnection
)
関数 RemoveClientListeners
override void RemoveClientListeners(
Internal.ClientConnection clientConnection
)
公共財産の文書化
プロパティ DeviceType
override DeviceType DeviceType;
プロパティ カーソル
override CursorBehaviour Cursor;
このプロパティは、ベースとなるDeviceBehaviour.Cursorプロパティをオーバーライドし、安全にInverse3Cursorにキャストすることができます。このプロパティを設定すると、DeviceBehaviour._performSetupフラグも更新されます。
プロパティ LocalPosition
Vector3 LocalPosition;
Inverse3カーソルの位置を、デバイスローカル空間におけるメートル(m)単位で取得します。
デバイスのDeviceBehaviour.ConnectionStateは、一貫した値を得るために、まずDeviceConnectionState.Openedでなければならない。
プロパティ・ポジション
Vector3 Position;
LocalPositionとLocalToWorldMatrixからInverse3カーソルのワールド空間の位置を取得します。
参照:Transform.position、TransformPoint
プロパティ LocalVelocity
Vector3 LocalVelocity;
デバイスローカル空間におけるInverse3カーソルの速度をm/s(メートル毎秒)で取得します。
提供される速度は、速度推定アルゴリズムを使用して計算され、さらなるフィルタリングや処理を必要としない。
デバイスのDeviceBehaviour.ConnectionStateは、一貫した値を得るために、まずDeviceConnectionState.Openedでなければならない。
速度
Vector3 Velocity;
LocalVelocityとLocalToWorldMatrixからInverse3カーソルのワールド空間の速度を取得する
プロパティ SelectedHandedness
HandednessType SelectedHandedness;
Inverse3デバイスの希望するハンドネスタイプを取得または設定します。
HandednessType.Nilに設定すると、最初に見つかったデバイスがDeviceMapperによって実行時に選択されます。
Handednessを使用すると、実行時に実際のデバイスのハンドネスを知ることができる。
財産
HandednessType Handedness;
実行時にデバイスのハンドネスタイプを取得します。
プロパティ WorkspaceCenterLeft
static Vector3 WorkspaceCenterLeft = new(-0.05f, 0.15f, -0.12f);
HandednessType.Left-handedデバイスのワークスペース中心ローカル座標。
参照:CursorSetLocalPosition、SelectedHandedness。
カーソルをこの位置にセットすると、ヘッドが平行に、アームがボディに対して垂直になるようにデバイスが移動する。
プロパティ WorkspaceCenterRight
static Vector3 WorkspaceCenterRight = new(0.05f, 0.15f, -0.12f);
HandednessType.Right-handedデバイスのワークスペース中心ローカル座標。
参照:CursorSetLocalPosition、SelectedHandedness。
カーソルをこの位置にセットすると、ヘッドが平行に、アームがボディに対して垂直になるようにデバイスが移動する。
プロパティ WorkspaceCenter
Vector3 WorkspaceCenter;
Handednessの値に応じたワークスペース中心のローカル座標。
参照:CursorSetLocalPosition、SelectedHandedness。
HandednessType.Nil の場合、WorkspaceCenterRightを返します。
カーソルをこの位置にセットすると、ヘッドが平行に、アームがボディに対して垂直になるようにデバイスが移動する。
プロパティ LocalToWorldMatrix
Matrix4x4 LocalToWorldMatrix;
デバイスまたはカーソル空間をワールド空間に変換するマトリックス。
参照:SpaceTransformationReference、TransformPoint、TransformVector。
行列はSpaceTransformationReference に依存する。
この行列は、デバイスやカーソルのローカル空間からワールド空間への位置や速度の変換に使用できます。これにより、Transformコンポーネントのデータに直接アクセスできない環境でも、ハプティック関連の計算を正確に行うことができます。
プロパティ WorldToLocalMatrix
Matrix4x4 WorldToLocalMatrix;
ワールドスペースからデバイスまたはカーソルスペースに戻すマトリックス。
参照:SpaceTransformationReference、InverseTransformPoint、InverseTransformVector。
行列はSpaceTransformationReference に依存する。
この行列は、計算された力をワールド空間からデバイスやカーソルのローカル空間に変換するために使用できます。これにより、Transformコンポーネントのデータに直接アクセスできない環境でも、ハプティック関連の計算を正確に行うことができます。
保護された財産の文書化
プロパティ SpaceTransformationReference
Transform SpaceTransformationReference;
LocalToWorldMatrixおよびWorldToLocalMatrix のセットアップに使用される参照変換。
Cursor が設定されている場合は、その親が使用される。そうでない場合は、現在のデバイスが変換される。