This document is about: FUSION 2
SWITCH TO

레거시 아바타

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

이 아바타 애드온은 아바타 관련 기능을 지원하기 위한 공통 기반과 사용자가 자신만의 아바타를 커스터마이징할 수 있는 간단한 아바타 시스템을 제공합니다.

아바타

AvatarRepresentation 클래스는 다음과 같은 기능을 제공합니다:

  • 아바타의 이름 또는 URL이 포함된 UserInfo 변경 구독
  • 주어진 URL에 적합한 아바타 시스템 선택
  • LOD(자세한 내용은 "LOD 지원" 참고) 지원
  • IAvatar 인터페이스를 통한 아바타의 공통 속성 정의 (색상, 헤어 등)
  • NetworkRig 게임 오브젝트의 자식 오브젝트 중 IAvatarRepresentationListener를 구현한 오브젝트 및, RigInfo 시스템이 구성된 경우 HardwareRig 자식들에게도 아바타 로딩 완료 이벤트 브로드캐스트

LOD 지원

AvatarRepresentation와 같은 계층에 LODGroup을 추가할 경우 다음 기능이 제공됩니다:

  • 아바타 시스템이 동적으로 생성한 렌더러를 LODGroup에 추가 및 제거
  • 아바타가 로딩 중이거나 URL이 잘못된 경우, 높은 수준의 LOD를 표시 (loadingMode에 따라, 기본은 원격 사용자에만 적용)
  • IgnoreDistance 메서드를 통해 LODGroup 활성화 여부 제어

아바타 표현 리스너

애드온은 아바타 로딩 시 반응할 수 있는 IAvatarRepresentationListener를 구현한 여러 컴포넌트를 제공합니다.

로컬 아바타 컬링

로컬 아바타 컬링 시스템은 로컬 사용자에게 자신의 아바타를 숨기기 위한 시스템입니다.
이를 위해 하드웨어 리그에 저장된 카메라의 컬링 마스크를 변경하여, 특정 레이어를 숨기고 이 레이어를 로컬 사용자에게 연결된 아바타에 적용합니다.

로컬 아바타 컬링을 위해서는 HardwareRig 게임 오브젝트에 LocalAvatarCulling 스크립트를 추가해야 합니다.
기능을 활성화하려면 RigInfo 시스템이 필요하며 다음 구성이 필요합니다:

  • NetworkRunner 오브젝트에 RigInfo 추가
  • NetworkRig 오브젝트 및 HardwareRig 오브젝트 각각에 RigInfoRegister 추가

손 표현 관리자

NetworkHandRepresentationManagerHardwareHandRepresentationManager는 손 표현의 온라인 및 오프라인 상태를 관리하기 위한 선택적 컴포넌트입니다.

이들의 주요 목적은 아바타의 피부색을 기반으로 손을 색칠하는 기능을 제공하는 것입니다.
또한, 연결 상태, 아바타 시스템 내 손 구성 여부 등에 따라 손의 외형을 제어할 수 있는 다양한 옵션을 제공합니다.

하드웨어 손에는 장식 시스템도 있으며, 예를 들어 시계와 같은 일부 오프라인 손 구성 요소가 네트워크 손의 보간 대상에 따라 움직이도록 할 수 있습니다.
이 시스템은 네트워크 손이 표면에 막혀 움직이지 못할 때 유용합니다.

로우 폴리 심플 아바타

LowPolySimpleAvatar는 사용자가 선택한 아바타에 따라 LODGroup에서 사용할 로우 폴리 아바타를 구성하는 역할을 합니다.
(간단한 아바타 모델 또는 Ready Player Me 모델을 사용할 수 있음)

이 클래스는 AvatarRepresentationOnRepresentationAvailable 콜백을 사용하여 다음 작업을 수행합니다:

  • 선택한 아바타에 따라 로우 폴리 아바타의 신체, 머리카락, 의상 색상 재질 구성
  • 간단한 아바타 모델일 경우, 해당 모델에 맞는 머리카락 LOD 메시를 구성

간단한 아바타

Fusion Industries Addon Simple avatar

이 애드온에는 사용자가 자신의 아바타를 구성하는 다양한 매개변수(피부색, 의상 메시, 머리카락 재질 등)를 선택할 수 있는 간단한 아바타 시스템이 포함되어 있습니다.

SimpleAvatar 클래스는 다음 기능을 제공합니다:

  • 새로운 "simple avatar" URL을 통해 아바타 변경
  • 무작위 "simple avatar" 모델 생성
  • 특정 아바타 매개변수 구성 (머리카락, 옷, 피부 등)
  • 눈과 입 애니메이션

또한 새로운 simple avatar가 로드되면 AvatarRepresentation에게 RepresentationAvailable 메서드를 통해 알립니다.

데모 씬은 Assets\Photon\FusionAddons\Avatar\Demo\Scenes\ 폴더에 있습니다.
간단한 아바타를 테스트하려면 AvatarLODSimpleAvatar 씬을 열어 보세요.
사용자가 생성되면 SimpleAvatarNetworkRig(Clone) 오브젝트를 선택하고 UserInfoAvatarURL 속성을 변경하세요.
예시 URL: simpleavatar://?hairMesh=1&skinMat=2&clothMat=0&hairMat=0&clothMesh=1

눈 움직임 시뮬레이션

아바타가 고정된 눈동자를 표시하지 않도록, 눈 움직임 시뮬레이션 시스템을 사용할 수 있습니다.
이 시스템은 눈(오브젝트)을 GazeTarget을 가진 다른 오브젝트를 추적하도록 움직입니다.

구현 방법:

  • 씬에 GazeInfo 컴포넌트가 있어야 하며, 이는 백그라운드 스레드에서 새로운 시선 타깃을 주기적으로 계산합니다.
  • 아바타 오브젝트에는 Gazer 컴포넌트를 추가하고, gazingTransforms에 눈 오브젝트를 등록해야 합니다. (gazingTransformOffsets를 통해 회전 오프셋을 추가할 수도 있습니다)
  • 성능 향상을 위해, eyeRendererVisibility 필드에 RendererVisible을 제공할 수 있습니다. 아바타 렌더러가 보이지 않으면 눈 시뮬레이션은 실행되지 않습니다.

Oculus 입 모양 동기화

일부 아바타 시스템은 고급 입 모양 동기화가 필요할 수 있습니다. 이를 위해 이 아바타 애드온에는 Oculus Lipsync 라이브러리 버전이 포함되어 있으며, Oculus Audio SDK 라이선스(https://developer.oculus.com/licenses/audio-3.3/) / Meta Platform Technologies SDK 라이선스(https://developer.oculus.com/licenses/oculussdk/)에 따라 제공됩니다.
라이브러리는 Oculus Integration 패키지에 포함되어 있습니다.

의존성

  • Text Mesh Pro (사용자 이름표 표시용)
  • Photon Voice SDK

지원되는 토폴로지

  • 공유 모드

변경 로그

  • 버전 2.0.3: 정확한 타입의 무작위 아바타 추가
  • 버전 2.0.2: 무작위 아바타 로딩 지원
  • 버전 2.0.1: 손 메시 애니메이션 제거 (하드웨어 손으로 이동됨)
  • 버전 2.0.0: Fusion 2.0 지원
  • 버전 1.0.2: UserName 및 AvatarURL에 NetworkString 사용
  • 버전 1.0.1: LookAtCamera의 네임스페이스 수정
  • 버전 1.0.0: 최초 릴리즈
Back to top