OSC 플러그인 개요

언리얼 엔진 5에서 OSC 플러그인으로 작업하는 방법을 살펴봅니다.

Choose your operating system:

Windows

macOS

Linux

OSC 라고 하는 오픈 사운드 컨트롤(Open Sound Control) 은 오디오 업계의 여러 분야에서 널리 사용되는 개방형 프로토콜입니다. 주로 클라이언트 간에 일반 오디오 데이터를 네트워킹하는 데 사용하지만 오디오 이외의 데이터에도 사용할 수 있습니다.

OSC 플러그인은 개발자가 언리얼 엔진 에서 네트워크 오디오 및 잠재적인 기타 도메인의 데이터를 빠르게 반복작업하는 데 사용할 수 있는 직관적이고 안전한 타입의 블루프린트 라이브러리를 제공합니다. 이 플러그인을 활성화하면 C++ 또는 블루프린트 로 작성한 단순한 API를 통해 OSC 이벤트를 송수신할 수 있습니다. 메시지 및 번들 또는 번들과 메시지의 조합을 송수신하는 것도 지원됩니다.

이 기능을 사용하려면 OSC 플러그인이 활성화되어 있어야 합니다. 이렇게 하려면 편집(Edit) > 플러그인(Plugins) > 입력 디바이스(Input Devices) 로 이동하여 OSC(Open Sound Control) 옵션을 체크하면 됩니다.

루트 타입

OSC 서버

OSC 서버 (UOSCServer)는 언리얼 엔진의 로컬 인스턴스에 전송된 메시지의 리스닝 엔드포인트로 작동하며, 멀티캐스트 루프백과 OSC 메시지 및 번들 모두에 대한 파싱을 지원합니다. 또한 서버가 리스닝할 IP 주소(화이트리스트)를 구체적으로 명시할 수도 있습니다 .

사용자는 제공된 주소 패턴 이벤트를 바인딩(아래의 '주소 패턴에 이벤트 바인딩하기' 참고)하여 모든 OSC 주소에서 전송된 메시지를 수신하거나, 모든 메시지를 리스닝(아래의 모든 메시지에 이벤트 바인딩하기 참고)하거나 또는 모든 번들(아래의 모든 메시지에 이벤트 바인딩하기 와 비슷하지만 대신 수신한 번들의 언패킹 필요)을 리스닝할 수 있습니다.

OSC 클라이언트

OSC 클라이언트 (UOSCClient)는 OSC 메시지 및 번들을 전송하는 방법을 제공합니다.

FOSCAddress

OSC 주소 (FOSCAddress)는 유효한 패턴일 수도 있고 그렇지 않을 수도 있는 타입이 지정된 경로입니다. 유효한 경로인 경우 메시지 패킷의 일부로 생성, 전송 및 수신될 수 있습니다.

여기에는 컨테이너 및 메서드의 배열이 /Container1/Container2/Method 형태로 포함되어 있으며, 경로 또는 패턴으로서의 유효성 쿼리, 스트링으로의/으로부터의 변환 및 블루프린트 호출을 통한 조작 등이 가능합니다. 또한 BindEventToOnOSCAddressPatternMatchesPath 이벤트에 바인딩될 때 다른 OSC 주소 패턴에 대해 필터링될 수도 있습니다.

OSC 번들/메시지

OSC 메시지 (FOSCMessage) 및 OSC 번들 (FOSCBundle)은 OSC 클라이언트에서 수신되거나 OSC 서버로 전송되는 패킷 타입입니다.

OSC 메시지에는 유효한 경로이면서 지원되는 OSC 프로토콜 타입의 페이로드를 갖춘 주소가 포함됩니다.

OSC 번들은 다른 OSC 번들이나 OSC 메시지 또는 둘 모두의 패킷 배열을 포함합니다.

에셋 클래스

OSC 플러그인은 다른 에셋 클래스가 전혀 필요하지 않습니다. 필요한 타입은 모두 휘발성이며 블루프린트를 사용하여 생성, 관리 및 소멸될 것으로 예상됩니다.

블루프린트 API

OSC 서버

OnOsc(Bundle/Message)Received

OSC 번들/메시지가 수신될 때 호출되는 이벤트입니다.

SetWhitelistClientsEnabled

true로 설정된 경우 서버는 화이트리스트에 있는 클라이언트에서 수신한 메시지만 처리합니다.

(UnbindEvent/UnbindAllEvents/BindEventTo/Get)OnOSCAddressPattern(s)

OSCAddressPattern이 일치할 때 보낼 이벤트를 언바인드, 바인드, 제거 또는 구합니다.

(Add/Remove/Clear/Get)WhitelistedClient(s)

화이트리스트에 있는 클라이언트 IP 주소를 스트링(IPv4)으로 추가, 제거, 지우거나 구합니다.

OSC 클라이언트

(Get/Set)SendIPAddress

OSC 클라이언트 IP 주소 및 포트를 구합니다.

SendOSC(Bundle/Message)

OSC 번들/메시지를 특정 주소에 전송합니다.

OSC 번들/메시지

Add(Bundle/Message)ToBundle

제공된 번들/메시지 패킷을 번들에 추가합니다.

Get(Bundles/Messages)FromBundle

번들에서 찾은 번들/메시지를 반환합니다.

(Add/Get) OSC Message(스트링/인덱스의 스트링, 인티저/인덱스의 인티저 등)

POD 타입을 OSCMessage로/에서 추가/구합니다. 지원되는 타입의 목록은 여기를 참고하세요.

Clear OSC(Message/Bundle)

메시지/번들 페이로드를 지웁니다.

리소스/예시

OSC 구현은 OpenSoundControl.org 웹사이트에서 찾을 수 있는 OSC 1.0 프로토콜을 기반으로 합니다.

아래 이미지 각각에서 노드 그래프 복사(Copy Node Graph) 버튼을 클릭하고 블루프린트 그래프에 텍스트로 붙여넣어 예시가 작동하는지 확인합니다.

OSC 메시지 전송하기

Copy Node Graph

모든 메시지에 이벤트 바인딩하기

Copy Node Graph

주소 패턴에 이벤트 바인딩하기

Copy Node Graph

블루프린트 API

Get OSC Message From Bundle At Index

정렬된 인덱스의 번들에서 찾은 메시지를 반환합니다.

Add OSC Address (As String) to OSC Message

OSCMessage 끝에 스트링으로 패킹된 주소 값을 추가합니다.

Get OSC Message Address At Index

바운드 내에 있고 OSC 타입이 `String`과 일치하는 경우 제공된 OSCMessage에서 인덱스의 주소로 값을 설정합니다. 메시지의 주소를 반환하지는 *않습니다.* 대신 스트링은 메시지에 패킹되어 OSC 주소로 형변환됩니다. 인덱스에서 스트링이 발견되고 유효한 OSC 주소 경로인 경우 반환합니다.

Get OSC Message Addresses

주소 경로가 유효한 모든 스트링 값을 OSCMessage에서 수신한 순서대로 반환합니다. 메시지의 주소가 포함되지는 않습니다. 주소 경로가 유효한 메시지에 패킹된 스트링만 포함됩니다.

Find Object at OSC Address

지정된 경로 형식의 ASC 주소를 사용하여 오브젝트를 찾습니다. 컨테이너는 경로 폴더에 해당하고 주소 메서드는 오브젝트 이름에 해당합니다. 부모 오브젝트만 지원합니다.

Convert Object Path to OSC Address

오브젝트 경로를 OSC 주소로 변환하고, 폴더를 주소 컨테이너로 변환하고, 오브젝트 이름을 주소 메서드로 변환합니다. 부모 오브젝트만 지원합니다. 자세한 내용은 UObjectBaseUtility::GetPathNameUObjectBaseUtility::GetFullName을 참고하세요.

Convert Object Path (String) to OSC Address

오브젝트 경로 스트링을 OSC 주소로 변환하고, 폴더를 주소 컨테이너로 변환하고, 오브젝트 이름을 주소 메서드로 변환합니다. 부모 오브젝트만 지원합니다. 자세한 내용은 UObjectBaseUtility::GetPathNameUObjectBaseUtility::GetFullName을 참고하세요.

Convert OSC Address to Object Path

OSC 주소를 오브젝트 경로로 변환합니다.

Remove Containers from OSC Address

인덱스에서 정렬된 컨테이너의 배열에서 컨테이너를 컨테이너의 수까지 삭제합니다.

위에 나열된 새로운 블루프린트 API 호출뿐 아니라, 모든 인덱스 게터(getter)는 이제 제공된 인덱스의 타입 값이 지정된 타입인지, 값이 클라이언트의 예상대로 파싱되었는지 여부를 나타내는 Succeeded 부울 값을 반환합니다.

콘솔 변수

osc.clients

현재 초기화된 OSC 클라이언트 오브젝트에 대한 진단 정보를 출력 로그로 프린트합니다.

osc.client.connect

OSC 믹스 클라이언트를 제공된 오브젝트 이름에 연결 또는 재연결합니다. 사용 가능한 클라이언트 및 해당하는 이름은 `osc.clients`를 참고하세요.

ID - (재)연결할 클라이언트의 오브젝트 ID

Address - (재)연결할 IP 주소(디폴트: LocalHost)

Port - (재)연결할 포트(디폴트: 8094)

osc.client.connectById

OSC 믹스 클라이언트를 제공된 오브젝트 ID에 연결 또는 재연결합니다. 사용 가능한 클라이언트 및 해당하는 ID는 `osc.clients`를 참고하세요.

ID - (재)연결할 클라이언트의 오브젝트 ID

Address - (재)연결할 IP 주소(디폴트: LocalHost)

Port - (재)연결할 포트(디폴트: 8094)

osc.servers

현재 초기화된 OSC 서버 오브젝트에 대한 진단 정보를 출력 로그로 프린트합니다.

osc.server.connect

OSC 믹스 클라이언트를 제공된 오브젝트 이름에 연결 또는 재연결합니다. 사용 가능한 클라이언트 및 해당하는 이름은 `osc.clients`를 참고하세요.

Name - (재)연결할 서버의 오브젝트 이름

Address - (재)연결할 IP 주소(디폴트: LocalHost)

Port - (재)연결할 포트(디폴트: 8095)

osc.server.connectById

OSC 믹스 클라이언트를 제공된 오브젝트 ID에 연결 또는 재연결합니다. 사용 가능한 클라이언트 및 해당하는 ID는 `osc.clients`를 참고하세요.

ID - (재)연결할 클라이언트의 오브젝트 ID

Address - (재)연결할 IP 주소(디폴트: LocalHost)

Port - (재)연결할 포트(디폴트: 8095)