다음은 FAB 의 Unreal Live 링크 어그멘타 플러그인을 사용하는 프로젝트에 대한 몇 가지 지침과 예입니다.
먼저 플러그인을 받으세요! (무료)
👉 Unreal Live link Augmenta plugin
그런 다음 다양한 사용 사례와 기술을 보여주는 예제 프로젝트를 확인하세요.
Quick start
- 시뮬레이터를 다운로드 하고 포트 12000(기본값)의 Unreal 프리셋 또는 OSC V2를 사용합니다.
- Unreal 예제 프로젝트 중 하나를 시작합니다.
- Enjoy 🙂
Features overview
Augmenta 데이터는 LiveLinkAugmentaSource 에 저장됩니다 :
- AugmentaScene에는 씬 데이터가 들어 있습니다.
- AugmentaVideoOutput에는 비디오 출력 데이터가 포함됩니다.
- AugmentaObjects에는 오브젝트 데이터를 포함하며, 오브젝트 ID를 키로, AugmentaObject를 값으로 하여 TMap에 저장됩니다.
LiveLinkAugmentaSource
라이브 링크 어그멘타 소스에는 다음과 같은 파라미터가 있습니다 :
Parameter | Description |
TimeoutDuration | 이 기간 동안 업데이트되지 않은 기존 어그멘타 오브젝트는 제거됩니다. |
ApplyObjectScale | True인 경우, Augmenta 객체 바운딩 박스 크기가 피사체 트랜스폼의 배율로 사용됩니다. |
ApplyObjectHeight | True이면 피사체의 위치가 Augmenta 오브젝트 높이의 절반만큼 위로 이동합니다(즉, 바운딩 박스의 하단이 Augmenta 씬 레벨이 되도록 위로 이동합니다). |
OffsetObjectPositionOnCentroid | True이면 Augmenta 객체의 중심이 피사체 변환 위치에 사용됩니다. 그렇지 않으면 바운딩 박스 중심이 사용됩니다. 이 파라미터는 적용 오브젝트 스케일이 참인 경우에만 사용됩니다. Apply Object Scale이 False인 경우, 피사체 트랜스폼 위치는 항상 Augmenta 오브젝트의 중심이 됩니다. |
DisableSubjectsUpdate | 라이브 링크 피사체가 필요하지 않은 경우 성능을 개선하기 위해 수신된 Augmenta 데이터에서 라이브 링크 피사체의 생성 및 업데이트를 비활성화합니다. |
Usage
라이브 링크 어그멘타 소스 생성하기
- Window -> Virtual Production -> Live Link 를 클릭하여 라이브 링크 창을 엽니다.
- 라이브 링크 창에서 소스 → 라이브 링크 어그멘타 소스를 클릭하고 IP 주소, 포트, 씬 이름을 입력한 다음 Add를 클릭합니다.
Augmenta 데이터를 수신하는 경우 수신된 Augmenta 요소가 피사체 목록에 나타납니다.
라이브 링크 플러그인의 어그멘타 데이터를 사용하는 방법에는 두 가지가 있습니다.
- 라이브 링크 subjects 사용(코드 및 수동 할당 없음)
- AugmentaManager(C++ 또는 블루프린트) 사용
1. 라이브 링크 Subjects 사용
이것은 표준 라이브 링크 사용 방법입니다. Augmenta 요소(장면, 비디오 출력 및 오브젝트)는 트랜스폼 역할이 있는 라이브 링크 피사체로 노출됩니다.
이러한 피사체를 사용하여 씬의 액터의 트랜스폼을 LiveLinkComponentController를 통해 제어할 수 있습니다.
👉
Unreal Augmenta examples project 의 라LiveLinkAugmentaDemo_LiveLinkSubjects 레벨에서 사용 중인 것을 확인할 수 있습니다.
2. Augmenta Manager 사용
어그멘타 매니저는 라이브 링크 소스의 전체 어그멘타 데이터를 C++ 또는 블루프린트에 노출하여 런타임에 오브젝트를 스폰하거나 더 고급 어그멘타 데이터를 사용하는 등의 고급 용도로 사용할 수 있습니다. 또한, 어그멘타 매니저는 어그멘타 이벤트를 라이브 링크 소스 스레드에서 게임 스레드(블루프린트의 경우)로 전송합니다.
어그멘타 매니저의 파라미터는 아래에 설명되어 있습니다.
Parameter | Description |
LiveLinkPreset | 시작 시 로드할 라이브 링크 프리셋. 기존에 로드된 라이브 링크 프리셋을 대체하지 않으려면 이 파라미터를 비워둘 수 있습니다. |
SceneName | 연결할 라이브 링크 어그멘타 소스의 씬 이름입니다. |
SourceSearchDelay | 매니저가 라이브 링크 소스에 연결되어 있지 않은 한 각 소스 검색 사이의 지연 시간입니다. |
IsConnected | 읽기 전용이며, 매니저가 라이브 링크 소스에 연결되어 있는 경우 참입니다. |
EventQueueCapacityWarningThreshold | 경고가 발행되는 이벤트 수 임계값(이벤트 대기열 용량의 백분율)을 초과하는 이벤트 수 임계값입니다. 이벤트 큐 용량에 도달하면 라이브 링크 소스가 관리자가 전파할 수 있는 속도보다 빠르게 메시지를 수신한다는 의미입니다. 이는 Augmenta 데이터 속도가 너무 높거나 게임 프레임 속도가 너무 낮은 경우에 발생할 수 있습니다. 이 경우 라이브 링크 소스에서 들어오는 이벤트를 관리자가 놓칠 수 있습니다. 현재 이벤트 대기열의 용량은 2047개입니다. 즉, 게임의 모든 프레임 동안 2047개 이상의 증강 메시지를 수신해서는 안 됩니다. 이 수치는 LiveLinkAugmentaManager.h 파일에서 수동으로 늘릴 수 있습니다. |
어그멘타 매니저의 노출된 메서드는 아래와 같습니다.
Method | Description |
GetAugmentaScene | 어그멘타 씬의 사본을 반환합니다. |
GetAugmentaVideoOutput | Augmenta 비디오 출력의 사본을 반환합니다. |
GetAugmentaObjects | Augmenta 오브젝트 맵의 사본을 반환합니다. |
GetAugmentaObjectById | 특정 ID가 있는 Augmenta 오브젝트의 사본을 반환합니다(존재하는 경우). |
GetAugmentaObjectsCount | 현재 Augmenta 오브젝트 수를 반환합니다. |
Augmenta 매니저에 노출되는 이벤트는 다음과 같습니다.
Event | Description |
OnAugmentaSceneUpdated | 어그멘타 씬이 업데이트될 때 발생합니다. |
OnAugmentaVideoOutputUpdated | 어그멘타 비디오 출력이 업데이트될 때 발생합니다. |
OnAugmentaObjectEntered | 새 Augmenta 오브젝트가 씬에 들어올 때 발생합니다. |
OnAugmentaObjectUpdated | 어그멘타 오브젝트가 업데이트될 때 발생합니다. |
OnAugmentaObjectLeft | 어그멘타 오브젝트가 씬을 떠날 때 발생합니다. |
OnAugmentaSourceDestroyed | 이 매니저가 연결된 어그멘타 소스가 소멸될 때 발생합니다. |
👉
Unreal Augmenta examples project 의 LiveLinkAugmentaDemo_AugmentaManager 레벨에서 사용 중인 것을 확인할 수 있습니다.
이 레벨에서는 Augmenta 매니저에서 파생된 블루프린트가 씬에 추가되어 라이브 링크 프리셋을 로드하고 커스텀 AugmentaVisualizer 블루프린트가 매니저 이벤트에 연결하여 Augmenta 씬, 비디오 출력 및 오브젝트에 대한 디버그 오브젝트를 표시합니다.
은 포인트가 있을때 :
Live link subjects가 아닌 Augmenta manager만 사용하는 경우, Augmenta source에서 Live link subjects 업데이트를 비활성화할 수 있습니다.
Ndisplay: Augmenta Cluster Manager 사용
AugmentaClusterManager는 기존 AugmentaManager에 바인딩하여 클러스터 이벤트를 통해 nDisplay 클러스터를 통해 AugmentaManager의 이벤트를 전송하는 C++ 클래스입니다. 이를 통해 동기화된 방식으로 클러스터를 통해 Augmenta 이벤트를 전파할 수 있습니다. 이 프레임워크는 아래 다이어그램에 설명되어 있습니다.
👉
Unreal Augmenta examples project 의 LiveLinkAugmentaDemo_AugmentaClusterManager_nDisplay 레벨에서 사용 중인 것을 확인할 수 있습니다.
이 수준에서 AugmentaClusterManager는 AugmentaManager에서 들어오는 Augmenta 이벤트에서 클러스터 이벤트를 전파하고, AugmentaClusterVisualizer는 시각화 객체의 인스턴스화 및 업데이트를 위해 AugmentaClusterManager 이벤트를 수신합니다.
라이브 링크 Augmenta 클러스터 매니저에는 다음과 같은 파라미터가 있습니다 :
Parameter | Description |
AugmentaManager | 이 클러스터 매니저를 연결할 Augmenta 매니저. |
UseBinaryClusterEvents | True이면 바이너리 클러스터 이벤트를 사용하여 Augmenta 이벤트가 클러스터에 전파되고, 그렇지 않으면 json 클러스터 이벤트가 사용됩니다. 바이너리 클러스터 이벤트는 데이터 처리량과 지연 시간에 더 좋습니다. |
BinaryEventIdOffset | 바이너리 클러스터 이벤트는 고유 ID(정수)로 식별됩니다. 서로 다른 바이너리 클러스터 이벤트가 동일한 ID를 공유하면 해석 문제와 잠재적인 충돌이 발생할 수 있습니다. 클러스터 관리자는 기본적으로 0에서 5까지의 ID를 사용하지만, 이 매개변수를 사용하여 다른 이벤트 ID와 겹치지 않도록 오프셋할 수 있습니다. |
SendReducedObjectData | True인 경우, 성능 향상을 위해 Augmenta 오브젝트의 변환, id 및 연령 데이터만 클러스터 이벤트를 통해 전송됩니다. 이 옵션은 json 클러스터 이벤트를 사용할 때만 작동합니다. |
라이브 링크 프리셋 생성 및 로드 (Creating and loading Live Link presets)
라이브 링크 사전 설정은 라이브 링크 창에서 사전 설정 및 다른 이름으로 저장을 클릭하여 만들 수 있습니다.
이렇게 하면 라이브 링크 소스 구성을 저장하고 런타임에 다시 로드할 수 있습니다. 이렇게 하려면 Project Settings -> Live Link 에서 프로젝트 시작 시 로드할 기본 프리셋을 지정할 수 있습니다.
또는 Augmenta manager를 사용하는 경우, Augmenta manager에서 직접 Live Link preset을 로드하도록 지정할 수 있습니다. 같은 레벨에서 여러 개의 Augmenta manager를 사용하는 경우, 그 중 하나만 Live Link preset을 로드하도록 지정해야 합니다.