라이브 링크 플러그인 개발

UE4 의 Live Link 통합 및 플러그인 개발 방법을 설명합니다.

Windows
MacOS
Linux

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

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

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

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

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

라이브 링크 소스

라이브 링크 소스는 애니메이션 데이터를 라이브 링크 클라이언트에 제공합니다. 소스 플러그인이 제공해야 하는 것은 다음과 같습니다.

  • 소스 팩토리 Base Class ULiveLinkSourceFactory

라이브 링크가 사용할 수 있는 소스 관련 정보를 알려줍니다. 소스 팩토리는 UObject 이고 ULiveLinkSourceFactory 에서 파생해야 합니다. 이 팩토리는 소스 생성 및 그를 위한 커스텀 에디터 UI 제작용 함수를 제공합니다. 소스 팩토리는 클라이언트가 자동으로 고릅니다 (수동 등록 프로세스는 없습니다).

소스 팩토리가 오버라이드해야 하는 함수는 다음과 같습니다.

  • GetSourceDisplayName - 소스 이름의 현지화 스트링을 반환합니다.

  • GetSourceTooltip - 소스 UI 툴팁의 현지화 스트링을 반환합니다.

  • CreateSourceCreationPanel - 소스 생성에 사용할 슬레이트 위젯 레퍼런스를 반환합니다.

  • OnSourceCreationPanelClosed - 클라이언트가 소스 생성 위젯 작업을 완료하면 호출됩니다. bCreateSource 파라미터는 소스 팩토리에게 소스를 생성할 때 UI 콘텐츠 사용 여부를 알려줍니다.

  • 소스 오브젝트 (Base Class ILiveLinkSource)

외부 월드에서 클라이언트로의 데이터 전송을 관리하는 오브젝트입니다. 소스는 ILiveLinkSource 를 파생해야 합니다. 소스 팩토리가 생성하며, 클라이언트에 데이터를 전달하고 데이터 수명 동안 그 데이터 관리를 담당합니다.

소스에서 오버라이드해야 하는 함수는 다음과 같습니다.

  • ReceiveClient - 소스 생성 시 호출됩니다.

  • IsSourceStillValid

  • RequestSourceShutdown - 소스를 닫으라 요청할 때 호출합니다. 보통 여기서 연결을 정리합니다. 연결을 깔끔히 정리하는 데 시간이 더 필요한 경우 false 를 반환할 수 있습니다.

클라이언트 UI 가 사용하는 함수는 다음과 같습니다.

  • GetSourceType - 소스 유형을 나타내는 현지화 스트링을 반환합니다.

  • GetSourceMachineName - 소스 식별자를 (머신 이름, IP 주소 등) 나타내는 스트링을 반환합니다.

  • GetSourceStatus - 소스 상태의 현지화 스트링을 반환합니다.

메시지 버스 소스

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

  • FLiveLinkMessageBusSource

  • ULiveLinkMessageBusSourceFactory

  • SLiveLinkMessageBusSourceEditor

라이브 링크 플러그인에 내장되는 메시지 버스 라이브 링크 소스를 이루는 클래스들입니다. 메시지 버스 소스는 커스텀 메시지 버스 프로토콜을 사용하여 서드 파티 앱에서 애니메이션 데이터를 엔진에 전송할 수 있습니다.

라이브 링크 메시지 버스 프레임워크 사용

라이브 링크 메시지 버스 프레임워크를 활용하려면 Maya 및 MotionBuilder 플러그인처럼, 소프트웨어는 언리얼 엔진 코어 라이브러리를 포함하여 LiveLinkProvider 를 생성해야 합니다.

TSharedPtr<ILiveLinkProvider> LiveLinkProvider;
LiveLinkProvider = ILiveLinkProvider::CreateLiveLinkProvider(TEXT("Maya"));

그러면 하나 이상의 언리얼 엔진 인스턴스와의 통신을 자동 처리합니다. 그런 다음 소프트웨어에서 할 일은 다음 두 함수를 사용하여 프로바이더에게 스트리밍 데이터 관련 정보를 알려주는 것입니다.

  • UpdateSubject - 라이브 링크에 서브젝트의 (이름과 조인트 계층같은) 정보를 설명합니다.

  • UpdateSubjectFrame - 라이브 링크에 서브젝트 관련 데이터 프레임의 (현재 트랜스폼, 연결하려는 네임드 플로트 파라미터, 시간/프레임 번호) 정보를 설명합니다.

이 접근법의 예제는 Engine\Source\Programs\MayaLiveLinkPlugin\ 에서 찾을 수 있습니다.

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback