This document is about: FUSION 2
SWITCH TO

레거시 Ready Player Me 아바타 통합

Topology
SHARED AUTHORITY
Fusion Industries 프로토타이핑 애드온

원칙

이 애드온은 Ready Player Me 하프 바디 아바타 통합을 가능하게 합니다.

풀 바디 아바타에 대한 적응은 아직 추가되지 않았지만, 필요하다면 코드를 쉽게 수정하여 지원할 수 있습니다.

Fusion Industries Addon ReadyPlayerMe avatar

기능

아바타 애드온 호환성

이 애드온은 아바타 애드온과 호환됩니다.

RPMAvatarLoader의 상위 계층에 AvatarRepresentation 컴포넌트가 존재하는 한, 이 호환성으로 다음과 같은 기능이 가능합니다:

  • 아바타가 로드되었음을 리스너에게 알림
  • 로드된 ReadyPlayerMe 아바타를 LOD 그룹에 추가

RPMAvatarLoader는 단독으로도 사용 가능하므로 UI나 아바타 선택 등에 유용합니다.

아바타 수정

이 애드온은 ReadyPlayerMe 아바타 로딩 후 몇 가지 수정을 적용합니다. 모든 수정은 선택 사항이며, 어떤 기능을 적용할지는 RPMAvatarLoader 클래스의 avatarOptionalFeatures 마스크로 선택할 수 있습니다:

  • HideRPMHands: 선택 시 ReadyPlayerMe 손 모델이 숨겨집니다. VRShared 샘플과 같이 다른 손 모델을 사용하는 경우에 유용합니다.
  • OptimizeAvatarRenderers: URP 환경에서 아바타를 잘 표시하고 성능을 높이기 위해 그림자 제거 등 렌더링 최적화를 적용합니다.
  • DetectColorForAvatarDescription: 아바타 텍스처를 분석하여 RPMAvatarInfo.AvatarDescription에 색상 정보를 포함시킵니다. 손 색상을 피부 톤에 맞게 변경하거나 헤어 및 의류 색상을 활용해 간략한 LOD 표현을 커스터마이징하는 데 사용됩니다.
  • EyeMovementSimulation: 아바타 눈동자를 시뮬레이션 시스템과 연결하여 GazeTarget 컴포넌트를 가진 오브젝트를 바라보게 합니다.
  • LipSynchronisation: 얼굴 메쉬 블렌드셰이프를 Oculus 립싱크에 연결합니다. 단, macOS 및 WebGL에서는 불가능하며 단순한 음성 레벨 감지 시스템으로 대체됩니다.
  • LipSyncWeightPonderation: Oculus 립싱크 블렌드셰이프 가중치가 ReadyPlayerMe 아바타 메쉬에 너무 높게 적용되므로, LateUpdate에서 값을 보정합니다 (또는 이 방법을 사용할 수도 있음).
  • EyeBlinking: Ready Player Me에서 제공하는 자연스러운 눈 깜빡임 스크립트를 아바타에 적용합니다.
  • OnLoadedSoundEffect: 아바타 다운로드가 완료되면 SoundManager를 통해 사운드를 재생합니다.
  • DownloadThrottling: PerformanceManager를 사용해 ReadyPlayerMe 아바타 다운로드가 동시에 발생하는 것을 방지하여 네트워크 통신 문제를 예방합니다.

기본값으로 모든 옵션이 선택되어 있으며 (AllOptions), 단순 UI에 아바타를 표시하려면 HideRPMHandsOptimizeAvatarRenderers 옵션만 선택하면 충분합니다.

캐시 시스템

동일한 아바타가 씬 내에서 여러 번 사용될 경우, 이 애드온은 중복 다운로드를 방지하는 캐시 시스템을 제공합니다.

동일한 아바타를 다시 다운로드하려 할 때, 이미 다운로드된 아바타가 존재한다면 그것의 복사본을 인스턴스화합니다.

만약 첫 번째 다운로드가 아직 완료되지 않았다면, 두 번째는 최대 maxSameDownloadWaitTime (기본 10초) 동안 대기합니다.

ReadyPlayerMe는 동일한 URL로 두 번 다운로드 시 게임 오브젝트를 제거할 수 있으므로, 캐시 시스템은 이를 방지합니다. 단, 두 개의 다운로드가 동시에 발생하고 첫 번째가 maxSameDownloadWaitTime 이상 걸릴 경우 두 번째 다운로드가 시작되어 첫 번째 다운로드 완료 시 아바타가 삭제될 수 있습니다. 이 시나리오는 극히 드물며(많은 아바타 중복이 있는 혼잡한 씬 등), 이를 방지하려면 항상 아바타 복사본을 생성하도록 RPMAvatarLoader 컴포넌트의 copyRPMLoaderAvatar를 체크하세요 (기본적으로 해제됨).

RPMAvatarLibrary

씬에 미리 다운로드된 아바타 프리팹 라이브러리를 추가할 수 있습니다.
RPMAvatarLibrary 컴포넌트는 프리팹과 가상의 URL 간 매핑을 포함하며, RPMAvatarLoader가 해당 URL로 로드 요청 시 프리팹을 사용합니다.

최신 ReadyPlayerMe 아바타의 경우 피부 톤과 같은 메타데이터 입력이 가능하나, 입력하지 않아도 자동으로 메타데이터를 감지합니다.

이 라이브러리는 실제 다운로드 없이 아바타 캐시에 프리팹을 미리 채워 넣습니다.

설치

이 애드온은 ReadyPlayerMe UPM 패키지가 필요합니다.
ReadyPlayerMe 문서에 따라 다음 Git 패키지를 설치하세요:
https://github.com/readyplayerme/rpm-unity-sdk-core.git

테스트된 Ready Player Me 코어 패키지 버전은 3.3 (com.readyplayerme.core)입니다.

종속성

  • Avatar 애드온
  • Feedback 애드온
  • Ready Player Me 3.3
  • Oculus.Lipsync (Avatar 애드온에 포함된 버전)

데모

데모 씬은 Assets\Photon\FusionAddons\RPMAvatar\Demo\Scenes\ 폴더에 있습니다.

RPMAvatarLoading 씬은 여러 ReadyPlayerMe 아바타를 로드합니다:

  • ReadyPlayerMe 온라인 에디터에서 제공된 URL을 사용하는 아바타와 UserInfo 컴포넌트를 통해 네트워크에서 아바타 URL을 동기화하는 방식
  • 동일한 아바타를 캐시 시스템 테스트용으로 재사용
  • Fusion 네트워크 오브젝트와 무관한 오프라인 아바타 (UI 등에 사용 가능)
  • 커스텀 아바타 URL과 RPMAvatarLibrary를 사용해 로드된 프리팹 아바타

RPMAvatar 씬은 RPMNetworkRig 프리팹을 사용합니다. 이 프리팹은 다음 기능을 포함합니다:

  • 단순 아바타 URL과 RPM URL 모두 호환
  • 로우 폴리 대체 모델 제공, 피부색/옷/머리 색상으로 컬러 반영
  • 아바타 피부색을 반영하는 손 모델 포함
  • 마지막 LOD 레벨에서 빌보드 렌더링 제공
  • EyeMovementSimulation 기능 시연: 아바타의 눈이 GazeTarget 컴포넌트를 가진 Target 오브젝트를 따라가며, 서로를 바라보게 됩니다.

지원되는 토폴로지

  • 공유 모드

변경 로그

  • 버전 2.0.2: 필수 플랫폼에서만 간단 립싱크 옵션 표시 + 랜덤 아바타 기능 추가
  • 버전 2.0.1: 랜덤 아바타 로딩 지원 + 기본 아바타 높이 수정
  • 버전 2.0.0: Fusion 2.0 지원
  • 버전 1.0.1: V3 아바타의 머리 및 옷 색상 감지 수정
  • 버전 1.0.0: 첫 릴리즈
Back to top