OSCToolset
OSCToolset is a plugin for Unreal Engine 5 that simplifies the OSC workflow from TouchDesigner. It is designed to work on Runtime and streamlines the creation of the OSC Client / Server so that you can directly send data from one software to another.
OSCToolset is composed of two parts:
OSCToolset.tox
(TouchDesigner Component)
To create receivers or senders you can make the component OSCToolset.tox active and drag and drop the type of data you want to send. In the master component you can set the settings for Addresses and Ports.
TD/Senders
You can see specific data for a sender in its component preview. During UE runtime, the debugging view will show you if a channel is connected by highlighting the address name in green or red if it is not.
TD/Senders/Settings
-
Message Rate
- The rate at which the message is sent. Default is 30.
-
OP
- What operator we want to send data from.
-
Pack
- If turned on, the data will be packed and all channels will be sent. Depending on the size of the components it will automatically remove channels that would not fit their length. For example, if you have a CHOP with 13 channels and you want to send it in a Vector 3 pack, it will pack only 12 channels (A pack length of 4 as Vector 3 has 3 components [x,y,z])
TD/Senders/Debug
-
Debug
- Turn on to print the values on the Textport. Only prints when the connection is made (during UE Runtime)
-
Bypass
- Turn of to bypass the module, it will not send data anymore but it can still debug in the Textport.
TD/Senders/Single Channel Modules
For single channel senders the address becomes the name of the channel that you want to use. This gives more flexibility and allows you to select which channels are used.
-
OSCT_SEND_Event
- This module is a bit different than the OSCT_SEND_Float because it only needs to send an event once. The way we create that trigger is with a CHOP Logic, which you can adjust in the settings of the module. You can see if the channel conversion works by connecting a CHOP Null to the output of the module.
- OSCT_SEND_Float
TD/Senders/Multi Channel
For multi channel senders the address needs to be specified. The selected channels are the first N number of channels depending on the data type. For example, a Color is composed of R-G-B-A, so it will get the first 4 channels of the selected CHOP. If you want to send more, pack the message (N=4)
-
OSCT_SEND_Vector2
- X-Y
-
OSCT_SEND_Vector3
- X-Y-Z
-
OSCT_SEND_Vector3
- Pitch-Yaw-Roll
-
OSCT_SEND_Color
- R-G-B-A
-
OSCT_SEND_Transform
- TX-TY-TZ - RX-RY-RZ - SX-SY-SZ
- OSCT_SEND_String
TD/Receivers
To receive data from Unreal Engine to TouchDesigner we can use the following Modules. In order to get the proper values we need to set the address at which we are sending and the name of the value.
TD/Receivers/Data Modules
- OSCT_GET_Event
- OSCT_GET_Float
- OSCT_GET_String
TD/Receivers/Debug Modules
The following modules are used to get debug data and Unreal Engine main events.
-
OSCT_GET_GameState
- Gets the game state, a CHOP Out to get the Init and Shutdown event. If the OSCToolset is connected to Unreal Engine during Runtime, the Play state will be 1.
-
OSCT_GET_Debug
- A component that receives all the Unreal Engine OSCT Modules. You can filter by the OP Name, Address, Base Type, Pack and Module Type. It gives you information of the name of the component, the Actor Owner and the module class.
OSCToolset.uplugin
(Unreal Engine Plugin)
UE/OSCT_Master
The OSCT_Master is a Game Instance Subsystem object that initializes and stores the reference for the OSC Client and Server. You don't have to add a specific game mode or do any setup. The only requirement is that OSCToolset and the OSC plugins are enabled. The Client / Server stay in memory during the runtime of the game and are persistent across different levels. If you want to send a message through the base OSC Plugin you can do it so through this without the need to setup a new Client / Server by getting the Client / Server variable from OSCT_Master.
UE/OSCT_Settings
You can access and set the Address and Port settings in two different ways. From the Project Settings / OSCToolset or during runtime with the CTRL+SHIFT+O shortcut.
OSCT Modules are actor components. You can add components to any actor and this allows you to get the specific values that you want for that specific actor. This approach makes it modular and easy to fetch the values on the way that you need.
UE/Receivers/Settings
- OP Name
- Address
- Enable Tick
- Interpolation Speed
UE/Receivers/Debug
- Print on Screen
- Print on Log
- Debug Address
- Debug Color
- Debug Duration
UE/Receivers/Single Modules
This are to get specific values when they are not packed.
- OSCT_GET_Event
- OSCT_GET_Float
- OSCT_GET_Vector2
- OSCT_GET_Vector3
- OSCT_GET_Rotation
- OSCT_GET_Color
- OSCT_GET_Transform
UE/Receivers/Pack Modules
The pack Modules are wrapped in a struct that contains a map with keys and values. The keys are the addresses displayed in the component module preview in TouchDesigner and the values are the packed channels.
- OSCT_GET_Event_Pack
- OSCT_GET_Float_Pack
- OSCT_GET_Vector2_Pack
- OSCT_GET_Vector3_Pack
- OSCT_GET_Rotation_Pack
- OSCT_GET_Color_Pack
- OSCT_GET_Transform_Pack
- OSCT_GET_String_Pack
UE/Receivers/Events
-
Get Value
- This event triggers at the Message Rate set in TouchDesigner. Use this for values that don't need to be smoothed or be called very often.
-
Get Value Tick
- This event runs on Tick. It only works if Enable Tick is True (False by default to increase performance). It is a great idea to send a value at a lower rate (30FPS) and get this event to get the values on the Unreal Engine Tick time.
-
On Init OSCT Module
- An event called once the OSCT Module has initialized. Useful to get the values of a map at the start of the game.
UE/Senders
- OSCT_SEND_Event
- OSCT_SEND_Float
- OSCT_SEND_String
UE/Packaging an Unreal Engine Project
You can install the OSCToolset.uplugin in two locations. In your project folder:
- MyProject/Plugins
Or in the engine plugins folder:
- C:\Program Files\Epic Games\UE_5.\Engine\Plugins\Marketplace
If you make a Blueprint only project, in order to package the game successfully you will need to copy the OSCToolset under the engine plugins folder, otherwise the package will not find the required Plugins (OSC, OSCToolset)
If you make a C++ project you can install OSCToolset under MyProject/Plugins folder and it will work.
Compatibility
OSCToolset.tox
- TouchDesigner - 2023.*
- Works with all licenses, including Non-Commercial.
OSCToolset.uplugin
- UE_5.0
- UE_5.1
- UE_5.2
- UE_5.3
- UE_5.4
- UE_5.5
OSCToolset_Examples.uproject
- UE_5.4
OS: Windows 10/11
- The Unreal Engine Plugin is only working for Windows machines.
- Technically you could run the OSCToolset.tox in a Mac and send the data to a Windows machine through OSC.
Bugs
If you have any issues or find any bugs, you can join this Discord server and post them in the #osctoolset channel.
License
Copyright (c) 2024, Studio Eusebi Jucgla. All rights reserved.
By using OSCToolset you agree to the following:
- Once purchased, you are free to use the product sold (OSCToolset) for commercial purposes within the limitations of the software that it depends on. See the following links for each software:
- You are not allowed to re distribute the files sold with the product.
- Don not include any of the product files provided in a public repository.
The base files and Example project files for TouchDesigner and Unreal Engine. See Compatibility to see what versions are supported.