빠른 시작: 인버스 유니티 패키지
이 가이드에서는 패키지 설치, 햅틱 릭 설정, 힘 및 위치 제어를 위한 간단한 스크립트 생성 등 Haply 인버스 유니티 패키지의 기본 사용법을 설명하며 간단한 예제를 제공합니다.
자세한 내용과 고급 기술을 알아보려면 튜토리얼을 살펴보세요.
버전 지원
- Unity 2021.3.x LTS: 지원됨
- Unity 2022.3.x LTS: 지원됨
- Unity 2023.x.x(테크 스트림): 실험 단계
- 하플리 인버스 SDK: 2.0.0 이상
전제 조건
- 하플리 인버스 SDK 버전 2.0.0 이상을 설치합니다.
- Haply 인버스 서비스가 작동하는지 확인합니다.
- 씬을 시작하기 전에 Inverse3 및 VerseGrip 장치가 연결되고 보정되었는지 확인합니다.
이 패키지는 Inverse3에 대한 지원을 강화하기 위해 지속적으로 개발 중입니다. 지원, 피드백 또는 요청 사항이 있으면 문의해 주세요.
설치
인버스 유니티 패키지는 유니티의 범위 지정 레지스트리를 통해 사용할 수 있습니다. 패키지를 통합하려면
-
편집 > 프로젝트 설정 > 패키지 관리자를 엽니다. 새 범위 지정 레지스트리를 추가합니다:
- 이름:
Haply Robotics
- URL:
https://unitypackages.haply.co
- 범위:
co.haply
- 이름:
-
액세스 창 > 패키지 관리자을 클릭하고 추가 + 버튼을 클릭하고 이름으로 패키지 추가. 입력
co.haply.inverse
을 클릭하고 추가.
설치가 완료되면 패키지 관리자에 Inverse 패키지가 표시됩니다.
햅틱 릭 설정
햅틱 릭을 생성하려면 게임 오브젝트 > 햅리 인버스 > 햅틱 릭(한 손)으로 이동합니다. 이 작업은 Inverse3 컨트롤러와 VerseGrip으로 완전한 환경을 조립합니다.
이제 씬에 다음이 포함됩니다:
- 햅틱 디바이스 매퍼: 햅리 인버스 서비스로 디바이스 할당을 관리합니다.
- 햅틱 원점: 씬 내에서 햅틱 설정의 스케일과 위치를 조정합니다.
- 햅틱 컨트롤러: Inverse3 및 VerseGrip 디바이스 데이터를 기반으로 커서 힘 또는 위치를 관리합니다.
- 커서: 커서: 장면 표현을 위한 Inverse3Cursor 및 VerseGrip 커서 컴포넌트를 포함합니다.
패키지 구성 요소에 대한 자세한 내용은 글로벌 아키텍처 문서 페이지를 참조하세요.
재생 모드에서 구는 Inverse3 커서 및 VerseGrip 방향과 동기화하여 이동하고 회전합니다.
강제 제어 모드
만들기 ForceControl.cs
C# 스크립트에 첨부하여 햅틱 오리진 게임 오브젝트.
이 스크립트를 사용하면 Inverse3 장치에서 인스펙터 슬라이더를 사용합니다.
using Haply.Inverse.Unity;
using UnityEngine;
public class ForceControl : MonoBehaviour
{
[Range(-2, 2)]
public float forceX;
[Range(-2, 2)]
public float forceY;
[Range(-2, 2)]
public float forceZ;
private Inverse3 _inverse3;
private void Awake()
{
_inverse3 = GetComponentInChildren<Inverse3>();
}
protected void OnEnable()
{
_inverse3.DeviceStateChanged += OnDeviceStateChanged;
}
protected void OnDisable()
{
_inverse3.DeviceStateChanged -= OnDeviceStateChanged;
_inverse3.TryResetForce();
}
private void OnDeviceStateChanged(Inverse3 inverse3)
{
inverse3.CursorSetLocalForce(forceX, forceY, forceZ);
}
}
스크립트 설명
-
forceX, Y, Z
: 슬라이더를 사용하여 힘 벡터 구성 요소를 조정하여 힘이 안전 한도 내에서 유지되도록 보장합니다.CursorSetForce
메서드를 사용할 수 있습니다. 또는 표준Vector3
필드를 사용할 수 있습니다. -
Awake()
: 검색 Inverse3 컴포넌트를 현재 게임 오브젝트 또는 그 자식에서 가져옵니다. -
OnEnable()
: 등록OnDeviceStateChanged
콜백을 별도의 스레드에서 햅틱 업데이트의Awake
메서드 호출과 스크립트가 활성화될 때마다 호출합니다. -
OnDisable()
: 스크립트가 비활성화되거나 애플리케이션이 중지되면 콜백 등록을 취소하고 강제 적용을 재설정합니다. -
OnDeviceStateChanged
: 를 가져옵니다.force
벡터를 인스펙터 창에서 가져와서 Inverse3 를 사용하여CursorSetForce
메서드를 사용합니다.중요: 콜백은 햅틱 스레드에 의해 4kHz~8kHz 범위의 높은 주파수로 트리거됩니다. 이 콜백 내의 모든 코드가 고도로 최적화되어 있는지 확인하는 것이 중요합니다.
사용법
재생 모드로 들어가기 전에 커서를 길게 누르고 있는지 확인하세요. 장치가 녹색 표시등으로 표시되는 강제 제어 상태로 전환되어야 합니다. 그런 다음 슬라이더를 사용하여 힘 출력을 조정하여 디바이스 작업 공간을 탐색할 수 있습니다.
힘을 조절하면 Inverse3가 움직입니다. 작업 공간이 비어 있는지 확인하고 항상 커서를 잡고 있어야 합니다. 안전 지침은 안전 사용 문서를 참조하세요.
위치 제어 모드
마찬가지로 PositionControl.cs
C# 스크립트를 사용하여 디바이스의 위치를 제어하고 이를 햅틱 오리진 게임 오브젝트.
using Haply.Inverse.Unity;
using UnityEngine;
public class PositionControl : MonoBehaviour
{
[Range(-0.1f, 0.1f)]
public float positionX;
[Range(-0.1f, 0.1f)]
public float positionY;
[Range(-0.1f, 0.1f)]
public float positionZ;
private Inverse3 _inverse3;
private Vector3 _basePosition;
private void Awake()
{
_inverse3 = GetComponentInChildren<Inverse3>();
}
protected void OnEnable()
{
_inverse3.DeviceStateChanged += OnDeviceStateChanged;
}
protected void OnDisable()
{
_inverse3.DeviceStateChanged -= OnDeviceStateChanged;
_inverse3.TryResetForce();
}
private void OnDeviceStateChanged(Inverse3 inverse3)
{
if (_basePosition == Vector3.zero)
{
_basePosition = inverse3.LocalPosition;
}
inverse3.CursorSetLocalPosition(_basePosition + new Vector3(positionX, positionY, positionZ));
}
}
ForceControl 스크립트 또는 장치를 제어하는 다른 스크립트가 비활성화되어 있는지 확인합니다.
이전 예와 비슷합니다:
- 활용
positionX, Y, and Z
를 조정하려면 위치 플레이 모드에서 슬라이더를 사용합니다.선택한
Range(-0.1, 0.1)
는 대략 달성 가능한 최대 위치에 해당합니다. - 그리고
Awake
메서드는 Inverse3 컴포넌트입니다. - 그리고
OnEnable
메서드를 등록하면OnDeviceStateChanged
콜백을 별도의 스레드에서 햅틱 업데이트의Awake
메서드 호출과 스크립트가 활성화될 때마다 호출합니다. - 그리고
OnDisable
메서드는 콜백 등록을 취소하고 스크립트가 비활성화되거나 애플리케이션이 중지되면 강제성을 재설정합니다.
그러나 차이점이 있습니다:
- 그리고
OnDeviceStateChanged
콜백은 처음에basePosition
. 그런 다음 각 햅틱 프레임 동안 인스펙터 창에서 위치 벡터를 가져와서basePosition
를 사용하여 Inverse3로 전송합니다.CursorSetPosition
메서드를 사용합니다.
재생 모드로 들어가기 전에 커서를 길게 누릅니다. 장치가 위치 제어 상태로 전환됩니다(파란색 표시등으로 표시됨). 그런 다음 슬라이더로 위치 출력을 조정하여 디바이스 작업 공간을 탐색할 수 있습니다.
위치를 조정할 때 Inverse3가 움직입니다. 작업 공간에 귀중품이 없는지 확인하고 항상 커서를 잡고 있어야 합니다. 자세한 내용은 안전한 사용 문서를 참조하세요.