FreenectTD is an open-source TouchDesigner plugin aimed at macOS users who don't have a way to use the official Kinect OPs in TouchDesigner.
It leverages libfreenect and libfreenect2 to implement support for Kinect cameras.
Note
This is a fork of the original FreenectTD by stosumarte (marte), which served as the basis and inspiration for this project. This fork adds Intel (x86_64) macOS support so the plugin can run in Intel builds of TouchDesigner. All original work and credit belong to the upstream author; this fork remains licensed under LGPL-2.1 in accordance with the original.
Important
FreenectTD is an experimental project. While being thoroughly tested and confirmed to work on multiple platforms, it may still have some bugs or stability issues. Please be careful if using in a production environment. I don't take any responsibility.
- Apple Silicon or Intel (x86_64) Mac
- macOS 12.4+ (Monterey)
- TouchDesigner 2025+ (any license)
- Kinect V1 / Kinect V2
Note
This is the Intel (x86_64) branch. The bundled static libraries and the Xcode project target x86_64, matching Intel-based Macs where TouchDesigner runs as an x86_64 process. If you don't have full Xcode, run scripts/build_plugin_x86_64.sh --install to build and install the plugin using only the Command Line Tools. Use scripts/build_libs_x86_64.sh to regenerate the bundled Kinect libraries for x86_64.
| Feature | Kinect V1 | Kinect V2 |
|---|---|---|
| RGB streaming | ✅ | ✅ |
| Depth map streaming | ✅ | ✅ |
| Point cloud map streaming | ❌ | ✅ |
| IR streaming | TBA | ✅ |
| Tilt control | ✅ | ❌ |
| Depth undistortion | ❌ | ✅ |
| Depth registration (align depth map to color) | ✅ | ✅ |
| Manual depth range threshold | ✅ | ✅ |
Tilt control may not work with some V1 models (1473 and Kinect for Windows V1). This is due to a mix of different factors in libfreenect and Kinect official firmware.
-
Right click on
FreenectTOP_[version]_Installer.pkgand select "Open"
You should now find FreenectTOP under the "Custom" OPs panel.
Tip
If the Installer gets blocked from running, go to System Settings > Privacy & Security and click on Run Anyway
-
Unzip and copy
FreenectTOP.pluginto TouchDesigner's plugin folder, which is located at/Users/<username>/Library/Application Support/Derivative/TouchDesigner099/Plugins. You might need to show hidden files by pressing⌘⇧..
You should now find FreenectTOP under the "Custom" OPs panel.
-
Unzip and copy
FreenectTOP.pluginnext to your .toe, in a folder namedPlugins.
You should now be able to open your .toe and find FreenectTOP under the "Custom" OPs panel.
By default, FreenectTOP outputs RGB data. To get other streams, you must use Render Select TOPs and reference indexes 1 (for a depth map), 2 (for a point cloud map) and 3 (for IR stream).
Example .toe project files are provided in this repository, under the toe_examples directory.
- Only one Kinect device per machine is supported.
- Only one FreenectTD OP can be active at a time.
- Skeleton tracking is currently impossible to implement.
To uninstall all FreenectTD related files, run the following command in terminal:
sudo rm -rf ~/Library/Application\ Support/Derivative/TouchDesigner099/Plugins/Freenect*.plugin
If you like FreenectTD, please consider donating to support further development!
This project is a fork of FreenectTD by stosumarte (marte) — the original author and source of this plugin. Please consider supporting the original developer.
A very big thank you goes to the OpenKinect project, who developed the libraries that made this plugin possible.
FreenectTD is licensed under the GNU Lesser General Public License v2.1 (LGPL-2.1).
This means you are free to use, modify, and distribute this plugin, including in closed-source applications, provided that any modifications to the plugin itself are released under the same LGPL v2.1 license.
This project also includes the following third-party libraries, each under their respective licenses:
-
libfreenect – Apache 2.0 License
Full License Text -
libfreenect2 – Apache 2.0 License
Full License Text -
libusb – LGPL 2.1 License
Full License Text
By downloading, using, modifying, or distributing this plugin, either as source-code or binary format, you agree to comply with the terms of both the LGPL-2.1 license for the plugin itself and the respective licenses of the third-party libraries included.