OSC-Kommunikation
Section outline
-
-
Im Folgenden wird beschrieben, wie eine einfache OSC-Kommunikation mit der Unreal Engine erstellt werden kann. Wichtig hierfür ist, dass das OSC-Plugin in der Unreal Engine aktiviert wurde. Um eine solche OSC-Kommunikation zu testen, kann beispielsweise das Programm TouchDesigner genutzt werden.
C.1. OSC-Receiver in Unreal-Projekt erstellen
1. Für die OSC-Kommunikation muss zunächst ein neues Blueprint erstellt und geöffnet werden.
2. Der erste Schritt ist die Erstellung eines OSC-Servers, der eingehende OCS-Nachrichten empfangen kann. Dafür muss zunächst ein CreateOSCServer-Node eingefügt werden, welches mit dem BeginPlay-Node verbunden werden muss. Das Feld Receive IP Address kann freigelassen werden und als Port kann ein beliebiger Wert gewählt werden, üblich wäre z.B. 8000. Wichtig ist hier, dass der Haken bei Start Listening gesetzt wird.
3. Der ausgegebene Wert (Return Value) muss eine Variable des Typs OSCServer zugewiesen werden. Dafür einen Rechtsklick auf Return Value machen und Promote to Variable auswählen.
4. Aus dem Return Value-Pin des neu erstellten Set-Nodes muss anschließend eine neue Verbindung gezogen werden, an dessen Ende ein BindEventtoOnOscMessageReceived-Node gesetzt werden muss.
5. Das Ganze sollte wie folgt aussehen:
edu sharing objectC.2. OSC-Kommunikation zwischen Max und Unreal einrichten
1. Um OSC-Nachrichten empfangen zu können, muss ein passendes Event erstellt werden, welches beim Empfang neuer OSC-Nachrichten ausgelöst wird.
2. Um ein solches Event zu erstellen, muss aus dem Event-Pin des BindEventtoOnOscMessageReceived-Nodes eine neue Verbindung gezogen werden. Anschließend kann an dessen Ende ein neues Custom Event erstellt werden.
edu sharing object3. Da nun OSC-Nachrichten empfangen werden können und der Empfang ein Event auslöst, müssen die OSC-Nachrichten im nächsten Schritt konvertiert werden. Hierfür ist zunächst das Node GetOSCMessageAddress notwendig.
4. Die extrahierte OSC-Adresse kann mit dem Node ConvertOSCAddressToString in einen String konvertiert werden. Dieser könnte dann beispielsweise mit dem Node PrintString auf dem Bildschirm ausgegeben werden. Das Ausgeben der OSC-Adressen bzw. der OSC-Nachriten auf dem Bildschirm ist eine gute Möglichkeit, um die empfangenen Nachrichten zu überprüfen.
5. Im Folgenden ein Beispiel, wie das Ganze nun aussehen könnte:
edu sharing objectC.2.1.1. Unterstützte Datentypen
6. Um nun auch die Nachricht selbst auslösen und verarbeiten zu können, müssen die entsprechenden Werte aus den Nachrichten extrahiert werden. Im Folgenden sind die entsprechenden Nodes für Integer, Floats und Strings zu sehen:
edu sharing objectC.2.1.2. Parameter von Objekten in der Szene steuern
7. Der folgende Screenshot zeigt ein Beispiel, wie die empfangenen OSC-Nachriten verarbeitet werden können. In diesem Fall werden Integer-Werte empfangen, mit denen die Farbe des Sonnenlichts verändert werden.
edu sharing object
-