Image without caption
👋
다음은 FABUnreal Live 링크 어그멘타 플러그인을 사용하는 프로젝트에 대한 몇 가지 지침과 예입니다.
⬇️
먼저 플러그인을 받으세요! (무료) 👉 Unreal Live link Augmenta plugin
⬇️
그런 다음 다양한 사용 사례와 기술을 보여주는 예제 프로젝트를 확인하세요.
Unreal Augmenta examples projectUnreal Augmenta examples project

Quick start

  1. 시뮬레이터를 다운로드 하고 포트 12000(기본값)의 Unreal 프리셋 또는 OSC V2를 사용합니다.
  1. Unreal 예제 프로젝트 중 하나를 시작합니다.
  1. 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 를 클릭하여 라이브 링크 창을 엽니다.
Image without caption
  • 라이브 링크 창에서 소스 → 라이브 링크 어그멘타 소스를 클릭하고 IP 주소, 포트, 씬 이름을 입력한 다음 Add를 클릭합니다.
Image without caption
Augmenta 데이터를 수신하는 경우 수신된 Augmenta 요소가 피사체 목록에 나타납니다.
Image without caption
👉
라이브 링크 플러그인의 어그멘타 데이터를 사용하는 방법에는 두 가지가 있습니다.
  • 라이브 링크 subjects 사용(코드 및 수동 할당 없음)
  • AugmentaManager(C++ 또는 블루프린트) 사용

1. 라이브 링크 Subjects 사용

이것은 표준 라이브 링크 사용 방법입니다. Augmenta 요소(장면, 비디오 출력 및 오브젝트)는 트랜스폼 역할이 있는 라이브 링크 피사체로 노출됩니다.
이러한 피사체를 사용하여 씬의 액터의 트랜스폼을 LiveLinkComponentController를 통해 제어할 수 있습니다.
Image without caption
Image without caption
👉 Unreal Augmenta examples projectUnreal 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 projectUnreal Augmenta examples project 의 LiveLinkAugmentaDemo_AugmentaManager 레벨에서 사용 중인 것을 확인할 수 있습니다.
이 레벨에서는 Augmenta 매니저에서 파생된 블루프린트가 씬에 추가되어 라이브 링크 프리셋을 로드하고 커스텀 AugmentaVisualizer 블루프린트가 매니저 이벤트에 연결하여 Augmenta 씬, 비디오 출력 및 오브젝트에 대한 디버그 오브젝트를 표시합니다.
Image without caption
은 포인트가 있을때 :
Image without caption
💡
Live link subjects가 아닌 Augmenta manager만 사용하는 경우, Augmenta source에서 Live link subjects 업데이트를 비활성화할 수 있습니다.

Ndisplay: Augmenta Cluster Manager 사용

AugmentaClusterManager는 기존 AugmentaManager에 바인딩하여 클러스터 이벤트를 통해 nDisplay 클러스터를 통해 AugmentaManager의 이벤트를 전송하는 C++ 클래스입니다. 이를 통해 동기화된 방식으로 클러스터를 통해 Augmenta 이벤트를 전파할 수 있습니다. 이 프레임워크는 아래 다이어그램에 설명되어 있습니다.
Image without caption
👉 Unreal Augmenta examples projectUnreal 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)

라이브 링크 사전 설정은 라이브 링크 창에서 사전 설정 및 다른 이름으로 저장을 클릭하여 만들 수 있습니다.
Image without caption
이렇게 하면 라이브 링크 소스 구성을 저장하고 런타임에 다시 로드할 수 있습니다. 이렇게 하려면 Project Settings -> Live Link 에서 프로젝트 시작 시 로드할 기본 프리셋을 지정할 수 있습니다.
Image without caption
또는 Augmenta manager를 사용하는 경우, Augmenta manager에서 직접 Live Link preset을 로드하도록 지정할 수 있습니다. 같은 레벨에서 여러 개의 Augmenta manager를 사용하는 경우, 그 중 하나만 Live Link preset을 로드하도록 지정해야 합니다.