本文へスキップ
バージョン: 2.0.0

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()
カーソルのすべての力と位置制御のリセットを試みる。
ベクトル3TransformPoint(Vector3 position)
キャッシュされたLocalToWorldMatrixを使用して、デバイスまたはカーソルのローカル空間からワールド空間に位置を変換する。
ベクトル3TransformVector(Vector3 vector)
キャッシュされたLocalToWorldMatrix を使用して、デバイスまたはカーソルのローカル空間からワールド空間にベクトルを変換します。
ベクトル3InverseTransformPoint(Vector3 position)
キャッシュされたWorldToLocalMatrix を使用して、ワールド空間からデバイスまたはカーソルのローカル空間に位置を変換します。
ベクトル3逆変換ベクトル(Vector3 vector)
キャッシュされたWorldToLocalMatrix を使用して、ベクトルをワールド空間からデバイスまたはカーソルのローカル空間に変換します。
オーバーライド文字列文字列()

保護された機能

名称
オーバーライド void設定()
オーバーライド void固定更新()
オーバーライド voidAddClientListeners(内部.クライアントコネクション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ローカル・ワールド行列
デバイスまたはカーソル空間をワールド空間に変換する行列。
マトリックス4x4WorldToLocalMatrix
ワールド空間からデバイス空間またはカーソル空間に変換する行列。

保護されたプロパティ

名称
トランスフォームSpaceTransformationReference
LocalToWorldMatrixWorldToLocalMatrix のセットアップに使用される参照変換。

公開イベント・ドキュメント

イベント DeviceStateChanged

DeviceDelegate DeviceStateChanged()

各ハプティックフレームでトリガーされるイベント。

参照してください:ClientConfiguration.HapticFrequencyHzを参照。

カーソルの位置と速度がリアルタイムで更新される。

このイベントは、カーソルの状態を継続的に追跡する必要があるアプリケーションや、リアルタイムの制御コマンドを適用する場合に便利です。このイベントでは、PositionVelocityLocalPositionLocalVelocityなどのプロパティを使用できます。

そして、以下のようなコントロール方法だ:

このイベントがトリガーされる周波数は、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)単位の力ベクトル。

参照CursorSetLocalForceInverseTransformVectorを参照してください

このメソッドは、提供された力ベクトルをデバイスに送信する前に、ワールド空間からデバイスのローカル空間に変換します。これは、力の計算がワールド空間座標に基づいている場合に使用する必要があります。直接ローカル空間を制御する場合は、代わりにCursorSetLocalForceを使用してください。

関数 CursorSetForce

void CursorSetForce(
float x,
float y,
float z
)

関数 CursorSetLocalPosition

void CursorSetLocalPosition(
in Vector3 position
)

カーソルの位置設定点を、デバイスのローカル空間の x 軸、y 軸、z 軸に沿ってメートル (m) 単位で設定する。

パラメーター

  • positionデバイスのローカル空間における、メートル(m)単位の希望位置ベクトル。

例外あり

  • InvalidOperationExceptionクライアント接続が確立されなかった場合にスローされる。
  • Exceptionサービスから予期せぬエラーを受信した場合にスローされる。

参照WorkspaceCenterLeftWorkspaceCenterRight

このメソッドは、指定された位置にカーソルを移動させる位置セットポイントを設定する。このメソッドは、ローカル空間のデバイスに非処理位置を直接送信します。位置計算がワールド空間座標(PositionVelocity)に基づいている場合、および/または変換された(位置、回転、またはスケール)コントローラを含む場合は、CursorSetPositionを考慮する必要があります。

位置制御モードでは、デバイスのLEDが青色に点灯します。到達不可能な位置を設定すると、Inverse3デバイスのアームはゆっくりと下降するか、現在の位置に留まります。位置制御モードを終了するには、力(ゼロでも可)を加えるか、TryResetForce を使用するか、デバイスから切断します。

関数 CursorSetLocalPosition

void CursorSetLocalPosition(
float x,
float y,
float z
)

関数 CursorSetPosition

void CursorSetPosition(
in Vector3 position
)

カーソルの位置設定点をワールド空間のメートル(m)単位で設定する。

パラメーター

  • positionワールド空間のメートル(m)単位の希望位置ベクトル。

参照CursorSetLocalPositionInverseTransformPointを参照。

このメソッドは、位置設定点を設定する前に、提供された位置をワールド空間からデバイスのローカル空間に変換する。これは、位置計算がワールド空間座標に基づいている場合に使用する必要があります。直接ローカル空間を制御する場合は、代わりに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を使用して、デバイスまたはカーソルのローカル空間からワールド空間に位置を変換する。

パラメーター

  • ポジション現地でのポジション

参照LocalToWorldMatrixを参照。

戻る:世界のポジション

InverseTransformPointを使えば、ワールド空間からローカル空間への逆変換を行うことができる。

関数 TransformVector

Vector3 TransformVector(
Vector3 vector
)

キャッシュされたLocalToWorldMatrixを使用して、デバイスまたはカーソルのローカル空間からワールド空間へベクトルを変換する。

パラメーター

  • ベクトルローカル・ベクトル。

参照LocalToWorldMatrixを参照。

戻る:世界のベクトル。

InverseTransformVectorを使えば、ワールド空間からローカル空間への逆変換を行うことができる。

関数 InverseTransformPoint

Vector3 InverseTransformPoint(
Vector3 position
)

キャッシュされたWorldToLocalMatrixを使用して、ワールド空間からデバイスまたはカーソルのローカル空間に位置を変換する。

パラメーター

  • ポジションワールドポジション

参照WorldToLocalMatrix

戻る:現地でのポジション

トランスフォーム・ポイントの反対。

関数 InverseTransformVector

Vector3 InverseTransformVector(
Vector3 vector
)

キャッシュされたWorldToLocalMatrixを使用して、ワールド空間からデバイスまたはカーソルのローカル空間にベクトルを変換します。

パラメーター

  • ベクトル世界ベクトル。

参照WorldToLocalMatrix

返す:ローカルベクトル。

TransformVectorの反対。

関数 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デバイスのワークスペース中心ローカル座標。

参照CursorSetLocalPositionSelectedHandedness

カーソルをこの位置にセットすると、ヘッドが平行に、アームがボディに対して垂直になるようにデバイスが移動する。

プロパティ WorkspaceCenterRight

static Vector3 WorkspaceCenterRight = new(0.05f, 0.15f, -0.12f);

HandednessType.Right-handedデバイスのワークスペース中心ローカル座標。

参照CursorSetLocalPositionSelectedHandedness

カーソルをこの位置にセットすると、ヘッドが平行に、アームがボディに対して垂直になるようにデバイスが移動する。

プロパティ WorkspaceCenter

Vector3 WorkspaceCenter;

Handednessの値に応じたワークスペース中心のローカル座標。

参照CursorSetLocalPositionSelectedHandedness

HandednessType.Nil の場合、WorkspaceCenterRightを返します。

カーソルをこの位置にセットすると、ヘッドが平行に、アームがボディに対して垂直になるようにデバイスが移動する。

プロパティ LocalToWorldMatrix

Matrix4x4 LocalToWorldMatrix;

デバイスまたはカーソル空間をワールド空間に変換するマトリックス。

参照SpaceTransformationReferenceTransformPointTransformVector

行列はSpaceTransformationReference に依存する。

この行列は、デバイスやカーソルのローカル空間からワールド空間への位置や速度の変換に使用できます。これにより、Transformコンポーネントのデータに直接アクセスできない環境でも、ハプティック関連の計算を正確に行うことができます。

プロパティ WorldToLocalMatrix

Matrix4x4 WorldToLocalMatrix;

ワールドスペースからデバイスまたはカーソルスペースに戻すマトリックス。

参照SpaceTransformationReferenceInverseTransformPointInverseTransformVector

行列はSpaceTransformationReference に依存する。

この行列は、計算された力をワールド空間からデバイスやカーソルのローカル空間に変換するために使用できます。これにより、Transformコンポーネントのデータに直接アクセスできない環境でも、ハプティック関連の計算を正確に行うことができます。

保護された財産の文書化

プロパティ SpaceTransformationReference

Transform SpaceTransformationReference;

LocalToWorldMatrixおよびWorldToLocalMatrix のセットアップに使用される参照変換。

Cursor が設定されている場合は、その親が使用される。そうでない場合は、現在のデバイスが変換される。