Haply::Inverse::Unity::Inverse3
DeviceBehaviour에서 상속
공개 이벤트
이름 | |
---|---|
디바이스 델리게이트 | 디바이스 상태 변경( ) 각 햅틱 프레임에서 트리거되는 이벤트입니다. |
공공 기능
이름 | |
---|---|
위임 무효 | DeviceDelegate(Inverse3 디바이스) Inverse3 디바이스의 Inverse3.DeviceStateChanged 이벤트를 처리하는 메서드를 나타냅니다. |
void | 커서 설정 로컬 힘(Vector3 힘) 장치의 로컬 공간에서 커서에 가해지는 힘을 x, y, z 축을 따라 뉴턴(N) 단위로 설정합니다. |
void | 커서 설정 로컬 힘(float x, float y, float z) |
void | 커서 설정 힘(벡터3 힘에서) 커서에 가해지는 힘을 월드 스페이스에서 뉴턴(N) 단위로 설정합니다. |
void | CursorSetForce(float x, float y, float z) |
void | 커서 설정 로컬 위치(벡터3 위치) 디바이스의 로컬 공간에서 커서의 위치 설정값을 x, y, z 축을 따라 미터(m) 단위로 설정합니다. |
void | 커서 설정 위치(float x, float y, float z) |
void | 커서 설정 위치(벡터3 위치에서) 커서의 위치 설정값을 월드 스페이스에서 미터(m) 단위로 설정합니다. |
void | 커서 설정 위치(float x, float y, float z) |
void | 조인트 설정 토크(Vector3 토크 단위) Inverse3 장치의 각 조인트에 원하는 토크를 뉴턴 밀리미터(Nmm) 단위로 설정합니다. |
void | JointsSetTorque(float x, float y, float z) |
void | 조인트 설정 각도(벡터3 각도) Inverse3 디바이스의 각 조인트에 대해 원하는 조인트 각도를 도(°)로 설정합니다. |
void | 조인트 세트 각도(float x, float y, float z) |
bool | TryResetForce( 커서에 대한 모든 힘과 위치 제어를 초기화하려고 시도합니다. |
Vector3 | 트랜스폼 포인트(벡터3 위치) 캐시된 로컬투월드매트릭스를 사용하여 장치 또는 커서의 로컬 공간에서 월드 공간으로 위치를 변환합니다. |
Vector3 | TransformVector(벡터3 벡터) 캐시된 로컬투월드매트릭스를 사용하여 디바이스 또는 커서의 로컬 공간에서 월드 공간으로 벡터를 변환합니다. |
Vector3 | 역변환점(벡터3 위치) 캐시된 월드투로컬매트릭스를 사용하여 월드 스페이스에서 장치 또는 커서의 로컬 스페이스로 위치를 다시 변환합니다. |
Vector3 | 역변환 벡터(벡터3 벡터) 캐시된 월드투로컬매트릭스를 사용하여 벡터를 월드 스페이스에서 장치 또는 커서의 로컬 스페이스로 다시 변환합니다. |
문자열 재정의 | ToString() |
보호되는 기능
이름 | |
---|---|
오버라이드 무효 | 설정() |
오버라이드 무효 | 고정 업데이트() |
오버라이드 무효 | 클라이언트 리스너 추가(내부.클라이언트커넥션 클라이언트커넥션) |
오버라이드 무효 | 클라이언트 리스너 제거(내부.클라이언트커넥션 클라이언트커넥션) |
공용 속성
이름 | |
---|---|
재정의 장치 유형 | 디바이스 유형 |
커서 동작 재정의 | 커서 |
Vector3 | LocalPosition 장치 로컬 공간에서 Inverse3 커서의 위치를 미터(m) 단위로 가져옵니다. |
Vector3 | Position 로컬포지션과 로컬투월드매트릭스에서 Inverse3 커서 월드 스페이스 위치를 가져옵니다. |
Vector3 | LocalVelocity 디바이스 로컬 공간에서 Inverse3 커서의 속도를 초당 미터(m/s) 단위로 가져옵니다. |
Vector3 | Velocity 로컬 속도와 로컬 투 월드 매트릭스에서 Inverse3 커서 월드 스페이스 속도를 구합니다. |
핸드드니스 유형 | SelectedHandedness Inverse3 디바이스의 원하는 양손잡이 유형을 가져오거나 설정합니다. |
핸드드니스 유형 | Handedness 런타임에 디바이스의 핸드드니스 유형을 가져옵니다. |
Vector3 | 작업 공간 중심 왼쪽 왼손잡이 디바이스의 작업 공간 중심 로컬 좌표입니다. |
Vector3 | 작업 공간 중심 오른쪽 HandednessType.Right-handed 장치의 작업 공간 중심 로컬 좌표입니다. |
Vector3 | 작업 공간 중심 핸드드니스 값에 따른 작업 공간 중심 로컬 좌표입니다. |
매트릭스4x4 | 로컬 투 월드 매트릭스 디바이스 또는 커서 공간을 월드 공간으로 변환하는 매트릭스입니다. |
매트릭스4x4 | 월드투로컬매트릭스 월드 공간에서 디바이스 또는 커서 공간으로 다시 변환하는 매트릭스입니다. |
보호된 속성
이름 | |
---|---|
변환 | 스페이스 트랜스폼 레퍼런스 로컬 투 월드 매트릭스 및 월드 투 로컬 매트릭스 설정에 사용되는 레퍼런스 트랜스폼입니다. |
공개 이벤트 문서
이벤트 장치 상태 변경
DeviceDelegate DeviceStateChanged()
각 햅틱 프레임에서 트리거되는 이벤트입니다.
커서의 위치와 속도를 실시간으로 업데이트합니다.
이 이벤트는 커서 상태를 지속적으로 추적해야 하거나 실시간 제어 명령을 적용해야 하는 애플리케이션에 유용합니다. 이 이벤트 중에는 Position, Velocity, LocalPosition 또는 LocalVelocity와 같은 프로퍼티를 사용할 수 있습니다.
그리고 다음과 같은 제어 방법도 있습니다:
- 커서에 힘을 가하는 커서 설정 포스입니다,
- 커서 위치를 설정하는 커서 설정 위치,
- 조인트 설정 토 크를 사용하여 장치의 조인트에 토크를 적용하거나, 또는
- 조인트 설정 각도를 사용하여 디바이스 조인트의 각도를 설정합니다.
이 이벤트가 트리거되는 빈도는 햅틱 루프 주파수에 의해 결정되며, ClientConfiguration.HapticFrequencyHz를 통해 구성할 수 있습니다.
공용 함수 문서
함수 디바이스 델리게이트
delegate void DeviceDelegate(
Inverse3 device
)
Inverse3 디바이스의 Inverse3.DeviceStateChanged 이벤트를 처리하는 메서드를 나타냅니다.
매개변수:
- device 이벤트를 발생시키는 Inverse3 디바이스 인스턴스입니다.
함수 커서 설정 로컬 힘
void CursorSetLocalForce(
in Vector3 force
)
장치의 로컬 공간에서 x, y, z 축을 따라 커서에 가해지는 힘을 뉴턴(N) 단위로 설정합니다.
매개변수:
- 힘 장치의 로컬 공간에서 원하는 힘 벡터(뉴턴(N) 단위)입니다.
예외:
- 클라이언트 연결이 설정되지 않은 경우 발생하는 InvalidOperationException입니다.
- 서비스에서 예기치 않은 오류가 수신된 경우 발생하는 예외입니다.
이 메서드는 처리되지 않은 힘 벡터를 로컬 공간의 장치로 직접 전송하며, LocalPosition 및 LocalVelocity와 함께 사용할 때만 사용해야 합니다. 힘 계산이 월드 스페이스 좌표(위치 및 속도) 를 기반으로 하거나 변환된(위치, 회전 또는 스케일) 컨트롤러를 포함하는 경우, 대신 CursorSetForce를 사용해야 합니다.
힘이 발생하면 장치의 LED가 녹색으로 바뀝니다. Inverse3 장치는 총 10N까지 힘을 생성할 수 있지만, 달성 가능한 최대 힘은 작업 공간에 따라 다릅니다. 요청된 힘이 장치의 성능을 초과하면 동일한 방향으로 가능한 최대 힘을 생성하거나 힘 스케일링이 활성화된 경우 비슷한 방향을 유지하면서 달성 가능한 최대 힘을 제공하도록 조정합니다. 모든 축의 힘을 0으로 설정하면 커서에 순 힘이 생성되지 않지만 중력 보정 기능을 활성화하면 커서가 중력 보정 상태를 유지합니다.
함수 커서 설정 로컬 힘
void CursorSetLocalForce(
float x,
float y,
float z
)
함수 CursorSetForce
void CursorSetForce(
in Vector3 force
)
커서에 가해지는 힘을 월드 스페이스에서 뉴턴(N) 단위로 설정합니다.
매개변수:
- 힘 원하는 힘 벡터를 월드 스페이스에서 뉴턴(N) 단위로 표시합니다.
참조: 커서 설정 로컬 힘, 역변환 벡터
이 메서드는 제공된 힘 벡터를 장치로 보내기 전에 세계 공간에서 장치의 로컬 공간으로 변환합니다. 힘 계산이 월드 스페이스 좌표를 기반으로 할 때 사용해야 합니다. 로컬 공간을 직접 제어하려면 대신 CursorSetLocalForce를 사용합니다.
함수 CursorSetForce
void CursorSetForce(
float x,
float y,
float z
)
함수 커서 설정 로컬 위치
void CursorSetLocalPosition(
in Vector3 position
)
장치의 로컬 공간에서 커서의 위치 설정값을 x, y 및 z 축을 따라 미터(m) 단위로 설정합니다.
매개변수:
- 위치 디바이스의 로컬 공간에서 원하는 위치 벡터(미터(m) 단위)입니다.
예외:
- 클라이언트 연결이 설정되지 않은 경우 발생하는 InvalidOperationException입니다.
- 서비스에서 예기치 않은 오류가 수신된 경우 발생하는 예외입니다.
참조: 워크스페이스 중앙 왼쪽, 워크스페이스 중앙 오른쪽
이 메서드는 커서를 지정된 위치로 이동하는 위치 설정값을 설정합니다. 처리되지 않은 위치를 로컬 공간의 장치로 직접 전송합니다. 위치 계산이 월드 스페이스 좌표(위치, 속도)를 기반으로 하거나 변환된(위치, 회전 또는 스케일) 컨트롤러를 포함하는 경우 CursorSetPosition을 고려해야 합니다.
위치 제어 모드에서는 디바이스의 LED가 파란색으로 바뀝니다. 획득할 수 없는 위치를 설정하면 Inverse3 디바이스 암이 천천히 내려오거나 현재 위치에 유지됩니다. 위치 제어 모드를 종료하려면 힘을 가하거나(0이 될 수 있음) TryResetForce를 사용하거나 장치에서 연결을 끊습니다.
함수 커서 설정 로컬 위치
void CursorSetLocalPosition(
float x,
float y,
float z
)
함수 커서 설정 위치
void CursorSetPosition(
in Vector3 position
)
커서의 위치 설정값을 월드 스페이스에서 미터(m) 단위로 설정합니다.
매개변수:
- 위치 월드 스페이스에서 원하는 위치 벡터(미터(m) 단위)입니다.
참조: 커서 설정 로컬 위치, 역변환 포인트
이 방법은 위치 설정값을 설정하기 전에 제공된 위치를 세계 공간에서 디바이스의 로컬 공간으로 변환합니다. 위치 계산이 월드 스페이스 좌표를 기반으로 할 때 사용해야 합니다. 로컬 공간을 직접 제어하려면 대신 CursorSetLocalPosition을 사용하세요.
함수 커서 설정 위치
void CursorSetPosition(
float x,
float y,
float z
)
함수 JointsSetTorque
void JointsSetTorque(
in Vector3 torque
)
Inverse3 장치의 각 조인트에 대해 원하는 토크를 뉴턴 밀리미터(Nmm) 단위로 설정합니다.
매개변수:
- 토크 원하는 토크 벡터(뉴턴 밀리미터(Nmm) 단위)입니다.
예외:
- throwException이 true이고 클라이언트 연결이 설정되지 않은 경우 발생하는 InvalidOperationException입니다.
- 서비스에서 예기치 않은 오류가 수신된 경우 발생하는 예외입니다.
토크를 발생시키면 기기의 LED가 녹색으로 바뀝니다.
Inverse3 장치는 각 조인트에서 최대 1000Nmm의 토크를 생성할 수 있습니다. 원하는 토크가 이 한계를 초과하면 장치가 대신 최대 토크를 생성합니다.
- 조인트 1은 장치의 헤드를 제어합니다.
- 관절 2는 팔의 안쪽 관절을 제어합니다.
- 3번 관절은 팔의 바깥쪽 관절을 제어합니다.
함수 JointsSetTorque
void JointsSetTorque(
float x,
float y,
float z
)
함수 JointsSetAngles
void JointsSetAngles(
in Vector3 angles
)
Inverse3 장치의 각 조인트에 대해 원하는 조인트 각도를 도(°)로 설정합니다.
매개변수:
- 각도 원하는 조인트 각도 벡터(도(°) 단위)입니다.
예외:
- throwException이 true이고 클라이언트 연결이 설정되지 않은 경우 발생하는 InvalidOperationException입니다.
- 서비스에서 예기치 않은 오류가 수신된 경우 발생하는 예외입니다.
디바이스의 원하는 조인트 각도를 설정합니다. 얻을 수 없는 각도를 설정하면 장치가 물리적으로 얻을 수 있는 가장 가까운 구성으로 이동합니다. 예를 들어 다음을 설정합니다. (-90, 180, 0)
을 누르면 머리가 평행하고 팔이 몸과 수직이 되는 위치로 기기가 이동합니다.
- 조인트 1은 장치의 헤드를 제어합니다.
- 관절 2는 팔의 안쪽 관절을 제어합니다.
- 3번 관절은 팔의 바깥쪽 관절을 제어합니다.
함수 JointsSetAngles
void JointsSetAngles(
float x,
float y,
float z
)
함수 TryResetForce
bool TryResetForce()
커서에 대한 모든 힘과 위치 제어를 초기화하려고 시도합니다.
반환합니다: 강제 재설정에 성공하면 true, 클라이언트 연결이 설정되지 않았거나 예기치 않은 오류가 발생하면 false를 반환합니다.
이 메서드는 클라이언트 연결이 이미 닫혀 있는 경우 예외를 발생시키지 않으므로 프로그램 종료 중이나 OnDisable 이벤트에서 사용하기에 적합합니다. 클라이언트 연결이 설정되지 않았거나 힘 및 위치 제어를 재설정하는 동안 서비스에서 예기치 않은 오류가 수신되면 false를 반환합니다.
함수 트랜스폼포인트
Vector3 TransformPoint(
Vector3 position
)
캐시된 로컬투월드매트릭스를 사용하여 장치 또는 커서의 로컬 공간에서 월드 공간으로 위치를 변환합니다.
매개변수:
- 위치 로컬 위치.
참조: 로컬투월드매트릭스
Return: 반환: 세계 순위.
역변환점을 사용하면 월드에서 로컬 공간으로 반대 변환을 수행할 수 있습니다.
함수 트랜스폼벡터
Vector3 TransformVector(
Vector3 vector
)
캐시된 로컬투월드매트릭스를 사용하여 디바이스 또는 커서의 로컬 공간에서 월드 공간으로 벡터를 변환합니다.
매개변수:
- 벡터 로컬 벡터.
참조: 로컬투월드매트릭스
반환합니다: 월드 벡터.
역변환벡터를 사용하면 월드에서 로컬 공간으로 반대의 변환을 수행할 수 있습니다.
함수 역변환점
Vector3 InverseTransformPoint(
Vector3 position
)
캐시된 월드투로컬매트릭스를 사용하여 월드 스페이스에서 장치 또는 커서의 로컬 스페이스로 위치를 다시 변환합니다.
매개변수:
- 위치 세계 위치.
참조: 월드투로컬매트릭스
반환: 반환: 로컬 위치.
트랜스폼포인트와 반대되는 개념입니다.
함수 역변환 벡터
Vector3 InverseTransformVector(
Vector3 vector
)
캐시된 월드투로컬매트릭스를 사용하여 벡터를 월드 스페이스에서 디바이스 또는 커서의 로컬 스페이스로 다시 변환합니다.
매개변수:
- 벡터 월드 벡터.
참조: 월드투로컬매트릭스
반환합니다: 로컬 벡터.
트랜스폼벡터와 반대입니다.
함수 ToString
override string ToString()
보호된 기능 문서
함수 설정
override void Setup()
함수 고정 업데이트
override void FixedUpdate()
함수 추가 클라이언트 리스너
override void AddClientListeners(
Internal.ClientConnection clientConnection
)
함수 제거 클라이언트 리스너
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;
로컬 포지션과 로컬 투 월드 매트릭스에서 Inverse3 커서 월드 스페이스 위치를 가져옵니다.
참조: 트랜스폼.위치, 트랜스폼포인트
속성 LocalVelocity
Vector3 LocalVelocity;
디바이스 로컬 공간에서 Inverse3 커서의 속도를 초당 미터(m/s) 단위로 가져옵니다.
제공된 속도는 속도 추정 알고리즘을 사용하여 계산되며 추가 필터링이나 처리가 필요하지 않습니다.
일관된 값을 얻으려면 장치 DeviceBehaviour.ConnectionState가 먼저 DeviceConnectionState.Opened여야 합니다.
속성 속도
Vector3 Velocity;
로컬 속도와 로컬 투 월드 매트릭스에서 Inverse3 커서 월드 스페이스 속도를 구합니다.
속성 SelectedHandedness
HandednessType SelectedHandedness;
Inverse3 디바이스의 원하는 양손잡이 유형을 가져오거나 설정합니다.
HandednessType.Nil로 설정하면 런타임 시 디바이스맵퍼에 의해 처음 발견된 디바이스가 선택됩니다.
Handedness를 사용하여 런타임에 실제 디바이스의 핸드헬드 여부를 파악합니다.
속성 Handedness
HandednessType Handedness;
런타임에 디바이스의 핸드드니스 유형을 가져옵니다.
속성 작업 공간 중앙 왼쪽
static Vector3 WorkspaceCenterLeft = new(-0.05f, 0.15f, -0.12f);
왼손잡이 기기에 대한 작업 공간 중심 로컬 좌표입니다.
참조: 커서 설정 로컬 위치, 선택된 손 방향
이 위치에 커서를 설정하면 머리가 평행하고 팔이 몸통과 수직이 되는 위치로 디바이스가 이동합니다.
속성 작업 공간 중앙 오른쪽
static Vector3 WorkspaceCenterRight = new(0.05f, 0.15f, -0.12f);
HandednessType.Right-handed 장치의 작업 공간 중심 로컬 좌표입니다.
참조: 커서 설정 로컬 위치, 선택된 손 방향
이 위치에 커서를 설정하면 머리가 평행하고 팔이 몸통과 수직이 되는 위치로 디바이스가 이동합니다.
속성 워크스페이스센터
Vector3 WorkspaceCenter;
핸드드니스 값에 따라 작업 공간 중심 로컬 좌표입니다.
참조: 커서 설정 로컬 위치, 선택된 손 방향
Handedness가 HandednessType.Nil인 경우 WorkspaceCenterRight를 반환합니다.
이 위치에 커서를 설정하면 머리가 평행하고 팔이 몸통과 수직이 되는 위치로 디바이스가 이동합니다.
속성 로컬투월드매트릭스
Matrix4x4 LocalToWorldMatrix;
디바이스 또는 커서 공간을 월드 공간으로 변환하는 매트릭스입니다.
참조: 공간 변환 참조, 트랜스폼 포인트, 트랜스폼 벡터
행렬은 SpaceTransformationReference에 따라 달라집니다.
이 매트릭스는 디바이스 또는 커서의 로컬 공간에서 월드 공간으로 위치와 속도를 변환하는 데 사용할 수 있습니다. 이를 통해 트랜스폼 컴포넌트의 데이터에 직접 액세스할 수 없는 환경에서도 햅틱 관련 계산을 정확하게 수행할 수 있습니다.
속성 WorldToLocalMatrix
Matrix4x4 WorldToLocalMatrix;
월드 공간에서 디바이스 또는 커서 공간으로 다시 변환하는 매트릭스입니다.
행렬은 SpaceTransformationReference에 따라 달라집니다.
이 매트릭스는 계산된 힘을 월드 공간에서 디바이스 또는 커서의 로컬 공간으로 변환하는 데 사용할 수 있습니다. 이를 통해 트랜스폼 컴포넌트의 데이터에 직접 액세스할 수 없는 환경에서도 햅틱 관련 계산을 정확하게 수행할 수 있습니다.
보호 대상 자산 문서
속성 공간 변환 참조
Transform SpaceTransformationReference;
로컬투월드매트릭스 및 월드투로컬매트릭스 설정에 사용되는 레퍼런스 트랜스폼입니다.
커서가 설정되어 있으면 해당 부모가 사용됩니다. 그렇지 않으면 현재 디바이스 트랜스폼이 사용됩니다.