The Kinect Azure TOP when set to Orbbec Compatible Hardware Type causes significant slowdowns and crashes moving in/out of Base COMPs that contain it, or Customizing Component (parent).
Currently don’t have the hardware connected, and even when bypassed it is causing a lot of issues. When I had them connected in the studio I wasn’t experiencing such issues.
Do you have dump files from the crashes you mention that you could send us?
I know it happens without the hardware, but which Orbbec cameras are you using and is it ethernet or USB? And are you using any of the body tracking features of the Kinect Azure TOP like player index or the Kinect Azure CHOP?
Does the performance improve if you switch the hardware type back to microsoft? Is the performance problem a lower framerate, or more intermittent stuttering?
Hi Rob, the thing is that there was no Orbbec connected to my computer (except my v2, but that’s besides the point, or is it?), I was working on a project “offline”.
So the Azure TOP was just idling without any data, and even experienced the same when it was bypassed - I isolated this issue to a separate empty project file just to make sure.
Here is a dmp file that I hope was created when the crash occured — it only happened in a larger project, cannot exactly reproduce isolated: TouchDesignerCrash.2023.12000_1.dmp (2.0 MB)
ok, it is good to know it’s happening in an empty project with the azure top. That should help narrow it down.
I’m not seeing the problem yet on my own machine, but we’re trying to reproduce it here. I assume if the problem happens when bypassed that the Kinect node isn’t cooking (it’s cook count isn’t increasing)?
I assume that you did a full install or checked the ‘Kinect Azure’ option in the web installer when you set up this machine? You will usually get an obvious error if the Kinect libraries aren’t installed, but just double checking everything. I know there can sometimes be a long stall when first placing a Kinect node when it is loading the DLLs.
As far as the dump file, that appears to be happening in a Parameter DAT trying to access a parameter that seems to be invalid. I can’t tell much more from the dump file, but does that line up with something in your project or with what you were doing at the time of the crash? Were you monitoring a custom parameter?
Make sure you’ve set the hardware type to Orbbec and no hardware connected — and yes I’ve had the Orbbec work on the same machine before on the same install.
Thanks for the video. I’ve set up the same system here, but no issues so far.
One idea, if you set the TOUCH_TEXT_CONSOLE environment variable to 1 it should open a windows command window alongside TouchDesigner which may show some extra info from the Orbbec library.
Here’s what my console looks like when I go in and out of the Base comp. It definitely is triggering some code, but on my machine it happens pretty much instantly. I’m curious if yours looks any different.
I think I figured out the problem. Do you have the EnumerateNetDevice flag turned on in the orbbec configuration file?
When I turn this flag on I do see a noticeable delay when I enter a network with the Kinect Azure op. The issue is that, even when the node is bypassed, TouchDesigner still updates the parameter menus whenever the parameter window for that node becomes visible (either by entering the network or click on the node).
To fill out the sensor menu, we are making a call to the Kinect library to return the available devices. With the normal USB connection, that call returns almost instantly, but when you enable net enumeration the Orbbec library is doing some extra work under the hood to search for network devices and I expect there is some sort of timeout in there after it broadcasts the search message.
Orbbec hides all of that work from us in order to present an interface that matches the original kinect so we don’t have a lot of control over it. And the device search gets called a few times during the UI refresh, which results in the multiple calls that you can see in the console and a longer delay.
Unfortunately, I don’t think there is a good work around for the moment without turning off the net enumeration. Potentially we can rework the Kinect TOP to minimize the check for new devices, but that might take some time to do and there is no way to eliminate the search completely since the kinect interface doesn’t support specifying an IP address.
Thanks for the detailed explanation Rob! However I didn’t have any orbbec config file alongside my project, to the best of my knowledge (at least I didn’t create one)
Thanks for the detailed explanation Rob! However I didn’t have any orbbec config file alongside my project, to the best of my knowledge (at least I didn’t create one)
Hmm, this really fit the symptoms so I’m wondering if there is another way that setting is enabled? Let us see if there is a way we can confirm that. If it is on by default there might be a way to turn it off as well with the config file
Just chiming in, but would a simple “Refresh”-Pulse Parameter to trigger a search not be viable?
Yeah, we could potentially rework the TOP so that it requires a manual pulse to search for devices. Up to now we hadn’t wanted to mess with any of the existing Kinect systems, but it is something we’ll keep in mind if the this proves to be the more common workflow going forward.