Yolo TouchDesigner Plugin: Multi-Pose, Object, VisDrone, & Face Tracking + More
🕑 Added 2025-09-25 17:28:20 +0000 UTCThis plugin brings Ultralytics YOLO into TouchDesigner with no install required. Just drag and drop the yolo.tox into your project.
Features
Object Tracking – unique IDs that persist across frames
Multi-Person Pose Tracking – body keypoints, joints, & persistent IDs across frames
VisDrone – trained for aerial and security footage (Great for floor tracking installations)
Face-Tracking Nano – unique face IDs tracked across frames
Drop-in Component – packaged as a .tox file you can load directly in TouchDesigner
Custom Models – Bring your own custom Yolov11 Models in by exporting them with ONNX (export script on GitHub)
Webcam + TOP Support – Use any webcam, or connect any TOP to start processing
Get Started
Download the .tox file linked at the bottom of this post.
Place the .tox file next you project .toe file so TouchDesigner can reference it locally. ⚠️NOTE if you don't do this, saving your project will take an eternity
Drop it into your TouchDesigner project.
Using this Plugin in Your Projects
TLDR: as long as you don’t modify the plugin’s internal source code, you’re free to use it in commercial projects without open-sourcing your codebase.
This plugin bundles an open-source YOLO model (licensed under AGPL-3.0) together with my own TouchDesigner work. To stay compliant, I’ve released the web app + networking code that powers the model under AGPL-3.0 — the source is freely available.
Source Code is Available Here:
What this means for you:
✅ You can use the plugin in your commercial or personal TouchDesigner projects without needing to open-source your whole project.
✅ You can forward or reuse the detection data (IDs, positions, etc.) however you like — it’s just data, not covered by the license.
⚠️ The only time you’d need to share code is if you modify the open-sourced parts inside the plugin (the web app or WebSocket server). In that case, AGPL requires you to publish those modifications.
The plugin communicates with TouchDesigner over WebSockets, which creates a clear boundary between the AGPL-licensed code (the web component) and your project code. This separation means your TouchDesigner networks remain your own and can stay closed-source.
That said, I’d highly encourage you to open-source your work to support the broader open-source community.
Comments
Torin Blankensmith
Hey! That’s strange, it’s working fine on my end with a random RTSP feed. One thing I optimized is to only process frames when the video cooks. I wonder if that trigger isn't happening correctly on your end. To check this: 1) With your feed connected and playing, go inside the component. 2) In the lower-left area, find the commented section called “Upload Frames.” 3) You’ll see an “img_info” CHOP and a select3 CHOP connected to it. There should be a channel in the select3 named "total_cooks" that updates continuously. I’m curious if that channel isn't updating on your end.
ddmystudio
Hi, I'm setting up an exhibition where I need to use the VisDrone function for tracking, sourced from a ceiling-mounted IP camera. The function works perfectly with recorded camera footage (Movie file In TOP). When I connect the Video Stream In TOP with the camera's RTSP feed, the PLUGIN functionality stops. Given that I'm also using other network components, I wonder if there is a known WebSocket conflict with the Stream In TOP when using RTSP. Any advice on configuration changes or known workarounds would be greatly appreciated. Thank you!
Noah Eisenbruch
Thanks so much for this, Torin! It's amazing.
Torin Blankensmith
Yeah this needs a video tutorial. On the custom parameters page, there's a generate Gui for the object and pose tracing. Those will create the helper components to create different visuals and also get a bunch of useful chop data
Nicklas Mathews
Hello, this is really exciting! Forgive me if it's a stupid question, but I cant seem to figure out how to get a Moviefilein TOP to be the source for the data, it just shows the same as the webcam, am i supposed to press something to switch the source? Thanks in advance.
Cyril
thanks Torin, looks great cant wait to test. so far it works great witch 60 frames on M1 Max.