주요 내용으로 이동

Inverse Unity 패키지 입문 가이드

이 가이드에서는 기본 설정을 간략히 설명하고, Haply Inverse Unity Package의 기본 사용법을 보여주는 간단한 예제를 제공합니다. 여기에는 패키지 설치, 햅틱 리그 구축, 그리고 힘 제어 및 위치 제어를 위한 간단한 스크립트 작성 방법이 포함됩니다.

자세한 내용과 고급 기술을 확인하려면튜토리얼을참고하세요.

버전 지원​

  • Unity 2021.3.x LTS: 지원
  • Unity 2022.1.x LTS: 지원
  • Unity 6000.x LTS: 지원
  • Haply Inverse SDK: 3.1.0 이상

전제 조건​

  • 설치 Haply Inverse SDK 3.1.0 이상.
  • Haply 역방향 서비스가 정상적으로 작동하는지 확인하십시오.
  • 시작 장면을 실행하기 전에, Inverse3 와 VerseGrip 장치가 연결되어 있고 보정이 완료되었는지 확인해 주세요.
비고

이 소프트웨어 패키지는 Inverse3 에 대한 지원을 강화하기 위해 지속적으로 개발되고 있습니다. 지원, 피드백 또는 요청 사항이 있으시면저희에게 연락해주십시오.

설치​

Inverse Unity 패키지는Unity의 범위 레지스트리를 통해 얻을 수 있습니다. 이 패키지를 통합하려면:

  1. ‘편집 > 프로젝트 설정 > 패키지 관리자’를열고, 새로운 범위 레지스트리를 추가한 다음 다음 내용을 입력합니다:

    • 명칭:Haply Robotics
    • URL:https://unitypackages.haply.co
    • 범위(Scope(s)):co.haply

    범위 레지스트리

  2. 들어가기 창 > 패키지 관리자, 클릭 추가 + 버튼을 누른 다음 다음을 선택합니다. 이름으로 패키지 추가。 입력 co.haply.inverse, 그런 다음 클릭하세요 추가。

    빠른 추가 화면

설치가 완료되면 패키지 관리자에 Inverse 패키지가 표시됩니다.

Haptic Rig 설정​

Haptic Rig를생성하려면 GameObject > Haply Inverse > Haptic Rig (one hand)로 이동하세요. 이렇게 하면 ‘ Inverse3 ’ 컨트롤러와 VerseGrip이 포함된 완전한 환경이 구성됩니다.

이제 이 장면에는 다음이 포함될 것입니다:

  • 햅틱 장치 매퍼: Haply 역방향 서비스를 사용하여 장치 할당을 관리합니다.
  • 햅틱 원점: 장면 내에서 햅틱 설정을 확대/축소하고 위치를 지정합니다.
  • 햅틱 컨트롤러: Inverse3 및 VerseGrip 장치의 데이터를 기반으로 커서의 힘이나 위치를 제어합니다.
  • 커서: 씬 렌더링에 사용되는 ‘Inverse3 ’ 커서 및 ‘VerseGrip’ 커서 컴포넌트를 포함합니다.

한 손용 햅틱 리그

패키지 구성 요소에 대한 자세한 내용은전역 아키텍처 문서 페이지를참조하십시오.

Play 모드에서는 구체가 Inverse3 커서와 함께 이동 및 회전하며, VerseGrip의 자세를 따라갑니다.

Inverse3 패널 확인

핸들 확인 패널

힘 제어 모드​

만들기 ForceControl.cs C# 스크립트를 작성하고 이를 다음 위치에 마운트합니다. 햅틱 오리진 GameObject 위에서. 이 스크립트를 사용하면 인스펙터 패널의 슬라이더를 통해 Inverse3 장비가 힘을 가한다.

using Haply.Inverse;
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.Release();
}

private void OnDeviceStateChanged(object sender, Inverse3EventArgs args)
{
var inverse3 = args.DeviceController;
inverse3.SetCursorLocalForce(new Vector3(forceX, forceY, forceZ));
}
}

힘 제어

대본 설명​

  • forceX, Y, Z: 슬라이더를 통해 조절된 힘 벡터의 성분이, 전달되어 CursorSetForce 방법을 시도하기 전에, 힘이 안전한 범위 내에 머무르는지 확인하십시오. 또는 표준 방식을 사용할 수도 있습니다. Vector3 필드.

  • Awake(): 현재 GameObject 또는 그 자식 객체에서 가져옵니다. Inverse3 구성 요소.

  • OnEnable():에서 Awake 메서드 호출 후, 그리고 스크립트가 활성화될 때마다, 별도의 스레드에서 촉각 업데이트를 등록할 때 OnDeviceStateChanged 콜백.

  • OnDisable(): 스크립트가 비활성화되거나 애플리케이션이 중지되면 로그아웃 콜백을 호출하고 힘을 초기화합니다.

  • OnDeviceStateChanged: 검토 패널에서 가져오기 force 벡터, 그리고 이를 통해 CursorSetForce 이를 다음으로 전달하는 방법 Inverse3。

    중요: 이 콜백은 탭 감지 스레드에서 1kHz에서 8kHz 사이의 높은 주파수로 트리거됩니다. 이 콜백 내의 모든 코드가 철저히 최적화되었는지 반드시 확인하십시오.

사용 방법​

Play 모드로 들어가기 전에 커서를 제대로 잡고 있는지 확인하십시오. 장치는 Force Control 상태로 전환되어야 하며, 녹색 표시등이 켜져야 합니다. 그런 다음 슬라이더를 통해 힘의 강도를 조절하며 장치의 작업 공간 내에서 조작할 수 있습니다.

주의

조절력이 가해지면 Inverse3 이 움직일 수 있습니다. 작업 공간에 장애물이 없는지 확인하고, 항상 커서를 잡고 계십시오. 안전 지침에 대해서는‘안전한 사용’ 문서를참조하십시오.

커서 설정 힘

위치 제어 모드​

마찬가지로, 장치의 위치를 제어하기 위한 PositionControl.cs C# 스크립트를 작성하고 이를 다음 위치에 마운트합니다. 햅틱 오리진 GameObject 위에서.

using Haply.Inverse;
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 void Awake()
{
_inverse3 = GetComponentInChildren<Inverse3>();
}

protected void OnEnable()
{
_inverse3.DeviceStateChanged += OnDeviceStateChanged;
}

protected void OnDisable()
{
_inverse3.DeviceStateChanged -= OnDeviceStateChanged;
_inverse3.Release();
}

private void OnDeviceStateChanged(object sender, Inverse3EventArgs args)
{
var inverse3 = args.DeviceController;
inverse3.SetCursorLocalPosition(inverse3.WorkspaceCenterLocalPosition + new Vector3(positionX, positionY, positionZ));
}
}

ForceControl 스크립트나 제어 장치와 관련된 기타 모든 스크립트가 비활성화되어 있는지 확인하십시오.

위치 제어

앞서 소개한 예제와 마찬가지로:

  • 실행 모드에서는 다음을 사용하여 positionX, Y, and Z 슬라이더를 통해 조정하고 위치。

    선택된 Range(-0.1, 0.1) 대략 도달 가능한 최대 위치에 해당합니다.

  • Awake 획득 방법 Inverse3 구성 요소.
  • OnEnable 방법은 Awake 메서드 호출 후 및 스크립트가 실행될 때마다 별도의 스레드에서 햅틱 업데이트를 등록합니다. OnDeviceStateChanged 콜백.
  • OnDisable 스크립트가 비활성화되거나 애플리케이션이 중지될 때 콜백을 해제하고 힘을 재설정하는 방법.

그러나 이 둘 사이에는 다음과 같은 차이가 있습니다:

  • OnDeviceStateChanged 각 탭 프레임 동안 콜백은 뷰 패널에서 위치 벡터를 가져와 이를 WorkspaceCenterLocalPosition 더하고, 그리고 CursorSetLocalPosition Inverse3으로 보내주십시오.

작동 모드로 들어가기 전에 커서를 잡고 중앙 위치에 가깝게 가져가십시오. 장치가 위치 제어 상태로 전환되어야 합니다(표시등이 파란색으로 켜짐). 그런 다음 슬라이더를 사용하여 위치 출력을 조정하고 장치의 작업 공간을 탐색할 수 있습니다.

주의

위치를 조정할 때, ‘Inverse3 ’이 이동합니다. 작업 공간 내에 귀중품이 없는지 확인하고, 항상 커서를 잡고 계십시오. 자세한 내용은 ‘안전한 사용’ 문서를참조하십시오.

커서 설정 위치