빠른 시작: 하드웨어API Unity 패키지
이 문서에서는 기본 설정 지침과 기본 사용법을 보여주는 간단한 예시를 제공합니다. 자세한 내용과 고급 사용법은 자세한 내용 및 고급 사용법은 Unity 패키지 레퍼런스 또는 튜토리얼을 참조하십시오.
버전 지원
- Unity 2020.3.x LTS: 권장 사항
- Unity 2021.3.x LTS: 지원됨
- Unity 2022.x(테크 스트림): 실험 단계
패키지 개요
Haply HardwareAPI Unity 패키지는 Haply의 C# HardwareAPI 클래스 라이브러리를 기반으로 제작되었으며, Unity 워크플로에 맞게 맞춤화된 추가 통합 및 품질 개선 기능을 제공합니다. 워크플로를 위한 추가 통합 기능을 제공합니다.
햅틱 스레드와 핸들 스레드 컴포넌트는 각각의 디바이스와의 통신을 장치와의 통신을 스레드 안전 비동기 통신 루프에서 처리합니다. 또한 햅틱 스레드는 Inverse3를 제어하기 위한 여러 가지 메서드를 제공합니다. 또한 패키지는 다음을 자동으로 변환합니다. Unity의 좌표계와 Inverse3의 좌표계 사이를 자동으로 변환합니다.
참고 이 패키지는 Inverse3의 개발을 더욱 간소화하기 위해 지속적으로 개발 중입니다. 궁금한 점이나 요청 사항이 있으면 문의해 주세요.
Haply 하드웨어 API 패키지 설치
HardwareAPI Unity 패키지는 다음을 통해 배포됩니다. 범위 지정 레지스트리 기능을 통해 배포됩니다. 이 섹션에서는 커스텀 레지스트리를 정의하는 데 필요한 단계를 다룹니다. 레지스트리를 정의하고 새 프로젝트에 HardwareAPI 패키지를 추가하는 단계를 설명합니다.
-
프로젝트를 연 상태에서 Unity 툴바에서 편집 > 프로젝트 설정 > 패키지 관리자로 이동한 다음 툴바의 패키지 관리자 창에서 범위 지정 레지스트리 섹션 아래의 더하기 버튼을 누르고 다음을 추가합니다:
- 이름:
Haply Robotics
- URL:
https://unitypackages.haply.co
- 범위:
co.haply
또는 프로젝트 매니페스트 파일을 직접 편집할 수도 있습니다. 프로젝트 매니페스트 파일을 직접 편집할 수도 있습니다.
Unity 범위 지정 레지스트리에 대한 자세한 내용은 여기를 참조하세요: docs.unity3d.com - 이름:
-
Unity 툴바를 사용하여 창 > 패키지 관리자로 이동합니다.
-
상태 표시줄에서 추가 + 버튼을 클릭하고 이름으로 패키지 추가를 선택합니다.
-
입력
co.haply.hardwareapi
로 이름 을 클릭하고 추가.
성공하면 패키지 관리자는 다음 정보를 표시해야 합니다.
시작하기
인버스 제어3
-
씬 아래에 빈 게임 오브젝트를 생성하고 이름을 햅틱 스레드로 지정한 다음 인스펙터에서 햅틱 스레드 컴포넌트를 추가합니다. Thread 컴포넌트를 추가합니다.
-
햅틱 스레드에서 디바이스 주소 드롭다운을 사용하여 번호판의 이름과 일치하는 를 선택합니다.
-
씬에 구를 추가하고 이름을 커서로 지정한 다음 EE 아바타의 햅틱 스레드에 붙입니다. 이제 플레이 모드로 들어가면 구가 커서를 따라 움직이면서 Inverse3의 커서를 따라 이동하며 위치와 속도는 인스펙터 창에서 계속 업데이트됩니다.
-
다음 코드를 사용하여 새 C# 스크립트를 생성한 다음, 동일한 게임 오브젝트에 첨부합니다. 햅틱 스레드에 첨부합니다:
using Haply.HardwareAPI.Unity;
using UnityEngine;
public class HapticController : MonoBehaviour
{
[Range(-2, 2)]
public float forceX;
[Range(-2, 2)]
public float forceY;
[Range(-2, 2)]
public float forceZ;
private void Awake()
{
var hapticThread = GetComponent<HapticThread>();
hapticThread.onInitialized.AddListener(() => hapticThread.Run(ForceCalculation));
}
private Vector3 ForceCalculation(in Vector3 position)
{
return new Vector3(forceX, forceY, forceZ);
}
}- 그리고
Awake
메서드는 햅틱 스레드 를 호출하고 별도의 스레드에서 햅틱 계산을 시작합니다. 스레드에서 시작합니다. 그런 다음 리스너를onInitialized
이벤트가 호출되면 호출될 때 메서드를 호출하고ForceCalculation
메서드를 델리게이트 인수로 전달합니다. ForceCalculation
는 인스펙터 창에 제공된 힘 벡터를 가져와서 Inverse3.
- 그리고
-
재생 모드로 들어가면 햅틱 스레드가 인스펙터 창에서 디바이스 속도와 위치를 인스펙터 창에서 지속적으로 업데이트합니다. 디바이스 작업 공간을 탐색하고 슬라이더를 사용하여 힘 출력을 제어해 보세요.
경고: 힘을 변경할 때 Inverse3가 움직이므로 작업 공간에 있는 귀중품을 치우고 커서를 잡고 있어야 합니다. 자세한 내용은 안전한 사용 도움말을 참조하세요.
햅틱 스레드 컴포넌트는 슬라이더를 사용하여 햅틱 스레드 새로 고침 빈도를 제어할 수 있습니다. 최상의 최상의 결과를 얻으려면 1KHz 이상의 새로 고침 빈도를 사용합니다.
햅틱 스레드가 제공하는 위치는 장치의 위치 센서를 사용하여 직접 측정됩니다. 디바이스의 위치 센서를 사용하여 직접 측정합니다. 반면에 속도는 속도 추정 알고리즘을 사용하여 계산됩니다. 필터링할 필요가 없는 신호를 제공합니다. 햅틱 스레드는 또한 장치의 전원 상태, 즉 디바이스의 전원 상태, 기본 방향 및 기타 상태에 대한 정보도 제공할 수 있습니다.
핸들 사용
-
씬 아래에 빈 게임 오브젝트를 생성하고 이름을 핸들 스레드로 지정한 다음 인스펙터에서 핸들 Thread 컴포넌트를 추가합니다.
-
인스펙터에서 장치 주소 드롭다운을 사용하여 태그의 이름과 일치하는 처리 장치 태그
-
다음 트랜스폼 값을 사용하여 커서의 자식으로 큐브를 추가합니다:
- 위치 :
0, 0, -1
- 회전 :
0, 0, 0
- 스케일 :
0.5, 0.5, 2
- 위치 :
-
핸들 스레드의 아바타 프로퍼티에 커서를 붙입니다.
-
재생 모드로 들어가면 핸들 스레드가 인스펙터 창에서 디바이스 방향을 계속 업데이트합니다. 인스펙터 창에서 핸들을 움직이면 커서가 회전합니다.
이렇게 하면 커서의 회전은 핸들 방향으로 업데이트되고 위치는 Inverse3 이펙터 움직임에 의해 업데이트됩니다.