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

라이브 링크 플러그인 개발

언리얼 엔진

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

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

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

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

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\ 에서 찾을 수 있습니다.