Meta Camera Integration Photo

Level
BEGINNER

개요

Meta Camera API Integration Photo 샘플은 전체 소스 코드와 함께 제공되며, Fusion을 활용해 Meta Quest 카메라로 촬영한 사진을 원격 사용자와 공유하는 방법을 보여줍니다.

각 사용자는 시계 버튼(또는 컨트롤러의 주요 버튼)을 눌러 Meta Quest 카메라의 스냅샷을 찍을 수 있습니다. 이 시점에서 사진은 모든 사용자에게 생성되며, 전송이 완료되면 몇 초 후 원격 사용자에게 표시됩니다.

비디오 스트리밍 필요?

Meta 카메라에서 비디오를 스트리밍 하는 샘플은 여기에서 Circle 회원 전용으로 제공됩니다.

기술 정보

  • 본 샘플은 Shared Authority 토폴로지를 사용합니다.

  • Unity 6, Fusion 2로 개발되었으며 다음 패키지에서 테스트되었습니다:

    • Meta XR Core SDK 76.0.1 : com.meta.xr.sdk.core
    • Unity OpenXR Meta 2.1.1 : com.unity.xr.meta-openxr
  • 헤드셋 펌웨어 버전: v74 & v76

  • 컴파일: 프로젝트 설정에서 XR Plug-in Management/OpenXR/Meta XR Subsampled Layout 옵션을 비활성화해야 합니다. (Unity를 다시 시작하면 기본적으로 복원됨)

시작 전 준비 (Before you start)

샘플 실행 방법:

  • PhotonEngine Dashboard에서 Fusion AppId를 생성하고 Fusion 메뉴의 Real Time Settings 내 App Id Fusion 필드에 붙여 넣습니다.
  • 동일한 방법으로 Voice AppId를 생성해 App Id Voice 필드에 붙여 넣습니다.

다운로드

VersionRelease DateDownload
2.0.610월 07, 2025Fusion Meta Camera Integration Photo 2.0.6

APK 다운로드

데모 버전은 아래에서 다운로드할 수 있습니다:

폴더 구조

  • /MetaCameraIntegration: 본 샘플에 특화된 모든 요소 포함
  • /IndustriesComponents: 다른 산업 샘플과 공유되는 컴포넌트 포함
  • /Photon: Fusion 및 Photon Voice SDK 포함
  • /Photon/FusionAddons: 본 샘플에서 사용하는 Industries Addons 포함
  • /Photon/FusionAddons/FusionXRShared: VR 공유 샘플에서 제공된 리그 및 그랩 로직 포함
  • /XR: 가상현실 설정 파일 포함

아키텍처 개요

Meta Camera API Integration Photo 샘플은 VR Shared 페이지의 코드 베이스를 기반으로 하며, 리그 동기화 기능을 포함합니다.

또한 다른 Industries 샘플과 마찬가지로 확장 기능을 포함하여, 동기화된 레이, 이동 검증, 터치, 순간 이동 보정, 응시 시스템 등을 제공합니다.

사진 스트리밍은 Fusion 데이터 스트리밍 API를 기반으로 합니다.
이 API는 대규모 데이터 전송용이 아니라 실시간 SDK 특성을 고려해 대역폭 제한이 있습니다.
비디오 같은 더 빈번한 스트리밍이 필요한 경우 Photon Video SDK 사용이 적합하며, Meta Camera와 함께 사용하는 샘플은 별도 예제에서 확인할 수 있습니다.

Meta Quest 샘플

SampleSceneMetaQuestOnly 씬은 단순하며, 패스스루가 활성화되어 3D 환경은 없습니다.
사용자는 아바타로 표현되며 시계 터치스크린 또는 컨트롤러 버튼으로 스냅샷을 찍을 수 있습니다.
로컬 사용자에게는 즉시 사진이 표시되고, 원격 사용자에게는 전송 완료 후 몇 초 뒤 표시됩니다.

네트워크 연결

네트워크 연결은 Meta 빌딩 블록 [BuildingBlock] Network Manager[BuildingBlock] Auto Matchmaking이 관리합니다.

  • [BuildingBlock] Auto Matchmaking: 룸 이름과 Fusion 토폴로지(Shared 모드) 설정
  • [BuildingBlock] Network Manager: Fusion NetworkRunner 포함. UserSpawner 컴포넌트는 룸 참가 시 사용자 프리팹 생성 및 Photon Voice 연결 관리

카메라 권한

Meta Quest 카메라 접근에는 권한 요청이 필요합니다.
이는 WebCamTextureManagerPrefab 게임 오브젝트의 WebCamTextureManagerPassthroughCameraPermissions 컴포넌트가 담당합니다.
Meta에서 제공하는 Unity-PassthroughCameraAPISamples에 포함되어 있습니다.

해당 프리팹은 기본적으로 비활성화되어 있으며, Photon Voice 연결이 확립될 때 VoiceConnectionFadeManager에 의해 자동 활성화됩니다.
이는 동시에 여러 권한 요청이 실행되는 것을 방지하기 위함입니다.

사진 전송

원격 사용자에게 스냅샷을 전송하기 위해 Data Sync Helpers addon을 사용하며, Fusion SendReliableDataToPlayer API 기반으로 작동합니다.

  • 플레이어 프리팹에는 CameraPhotoSpawner 컴포넌트가 있으며, CreatePicture() 메서드로 사진 프리팹을 생성합니다.
  • 사진은 Quest 카메라 텍스처로 초기화되며, cameraPicture.SetPictureTexture() 호출 시 전송이 시작됩니다.
  • streamRatio 파라미터는 사진 해상도를 줄여 전송 시간을 단축시킵니다.
  • 과도한 전송 요청 방지를 위해, 기본적으로 5초에 한 번만 요청 가능하도록 제한이 걸려 있으며 StreamingCoolDownVisual이 피드백을 제공합니다.
  • CameraPictureStreamSynchedBehaviour를 상속하므로 원격 사용자는 OnDataProgress() 콜백으로 수신 상태를 알 수 있고, OnDataChunkReceived()는 전송 완료 시 호출됩니다.

손목 시계 상호작용

사용자는 시계 또는 컨트롤러 주요 버튼으로 스냅샷을 촬영할 수 있습니다.
시계 버튼에는 SpatialButton 컴포넌트가 있으며, WatchUIManager.TakePhoto() 메서드를 호출합니다.

각 사용자 프리팹에는 2개의 시계가 포함됩니다:

  • 컨트롤러 기반 손 모델용
  • 손가락 추적 기반 손 모델용

NetworkHandRepresentationManager는 현재 추적 모드에 따라 시계를 활성화/비활성화합니다.

카메라 해상도

왼손 아래의 파라미터 버튼을 눌러 런타임에서 Meta 카메라 해상도를 변경할 수 있습니다.

UI에는 Meta Camera API가 지원하는 해상도가 표시됩니다. 사진 해상도는 자동으로 카메라 해상도 설정과 streamRatio 값에 맞게 조정됩니다.

사용된 XR 애드온 및 Industries 애드온

빠른 3D/XR 프로토타이핑을 위해 몇 가지 무료 애드온을 제공합니다.
자세한 내용은 XR Addons를 참고하세요.

또한, Industries Circle 회원에게는 재사용 가능한 애드온의 포괄적 목록을 제공합니다.
자세한 내용은 Industries Addons를 참고하세요.

본 샘플에 사용된 애드온은 다음과 같습니다:

XRShared

XRShared addon은 Fusion 호환 XR 경험을 위한 기본 컴포넌트를 제공합니다.
플레이어 리그 동기화, 그랩, 순간 이동 같은 기능을 지원합니다.

자세한 내용은 XRShared 참고.

Voice Helpers

음성 통합을 위해 VoiceHelpers addon을 사용합니다.

자세한 내용은 VoiceHelpers Addon 참고.

Data Sync Helpers

사진을 사용자 간 동기화하기 위해 사용됩니다.

자세한 내용은 Data Sync Helpers Industries Addons 참고.

Meta 코어 통합

플레이어 손 동기화를 위해 MetaCoreIntegration addon을 사용합니다.

자세한 내용은 MetaCoreIntegration Addon 참고.

XRHands 동기화

XR Hands 동기화 addon은 XR Hands 손 상태(손가락 추적 포함)를 고효율 데이터 압축으로 동기화하는 방법을 보여줍니다.

자세한 내용은 XRHands synchronization Addon 참고.

서드파티 에셋 및 저작권

본 샘플은 여러 훌륭한 서드파티 에셋을 기반으로 구축되었습니다:

Back to top