레거시 Ready Player Me 아바타 통합
원칙
이 애드온은 Ready Player Me 하프 바디 아바타 통합을 가능하게 합니다.
풀 바디 아바타에 대한 적응은 아직 추가되지 않았지만, 필요하다면 코드를 쉽게 수정하여 지원할 수 있습니다.

기능
아바타 애드온 호환성
이 애드온은 아바타 애드온과 호환됩니다.
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에 아바타를 표시하려면 HideRPMHands
및 OptimizeAvatarRenderers
옵션만 선택하면 충분합니다.
캐시 시스템
동일한 아바타가 씬 내에서 여러 번 사용될 경우, 이 애드온은 중복 다운로드를 방지하는 캐시 시스템을 제공합니다.
동일한 아바타를 다시 다운로드하려 할 때, 이미 다운로드된 아바타가 존재한다면 그것의 복사본을 인스턴스화합니다.
만약 첫 번째 다운로드가 아직 완료되지 않았다면, 두 번째는 최대 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: 첫 릴리즈