언어:
페이지 정보
엔진 버전:
언리얼 엔진

라이브 링크 플러그인

언리얼 엔진

Live Link (라이브 링크)의 목적은 (DDC 툴 또는 모캡 서버와 같은) 외부 소스에서 언리얼 엔진 4로 애니메이션 데이터를 스트리밍하고 소비하는 공통 인터페이스를 제공하는 것입니다. 언리얼 플러그인을 통해 확장 가능하도록 설계되어, 서드 파티가 신기능을 개발한 뒤 엔진 변화에 맞게 수정하고 유지할 필요를 없애는 데 있습니다.

Maya 또는 Motionbuilder 같은 DDC 툴과 함께 라이브 링크를 사용하면 외부에서 애니메이션을 편집하는 도중 UE4 안에서 실시간으로 작업을 미리볼 수 있습니다. Motion Capture System (모션 캡처 시스텝) 역시 라이브 링크를 사용하여 엔진에 데이터를 스트리밍하고 실시간 미리볼 수 있습니다.

라이브 링크 클라이언트

LiveLinkGraph-3.png

라이브 링크의 허브는 Live Link Client (라이브 링크 클라이언트)입니다. 프로젝트에서 라이브 링크 플러그인을 활성화하면 생기는 이 클라이언트가 주로 담당하는 것은 두 가지입니다.

  1. 소스 관리: 애니메이션 데이터 소스는 대부분 다른 앱으로의 연결로 나타나며, 같은 머신이나 네트워크를 통한 연결로 애니메이션 데이터를 라이브 링크로 제공합니다.

  2. 서브젝트 관리: Subject (서브젝트)는 클라이언트 내 데이터의 개별 스트림을 말합니다. 한 애니메이션 캐릭터가 서브젝트의 예입니다.

    서브젝트를 이루는 데이터는 다음과 같습니다.

    1. 이름

    2. 레퍼런스 스켈레톤 (이름 및 본 계층구조)

    3. 커브 키 (커브 이름 순)

    4. 하나 이상의 “프레임”

      1. 각 프레임에는 (레퍼런스 스켈레톤 순서에 일치하는) 본에 대한 트랜스폼 목록과 (커브 키에 일치하는) 커브의 실수 값 목록이 들어있습니다.

이 클라이언트는 엔진이 사용하는 다음 프레임 데이터 구성도 담당합니다. 이는 최근 받은 데이터 사본일 수도, 들어온 데이터를 버퍼에 저장한 뒤 사용자 정의 지연을 두고 재생하여 생성한 보간 프레임일 수도 있습니다.

Sources 소스

소스는 라이브 링크 클라이언트로 데이터를 받는 방법입니다. 소스는 플러그인 안에서 정의하므로 서드 파티가 엔진 코드를 변경할 필요 없이 별도의 소스를 만들 수 있습니다. 소스는 애니메이션 데이터를 받는 방법 관리를 담당합니다 (예를 들어 네트워크 프로토콜을 통해서, 또는 머신 자체에 연결된 디바이스의 API 에서 읽을 수도 있습니다). 각 소스는 클라이언트로의 레퍼런스를 통해 데이터를 전달할 수 있습니다.

라이브 링크 플러그인 내 (Message Bus Source 메시지 버스 소스라는) 별도의 소스를 정의해 두고 Unreal Message Bus (언리얼 메시지 버스) 연결에서 데이터를 읽습니다. 이를 토대로 Maya 및 Motionbuilder 용 라이브 링크 플러그인을 만들었습니다.

라이브 링크 활성화

라이브 링크 플러그인 활성화는 플러그인 창을 (편집 > 플러그인 에서) 열고 Animation 카테고리의 Live Link (라이브 링크) 플러그인에 Enabled (활성화)를 선택하면 됩니다.

Step_02-1.png

활성화하면 라이브 링크 클라이언트를 메뉴에서 찾을 수 있습니다.

EnableLink_1-1.png

라이브 링크 창에서 Source Type (소스 유형)과 Subject (서브젝트)를 추가할 수 있습니다.

LiveLinkWindow.png

위에서 라이브 링크 클라이언트에 플러그인을 실행 중인 Maya 인스턴스로 연결된 것이 (좌상단 섹션에) 보입니다. 그 인스턴스가 에디터에 두 개의 서브젝트를 전송하고 있는데, “EditorActiveCamera” 라는 카메라와 “Maya” 라는 서브젝트입니다 (좌하단 섹션).

Interpolation Settings 보간 세팅

Source Type (소스 유형)을 추가할 때, Use Interpolation (보간 사용)을 통해 디테일 패널에서 정의된 Interpolation Offset (보간 오프셋)을 적용할 수 있습니다.

LiveLinkConnected-1.png

Use Interpolation (보간 사용) 세팅을 활성화하면 연결에 지정된 Interpolation Offset (보간 오프셋) 값을 사용하도록 설정할 수 있습니다. 보간할 때, 시스템이 현재 시간에서 버퍼를 얼마나 오래 읽을지를 (초 단위로) 결정하는 값입니다.

에디터 통합

현재 애니메이션 에디터에는 라이브 링크가 내장 통합되어 있습니다. 이 옵션은 Preview Controller (프리뷰 컨트롤러) 프로퍼티 아래 Preview Scene Settings (프리뷰 씬 세팅) 탭에서 액세스할 수 있습니다.

PreviewSceneSettings-3.png

라이브 링크 플러그인이 활성화되면, 프리뷰 컨트롤러 옵션을 Live Link Preview Controller (라이브 링크 프리뷰 컨트롤러)로 바꿀 수 있습니다. 선택하면 다음과 같은 옵션을 설정할 수 있습니다.

  • Subject Name 서브젝트 이름 - 라이브 링크에서 프리뷰 메시에 적용하려는 서브젝트 이름입니다.

  • Enable Camera Sync 카메라 동기화 활성화 - 언리얼 에디터 카메라와 외부 에디터 동기화를 활성화합니다. 내부적으로 EditorActiveCamera 라는 서브젝트에 대한 라이브 링크를 확인합니다. 내부에서 개발한 Maya 및 Motionbuilder 플러그인 모두 이를 지원합니다.

  • Retarget Asset 리타깃 애셋 - 여기 지정한 리타깃 애셋은 프리뷰 메시에 적용할 라이브 링크 데이터에 적용합니다.

아래에서 Maya 라이브 링크 플러그인을 사용하여 UE4 와 Maya 를 연결했습니다.

라이브 링크 리타기팅

라이브 링크 리타기팅은 현재 애셋 리타기팅을 통해 이루어집니다 (베이스 클래스는 ULiveLinkRetargetAsset 입니다). 라이브 링크 포즈 노드에는 사용할 리타깃 애셋을 지정하는 핀이 있습니다. 제공하는 매우 단순한 리맵 애셋(ULiveLinkRemapAsset)을 통해 라이브 링크의 트랜스폼을 USkeleton 에 매핑할 수 있습니다. 아래는 애셋 리타기팅 구현 방법 예제입니다.

라이브 링크 리타깃 애셋에 오버라이드해야 하는 함수가 하나 있습니다.

BuildPoseForSubject(const FLiveLinkSubjectFrame& InFrame, TSharedPtr<FLiveLinkRetargetContext> InOutContext, FCompactPose& OutPose, FBlendedCurve& OutCurve)

이 함수가 받는 것은 다음과 같습니다.

  • LiveLinkSubjectFrame - 라이브 링크가 보는 트랜스폼/스켈레톤으로, 버퍼 또는 보간 옵션이 있습니다.

  • FLiveLinkRetargetContext - 인스턴스 데이터 리타기팅이 가능한데, ULiveLinkRetargetAsset 은 사용할 때마다 인스턴스를 만들지 않기 때문입니다 (CreateRetargetContext 오버라이드로 커스텀 가능합니다).

  • FCompactPose - FCompactPose 리타기팅 출력 포즈이며, 애니메이션 평가 도중 사용하는 포맷입니다.

  • FBlendedCurve - 커브 데이터 출력입니다. ULiveLinkRetargetAsset 에 있는 BuildCurveData 헬퍼 함수가 제공된 라이브 링크 데이터에서 이 커브를 구합니다.

리타깃 애셋은 Blueprintable (블루프린트 가능) 설정할 수도 있어서 사용자가 (적합한 경우) 에디터에서 로직을 지정하도록 할 수 있습니다. 이 기능은 Remap Asset (리맵 애셋)에서 사용하여 에디터에서 본 이름을 변경할 수 있습니다.

Live Link Remap Asset 라이브 링크 리맵 애셋

새 리타깃 애셋을 만드는 데 무엇이 필요한지 그 예제를 에디터에서 /Engine/Plugins/Animation/LiveLink/Source/LiveLink 의 클래스 중 다음에서 찾을 수 있습니다.

  • ULiveLinkRetargetAsset

  • ULiveLinkRemapAsset

에디터에서, 리맵 애셋은 LiveLinkRemapAsset 클래스 유형을 사용해서 만들 수 있습니다.

RemapBlueprint-3.png

리맵 애셋 안에서 Get Remapped Bone Name 함수를 오버라이드할 수 있습니다.

RemapBlueprint2.png

그러면 에디터에서 Bone Name (본 이름)을 변형할 수 있습니다.

GetRemappedBone.png

위 예제는 Maya 의 스켈레탈 메시에서 본 이름 정보를 받고 있습니다. 그런 다음 그 데이터를 UE4 의 본 이름 명명 규칙에 맞게 변경 및 매핑합니다.

예로 Maya 에서 본 이름 레퍼런스에 사용되는 명명 규칙은 CharacterName:BoneName 입니다. UE4 에서 스켈레톤 애셋은 BoneName 부분만 사용합니다. Maya 에서 UE4 스켈레톤으로 데이터를 스트리밍하기 위해 리맵 애셋을 사용하고 Get Remapped Bone Name 함수를 오버라이드하여 스트링을 콜론 위치에서 분리하고 콜론 다음 스트링 정보만 받아 CharacterName:BoneName 대신 BoneName 만 남도록 합니다.

그런 다음 Preview Scene Settings (프리뷰 씬 세팅) 창에서 리타깃 애셋을 사용하도록 지정합니다.

RemapBlueprint3.png

추가 라이브 링크 사용법

외부 소스에서 프리뷰에 추가로 라이브 링크 데이터를 추가 활용할 수 있는 방법은 다음과 같습니다.

애니메이션 블루프린트

라이브 링크의 데이터는 애니메이션 블루프린트 안에 직접 적용할 수 있습니다.

AnimBPLiveLink.png

애니메이션 블루프린트의 애님 그래프 안에 Live Link Pose 노드를 만들면 됩니다. 이 노드의 프로퍼티는 두 가지입니다.

  • Subject Name 서브젝트 이름 - 데이터를 스트리밍해 올 라이브 링크의 서브젝트 이름입니다.

  • Retarget Asset 리타깃 애셋 - 라이브 링크의 데이터를 애니메이션 블루프린트가 사용하는 스켈레톤에 적용할 때 사용할 리타깃 애셋입니다.

Live Link Pose 노드의 출력은 애님 블루프린트의 다른 포즈 노드와 같은 정상 포즈이므로 다른 포즈처럼 (Modifier 또는 Blend 노드에 물리는 등) 조작할 수 있습니다.

모션 컨트롤러

라이브 링크는 Motion Controller (모션 컨트롤러)와 사용할 수 있습니다. 모션 컨트롤러의 모션 소스 프로퍼티를 라이브 링크 내 서브젝트로 설정하면 됩니다.

MotionController.png

이런 식으로 설정하면 Motion Controller 컴포넌트의 위치는 서브젝트의 첫 트랜스폼에 의해 결정됩니다.

모션 컨트롤러 통합은 라이브 링크 서브젝트의 커스텀 파라미터에 액세스할 수도 있습니다. 라이브 링크 서브젝트에 내장 지원되는 커브로 전달됩니다. 값에 액세스하려면 MotionControllerComponent 에서 새 블루프린트를 파생하고 OnMotionControllerUpdated 함수를 오버라이드해야 합니다. OnMotionControllerUpdated 도중 모션 컨트롤러에서 GetParameterValue 를 호출할 수 있습니다.

아래는 라이브 링크의 Intensity 파라미터로 라이트 컴포넌트의 Intensity 를 구동하는 방법의 예입니다.

LiveLinkAnimMotionControllers.png

플러그인 개발

라이브 링크의 통합 방법은 두 가지입니다.

  • 라이브 링크를 새로운 소스로 노출하는 언리얼 엔진 플러그인을 만드는 것입니다.

이미 별도의 스트리밍 프로토콜이 있는 사용자에게 권장되는 방법입니다.

  • 서드 파티 소프트웨어에서 메시지 버스 종점을 통합하면 내장 메시지 버스 소스에 대한 데이터 전송기 역할을 할 수 있습니다.

Maya 및 Motionbuilder 플러그인에서 사용한 방법입니다.

자세한 정보는 라이브 링크 플러그인 개발NEW! 문서를 참고하세요.

Maya 라이브 링크 플러그인

Maya 라이브 링크 플러그인의 바이너리 파일이 엔진과 함께 제공되며 엔진 설치 폴더 아래 Engine\Extras\MayaLiveLink\LiveLinkMaya.zip 에 있습니다. zip 파일 안에 Windows 용 Maya 2016/2017 및 2018 이 들어있습니다. 다른 버전용 바이너리가 필요한 경우 플러그인 소스 코드를 Engine\Source\Programs\MayaLiveLinkPlugin 에서 찾을 수 있습니다. 이 소스에서 바이너리를 빌드하면 됩니다.

4.19 출시 당시 Maya 라이브 링크 플러그인이 Engine\Extras\MayaLiveLink 폴더에 포함되지 않았습니다. 이 문제를 해결한 핫픽스는 이 링크에서 콘텐츠를 다운로드할 수 있습니다.

Maya 플러그인은 Maya Module 포맷으로 제공됩니다. 플러그인을 설치하려면, zip 파일 내 올바른 버전의 폴더 내용을 Maya Module 폴더에 복사하세요.

모듈에 대한 설명은 Maya 문서를 참고하세요.

라이브 링크 플러그인을 Maya 에 설치하고 활성화하면, 언리얼 에디터에 연결된 것으로 자동 표시됩니다. Maya 에서 스트리밍 세팅 창을 열 수 있습니다. MEL 명령 MayaLiveLinkUI 로 띄울 수 있으며, 툴바 버튼에 지정할 수 있습니다.

MayaLiveLinkUI.png

우상단에 Maya 이 인스턴스의 언리얼 클라이언트 연결 상태 표시가 뜹니다. 언리얼 엔진 라이브 링크 아래는 현재 스트리밍 중인 모든 서브젝트 목록과 (위 그림에서 스트리밍 중인 것은 딱 하나입니다) 아래 창에는 스트리밍에서 서브젝트를 추가 제거하는 컨트롤이 있습니다. 추가는 Maya 씬에서 스트리밍할 아이템을 선택하고 글상자에 서브젝트 이름을 입력한 뒤 Add Subject 를 클릭하면 됩니다.

Maya 라이브 링크 플러그인 구성법 단계별 안내는 언리얼 엔진 4 를 라이브 링크로 Maya 에 연결NEW! 문서를 참고하세요.

Motionbuilder 라이브 링크 플러그인

Motionbuilder 플러그인은 Maya 플러그인과 같은 기능을 제공하며 에디터 연결 표시도 비슷합니다. 스트리밍 관리를 위한 커스텀 UI 도 있습니다.

MotionBuilderLiveLinkPlugin.png

오브젝트는 현재 씬에서 선택하고 스트리밍 목록에 (위와 같이) 추가할 수 있습니다. 거기서 Subject Name 열에 이름과 Stream Type 을 (카메라, 스켈레톤 등으로) 설정할 수 있습니다. 서브젝트의 스트리밍도 여기서 켜고 끌 수 있습니다.