visionOS 헬퍼

Fusion XR 프로토타이핑 애드온

이 모듈은 유니티의 Polyspatial로 비전 OS 애플리케이션을 구축하고 크로스 플랫폼으로 만드는 데 도움이 되는 몇 가지 컴포넌트를 제공합니다. 특히 XRHands 애드온에 의존하여 Polyspatial unbounded 모드에서 적절한 손 트래킹 동기화 및 제스처 감지를 제공합니다.

스페이스 터치

비전 OS 플랫폼은 콜라이더를 가진 물체와 상호 작용하기 위한 특정 제스처를 제공합니다. 터치, 핀치, 간접 핀치. 유니티의 Polyspatial은 이러한 움직임을 노출하고 애드온의 SpatialTouchHandler 클래스는 이러한 상호작용을 감지합니다.

SpatialTouchHandler가 씬에 있고 ISpatialTouchListener를 구현하는 컴포넌트로 상호 작용한 객체는 관련 콜백을 수신합니다.

공간 터치로 잡기

SpatialGrabberNetworkSpatialGrabber는 XRS 공유 애드온에 사용된 것과 동일한 컴포넌트를 사용하여 잡을 수 있도록 HardwareHand/NetworkHand 쌍에 얽매이지 않고 추가 "손"을 사용할 수 있도록 합니다.

언바운딩 볼륨 모드와 멀리서도 잡을 수 있는 바운딩 모드, 어쨌든 일반적인 손이 없는 바운딩 모드 모두에서 사용할 수 있습니다.

일반 그립은 손을 물체에 올려놓을 때 손 위치를 이용하는 하드웨어 리그 그래버나 비전OS 공간 그래버를 사용할 수 있습니다. SpatialTouchHandler 컴포넌트에서 hardwareRigGrabberDisabled는 다음 두 가지 옵션 중 하나를 선택할 수 있습니다:

  • hardwareRigGrabberDisabledtrue(기본값)로 설정하면 손으로 잡는 물체의 움직임이 더 부드러워집니다. visionOS에서는 손뼈가 공간 터치 위치보다 덜 자주 새로 고쳐지기 때문에 손동작을 기준으로 사용하면 물체를 잡습니다.
  • hardwareRigGrabberDisabledtrue(기본값)로 설정하면 잡힌 객체가 손과 동기 상태를 유지하게 됩니다. 그렇지 않으면 잡힌 객체의 움직임이 실제 손의 위치가 아니라 공간 터치 API 결과를 기반으로 하기 때문에 위치 차이가 거의 없습니다. 손 모델이 표시되면 관련이 있을 수 있습니다.

볼륨 모드 동기화

경계 및 경계 볼륨 모드를 모두 처리하는 애플리케이션의 경우, 예를 들어 경계 모드에 있는 동안 아바타가 사라지도록 선택한 모드를 원격 사용자에게 경고하는 것이 중요합니다.

쉽게 하기 위해 VisionOsVolumeCameraModeSync는 네트워크 리그에 배치된 경우 로컬 사용자의 모드를 동기화합니다. 또한 hideAllChildRenderersInBoundedVolume 옵션을 사용하여 경계 모드에 있는 동안 모든 사용자 렌더러를 자동으로 쉽게 숨길 수 있습니다.

볼륨 모드 변경 처리

VolumeCameraConfigurationSelector 클래스는 볼륨 모드를 변경할 수 있는 편리한 방법을 제공합니다. 이 컴포넌트로 개체를 활성화하면 Polyspatial의 VolumeCamera 볼륨 구성이 이미 동일하지 않은 경우 volumeConfiguration으로 자동으로 변경됩니다. 또한 일부 게임 객체를 활성화/비활성화할 수 있어 볼륨 모드 특정 게임 객체로 쉽게 가질 수 있습니다.

크로스 플랫폼 컴포넌트

공간 잡기를 지원하기 위해 향상된 잡기 동작과 XR Hands 외에도 일부 도구는 플랫폼 간 경험을 구축하는 데 도움이 됩니다.

터치

SpatialTouchableISpatialTouchListenerITouchable을 구현하여 공간적 터치와 일반적인 터치에 모두 반응할 수 있도록 모든 플랫폼에서 작동합니다.

SpatialButtonSpatialTouchable의 확장 버전으로 토글 버튼이나 라디오 버튼으로 사용할 수 있습니다.

UI

모든 플랫폼에서 비전 OS 윈도우와 유사한 동작을 수행하기 위해 ConstrainedGrabbable 클래스를 사용하여 비전 OS에서 윈도우를 이동하는 것과 유사한 방식으로 잡을 수 있는 윈도우를 이동할 수 있습니다(적절한 위치를 확인하면서, 잡힌 상태에서 사용자를 "바라봅니다").

LineMesh

현재 LineRenderer 컴포넌트는는 Polyspatial과 호환되지 않습니다. 포함된 LineMesh 컴포넌트는 메시를 생성하는 간단한 대안을 제공합니다.

저장된 Point에는 메시 꼭짓점 색상에 영향을 주는 color 속성이 포함되어 있습니다. Polyspatial과 호환되는 샘플 셰이더 LineSG는 이러한 꼭짓점 색상 정보를 사용하여 메시를 렌더링 합니다.

일부 컴포넌트가 라인렌더에 의존하는 경우 LineRendererToLineMesh는 라인렌더 정보를 자동으로 LineMesh에게 공급하는 방법을 제공합니다.

자동 손 구성

XRHandsSync 애드온의 핸드를 사용하는 경우 VisionOSHandsConfiguration을 사용하면 Polyspatial 비전 OS 플랫폼의 핸드를 빠르게 자동으로 구성할 수 있습니다.

스크립트:

  • FingerDrivenControllerInput에서 손가락 감지에 의해 트리거 된 그립이 짧은 시간 동안 감지되지 않더라도 계속 유지됩니다
  • LineMesh를 사용하여 RayBeamer 컴포넌트에서 사용하는 빔을 표시합니다
  • Polyspatial 핸들링된 콜라이더에서 분리해야 하는 특정 레이어를 손에 들고 있는 모든 콜라이더에 적용하여 그립/터치하는 충돌기가 비전 OS에 의해 공간적으로 닿지 않도록 합니다(원치 않을 수도 있음)
  • 손이 감지되지 않을 경우 손 표현 컴포넌트가 다시 컨트롤러로 떨어지려고 하지 않도록 보장합니다. visionOS에는 손 컨트롤러가 없기 때문입니다

의존성

의존성
  • XRShared
  • VoiceHelpers
  • VisionOSHelpers
  • ConnectionManager

다운로드

이 애드온의 최신 버전은 XR 애드온 프로젝트에 포함되어 있습니다.

지원하는 토폴로지

  • 공유 모드

변경 내역

  • 버전 2.0.4: XRShared 2.0.2과의 호환성
  • 버전 2.0.3:
    • LineMesh 점이 나타날 수 없는 경우 수정(일반적으로 경로에서 부적절하게 계산됨)
    • 네임스페이스 및 주석 추가
  • 버전 2.0.2: SpatialTouchHandler에서 직접 핀치 그립 지원(hardwareRigGrabberDisabled 옵션, 기본적으로 활성화) 및 다중 공간 그립
  • 버전 2.0.1: 정의 검사 추가(Fusion이 아직 설치되지 않은 경우 처리)
  • 버전 2.0.0: 최초 릴리즈
Back to top