라이브 링크(Live Link)는 여러 소스로부터 다양한 데이터 타입을 스트리밍하고 레벨 내 액터에 해당 데이터를 직접 적용하는 기능을 제공합니다. 이 워크플로를 향상하기 위해 언리얼 엔진은 라이브 링크 데이터를 레벨 내 액터에 적용하는 프로세스를 간소화하도록 디자인된 몇 가지 기능을 사용합니다.
라이브 링크 프리셋(Live Link Presets)은 소스 세팅을 나중에 사용할 수 있도록 저장합니다.
라이브 링크 컨트롤러 컴포넌트(LiveLink Controller Component)는 라이브 링크 컨트롤러 사용을 활성화합니다. 이는 라이브 링크 정보를 액터에 적용하는 것을 간소화하며, 이와 같은 데이터를 빠르게 수집할 수 있도록 일부 블루프린트 노드가 추가되었습니다.
라이브 링크 스켈레탈 애니메이션 컴포넌트(LiveLink Skeletal Animation Component)는 서브젝트 및 소스 정보를 라이브 링크를 업데이트할 때마다 얻어오는 OnLiveLinkUpdated 이벤트 노드를 노출하며 블루프린트를 통해 다른 여러 기능을 수행할 수 있습니다.
라이브 링크를 활성화하고 연결을 구성하는 것과 관련된 자세한 내용은 라이브 링크 플러그인 문서를 참고하세요.
언리얼 엔진 버전 4.23 이전에 라이브 링크 스켈레탈 애니메이션 컴포넌트는 라이브 링크 컴포넌트라는 이름으로 불렸습니다.
라이브 링크 프리셋
언리얼 엔진은 라이브 링크 연결(Live Link Connection) 창에서 생성된 다양한 소스에서 라이브 링크 데이터를 얻습니다. 이러한 소스는 일단 생성되면 프리셋으로 저장되어 Apply to Client 노드를 사용하여 블루프린트를 통해 액세스할 수 있습니다.
이 노드를 사용하면 애플리케이션을 실행할 때 라이브 링크 프리셋을 로드할 수 있습니다.
또한 라이브 링크 프리셋은 라이브 링크 패널에서 프리셋(Presets) 버튼을 통해 활성화하거나 프로젝트 세팅(Project Settings)에서 메뉴의 플러그인 - 라이브 링크(Plugins - Live Link) 섹션에 있는 디폴트 라이브 링크 프리셋(Default Live Link Preset)을 설정하여 활성화할 수 있습니다. 프리셋은 'LiveLink.Preset.Apply Preset=/Game/Folder/MyLiveLinkPreset.MyLiveLinkPreset'을 사용하여 명령줄을 통해서도 적용할 수 있습니다.
라이브 링크 컴포넌트
라이브 링크 스켈레탈 애니메이션 컴포넌트
컴포넌트(Components) 패널에서 라이브 링크 스켈레탈 애니메이션 컴포넌트를 액터 블루프린트에 추가하는 경우 다른 컴포넌트와 부모 관계로 이어지지 않습니다. 이때 해당 컴포넌트는 블루프린트에 배치되며 On Live Link Updated Event에 대한 액세스를 제공합니다.
On Live Link Updated 이벤트는 에디터 내부를 포함하여 컴포넌트가 업데이트될 때마다 트리거됩니다.
On Live Link Updated 노드는 틱 이벤트에 배치되지만 에디터 내에서도 실행됩니다. 예를 들어 에디터 내의 데이터를 제어해야 할 경우 이 노드를 사용할 수 있습니다.
라이브 링크 컨트롤러 컴포넌트
라이브 링크 컨트롤러 컴포넌트는 캐릭터 블루프린트 내에 배치되는 컴포넌트로, 라이브 링크 컨트롤러를 사용할 수 있게 해줍니다. 이러한 컨트롤러는 라이브 링크 서브젝트에서 자동으로 데이터를 가져와서 라이브 링크 컨트롤러를 통해 액터의 해당 컴포넌트에 적용합니다.
라이브 링크 컨트롤러 사용하기
라이브 링크 컨트롤러는 라이브 링크 데이터를 씬의 액터로 빠르게 푸시할 수 있게 해줍니다. 각 컨트롤러는 라이브 링크 서브젝트에서 데이터를 가져와서 선택한 액터에 자동으로 적용합니다. 컨트롤러는 그 역할에 따라 세 가지로 정의됩니다.
트랜스폼
카메라
라이트
각 라이브 링크 컨트롤러에 대한 자세한 내용은 아래를 참고하세요.
트랜스폼
트랜스폼 컨트롤러는 라이브 링크 서브젝트에서 트랜스폼 데이터를 빠르게 캡처하여 레벨 내 액터에 데이터를 적용합니다.
이 컨트롤러는 다음과 같은 옵션을 제공합니다.
| 세팅 | 설명 |
|---|---|
월드 트랜스폼(World Transform) | 컴포넌트의 트랜스폼을 월드 스페이스에 설정합니다. 로컬 스페이스의 경우에는 체크를 해제합니다. |
스케일 사용(Use Scale) | 라이브 링크의 스케일 데이터를 사용합니다. |
스윕(Sweep) | 루트 컴포넌트를 스윕하고 블로킹 콜리전을 체크합니다. 그 과정에서 오버랩을 트리거하고 블로킹되면 타깃을 멈추게 합니다. |
텔레포트(Teleport) | 피직스 상태를 텔레포트합니다(피직스 콜리전이 활성화되어 있는 경우).
|
카메라
카메라 컨트롤러는 카메라 세팅 및 무브먼트 데이터를 카메라 역할의 라이브 링크 서브젝트에서 레벨의 카메라 액터에 직접 적용합니다.
애니메이팅할 수 있는 카메라 세팅은 다음과 같습니다.
필드 오브 뷰(도)
종횡비(너비/높이)
초점 길이
f값으로 나타낸 카메라 조리개
카메라의 초점 거리(cm, 수동 초점에서만 작동함)
카메라의 투영 모드(원근, 직교 등)
라이트
라이트 컨트롤러는 라이트 세팅을 라이트 역할의 라이브 링크 서브젝트에서 레벨의 라이트 액터에 직접 적용합니다.
애니메이팅할 수 있는 라이트 세팅은 다음과 같습니다.
색온도(켈빈)
총 에너지(럭스)
필터 컬러
내부 원뿔 각도(스포트라이트의 경우, 도)
외부 원뿔 각도(스포트라이트의 경우, 도)
라이트 표시 인플루언스(포인트 라이트 및 스포트라이트의 경우)
라이트 소스 셰이프의 소프트 반경(포인트 라이트 및 스포트 라이트의 경우)
라이트 소스 셰이프의 길이(포인트 라이트 및 스포트 라이트의 경우)
외부 플러그인을 사용하여 컨트롤러를 추가하거나 생성할 수 있습니다. 외부 플러그인에 대한 자세한 내용은 플러그인 문서를 참고하세요.
액터에 컨트롤러 적용하기
라이브 링크 컨트롤러를 적용하려면 먼저 라이브 링크 컨트롤러 컴포넌트를 액터에 추가해야 합니다.
이 섹션에서는 라이브 링크 소스에 연결되어 있어야 합니다. 소스 연결에 대한 자세한 내용은 라이브 링크 플러그인 문서를 참고하세요.
디테일(Details) 패널을 통해 컴포넌트를 추가하려면 다음 단계를 따릅니다.
레벨에서 액터(Actor)를 선택합니다.
디테일 패널에서 + 컴포넌트 추가(+ Add Component) 버튼을 클릭하고 라이브 링크 컨트롤러(Live Link Controller) 컴포넌트를 검색합니다.
컴포넌트를 추가한 후 컴포넌트 목록에서 선택하고 서브젝트 표시(Subject Representation) 드롭다운 메뉴를 엽니다. 목록에서 이 액터의 데이터 소스로 사용할 서브젝트를 선택합니다. 언리얼 엔진은 사용자가 선택한 것을 기반으로 제어할 컴포넌트를 선택합니다. 필요한 경우 이는 조정할 수 있습니다.
컨트롤러를 구성하면 액터는 선택된 라이브 링크 서브젝트에서 자동으로 데이터 수신을 시작합니다.
일반 블루프린트 노드
라이브 링크 데이터는 다양한 블루프린트 노드를 통해 액세스될 수 있습니다.
Get Live Link Subjects
Evaluate Live Link Frame 노드와 함께 사용할 서브젝트 목록을 구해야 할 수 있습니다. 이 경우 Get Live Link Subjects를 사용합니다.
이는 Evaluate Live Link Frame 함수에서 유효한 것으로 평가할 서브젝트 배열을 반환합니다.
Evaluate Live Link Frame
Evaluate Live Link Frame 함수를 사용하면 제공된 서브젝트 이름과 연관된 라이브 링크 데이터를 가져올 수 있습니다. 이 함수는 현재 프레임이 유효한지 아닌지에 대한 실행 핀뿐만 아니라 Data Result 출력에서 액세스할 수 있는 정적 데이터와 프레임 데이터도 제공합니다. 이 데이터는 서브젝트 평가를 위해 선택된 역할 타입에 의해 결정됩니다.
아래 예시는 데이터 구조체 핀에서 직접 액세스되는 데이터를 보여줍니다.
Evaluate Live Link Frame의 데이터 사용하기
Evaluate Live Link Frame은 여러 블루프린트 함수를 사용하여 제공되는 데이터를 평가할 수 있게 해줍니다. 결과 데이터는 평가되는 역할에 따라 다릅니다. 애니메이션 역할이 평가될 때 다음 항목을 볼 수 있습니다.
Get Basic Data
Get Curves
Get Metadata
Get Root Transform
Get Transform by Index
Get Transform by Name
Number of Transforms
트랜스폼 이름
Get Basic Data
Get Basic Data 노드는 현재 서브젝트 프레임에 저장된 서브젝트의 베이스 구조를 반환합니다.
Get Curves
Get Curves 함수를 통해 모든 블렌드 셰이프 또는 애니메이팅된 커브를 구하고 각 항목에 대한 이름과 값의 매핑을 반환할 수 있습니다.
Find를 사용하고 이름을 입력하여 커브 값을 얻을 수 있습니다. 또는 부울을 사용하여 찾았는지 여부를 판정할 수도 있습니다.
Get Metadata
Get Metadata 함수는 서브젝트 프레임에 저장된 서브젝트 메타데이터 구조를 반환하며, 이를 분리하여 정보를 얻을 수 있습니다.
'스트링 메타데이터(String Metadata)'는 서브젝트의 명명된 스트링에 대한 맵입니다. 예를 들어 스트리밍되는 오브젝트의 타입을 명명된 스트링으로 전달해야 할 수 있습니다. 또한 메타데이터에는 씬 타임코드(Scene Timecode)와 씬 프레임 레이트(Scene Framerate)가 포함되어 있으며, 이 구조를 분리하여 필요한 정보를 얻을 수 있습니다.
| 출력 | 설명 |
|---|---|
스트링 메타데이터 | 프레임 또는 서브젝트에 대한 추가 정보를 제공하는 데 사용되는 명명된 스트리밍의 맵입니다(예: "Type": "Camera"). |
씬 타임코드 | 현재 프레임과 연결된 타임코드 값입니다. 고유하지 않을 수도 있습니다. 예를 들어 MotionBuilder에서 단일 프레임을 편집하면 해당 프레임의 타임코드가 여러 프레임에 전송됩니다. |
씬 프레임 레이트 | 씬 타임코드에 해당하는 프레임 레이트입니다. |
Get Root Transform
Get Root Transform 함수는 서브젝트 프레임에 대한 루트 트랜스폼을 라이브 링크 트랜스폼으로 반환합니다(트랜스폼이 없는 경우 아이덴티티).
이는 표준 트랜스폼 대신 라이브 링크 트랜스폼을 반환하므로 아래와 같은 함수를 추가로 호출할 수 있습니다.
| Function | 설명 |
|---|---|
Child Count | 지정된 라이브 링크 트랜스폼에 대한 자손의 수를 반환합니다. |
Component Space Transform | 지정된 라이브 링크 트랜스폼에 대한 루트 스페이스의 트랜스폼 값을 반환합니다(모델의 루트에 상대적). |
Get Children | 지정된 라이브 링크 트랜스폼에 대한 자손 라이브 링크 트랜스폼의 배열을 반환합니다. |
Get Parent | 부모 라이브 링크 트랜스폼이 존재하면 부모를 반환하고, 존재하지 않으면 아이덴티티 트랜스폼을 반환합니다. |
Has Parent | 지정된 라이브 링크 트랜스폼이 부모 트랜스폼을 가지고 있는지 여부를 반환합니다. |
Parent Bone Space Transform | 지정된 라이브 링크 트랜스폼을 대한 부모 스페이스의 트랜스폼 값을 반환합니다(내부적으로 저장되며 부모 본에 상대적). |
Transform Name | 지정된 라이브 링크 트랜스폼의 이름을 반환합니다. |
Get Transform by Index
Get Transform by Index 함수는 지정된 인덱스에서 서브젝트 프레임에 저장된 라이브 링크 트랜스폼을 반환합니다. 이 함수는 트랜스폼 인덱스가 유효하지 않으면 아이덴티티 트랜스폼을 반환합니다.
Get Transform by Name
Get Transform by Name 함수는 Get Transform by Index와 유사하지만 트랜스폼 이름 데이터를 취합니다.
Number of Transforms
Number of Transforms 함수는 서브젝트 프레임 내의 트랜스폼 수를 반환합니다.
한 가지 사용 사례는 Get Transform by Index와 함께 사용하여 각 라이브 링크 트랜스폼을 모두 루프하고 얻는 것입니다(아래 예시와 유사함).
Get Transform Names
Get Transform Names 함수는 프레임에 있는 모든 트랜스폼의 이름 배열을 반환합니다.
블루프린트를 사용하여 라이브 링크 프리셋 적용하기
블루프린트를 라이브 링크와 함께 사용하는 일반적인 사례는 Apply to Client 노드를 사용하여 라이브 링크 프리셋을 런타임에서 스켈레탈 메시에 할당하는 것입니다.
먼저 '라이브 링크' 패널에서 라이브 링크 프리셋을 생성합니다. 프리셋에 대한 자세한 내용은 라이브 링크 플러그인 문서를 참고하세요.
캐릭터 블루프린트에서 새 변수를 생성하고 디테일 패널에서 변수 타입(Variable Type)을 라이브 링크 프리셋(Live Link Preset)으로 설정하여 프리셋에 대한 레퍼런스를 생성합니다.
블루프린트를 컴파일하고 새 변수의 디폴트 값을 저장된 라이브 링크 프리셋으로 설정합니다.
변수를 블루프린트로 드래그하고 메뉴에서 Get을 선택합니다.
변수에서 드래그하여 Apply to Client 노드를 검색합니다.
Event Begin Play 노드를 Apply to Client에 연결합니다.