It’s that time of the year! It’s Christmas for TouchDesigner developers everywhere! The Experimental builds of TouchDesigner have now become the official stable builds. This means all the beta features we’ve been using and hearing about since the summer are now ready for prime-time productions. This is exciting as it comes to shiny new features but it also contains countless bug fixes, SDK and drive updates, and workflow tweaks. Let’s dive in!
Awesome shiny features
Kinect Azure support
There was (is still…) a tough transition period between Kinect 2’s and the Kinect Azure. Support for 2 was dropped quite a while ago and you were stuck between buying available hardware that was End-of-life’d or trying to get your hands on a dev kit for something that didn’t have much support yet. Ouch! It’s not 100% solved yet, as getting a dev kit can be tricky if you’re outside of the US, but at least now it’s supported in TouchDesigner and is easy to use. Two of the features I’m most excited for are the GPU acceleration for the skeleton tracking, that is done through cuDNN (nVidia CUDA Deep Neural Networks), and support for using multiple Kinect Azures on one system. You read that right folks. Multiple. Sensors. One. Computer.
If you’ve gone through our Machine Learning for TouchDesigner workshop, you’ll be familiar with Socket.io. It’s a modern web communication protocol made for real-time applications. We use it a lot with RunwayML to receive machine learning data inside of TouchDesigner in real-time. It can be used with a ton of other applications as well and makes for a great alternative to TCP/IP connections or UDP messages for persistent-connection servers. One tricky part was that the socket.io implementation in TouchDesigner was lagging quite a bit, so it could be near-impossible to actually use it. Now with it’s own DAT, it’s incredibly easy to use and quite powerful.
Oh boy, this one deserves it’s own blog post in the next few weeks. This component will fundamentally change the way projects are built going forward. Previously, if you had some really heavy elements in your projects or you wanted to run your audio audio in another CPU process separate from the rest of the visuals, you’d have to make a separate TouchDesigner project and run each element in it’s own project. This was always a necessary pain to ensure that processes that were really slow and prone to cause dropped frames (web API requests, asset downloading, SOP loading of big models, etc) wouldn’t negatively affect everything else in a project. It became annoying to manage multiple projects and could introduce bugs to the workflow. The Engine COMP allows us to implement multi-threaded workflows within a project. We still have to build some communication pipes between those processes, but this is huge. Long gone will be the days of 4 projects running on one system. The Engine COMP has been really well designed in that it even includes ability to use nVidia GPU Affinity with the different Engine COMPs. So you could have one Engine COMP running on your primary GPU, and run your Engine COMP holding a UI on a different and less powerful GPU. Even though it’s into the official release, it’s still under development, so this one use with a bit of caution and extra testing, but I’m super excited to start working with this feature.
Constant CHOP is an all-around helpful tool to use for holding large sets of values in CHOPs. Previously, it was limited to 40 channels, and each channel had a parameter, which made it a bit hard to use when there were a lot of channels. The new UI improvements to parameters means that Constant CHOP now only has 1 page of parameters and you can add or delete as many channels as you like by clicking the + or – button in the parameters. This also applies to other operators which had a parameter that was replicated a bunch, such as the GLSL MAT samplers and Point SOP custom attributes.
Data processing TOPs
I’ve always been a fan of using the GPU for data crunching. Workflows have been leading that way for a while since GPU’s are just so good at handling and manipulating large amounts of data. One tricky thing with processing data in TOPs was that you often needed to write a quick shader to do even simple kinds of math. While you may need to still, some great strides have been made by integrating more options to the Math TOP and releasing a Function TOP and Limit TOP, which work just like their CHOP equivalents except that they run on the GPU. I can even imagine a near future where TOPs are the go-to operates for any kind of data, and CHOPs just become a family of operators that glues together basic control signals and inputs/outputs with hardware.
SDK + Library updates
SDK and library updates are always a quiet victory. When it comes to integrations with hardware/software we’re using, their makers are often upgrading capabilities and stability through SDK updates. The same can be said for some underlying libraries such as CUDA and Python. Sometimes these take a bit of time to trickle into TouchDesigner. With this big official release many SDKs and libraries have received updates including: Notch, NDI, Oculus, ZED, RealSense, CUDA, and Python 3.7.2. This means that you might be surprised by better integrations with tools you know and love or even new features when it comes to things like Python. I’m quite happy about this one, because there’s nothing worse than finding a bug with an integration that can only really be fixed by a big behind-the-scenes SDK update.
If you’re excited for a lot of the features we’ve talked about, there’s good news: there are way more changes and updates in this build! Two great places to check out for those are on the Derivative blog from Ben, who wrote about many of the new big features, and the official release notes, which are a giant list of new features/fixes.
One of the cool things about TouchDesigner is how fast-paced the development is when you compare it to other softwares. As excited as we are for many of the new features, we’re also excited to see what else is in store over the next few months. Until then, enjoy all these new features and hopefully they’ll help revolutionize your workflows! Enjoy!