I’m working on face tracking / analysis / recognition with the Visage SDK and I’m struggling a bit with the amount and different types of data that I want to export from a single C++ operator.
Since most of the output is numerical information, I started with a C++ CHOP, outputting channels and supplemental (textual) information in an info DAT.
But then came the idea to also export the face mesh for each tracked face. Since I’d also be outputting geometry, I decided to refactor everything to a C++ SOP and just output the numeric data in an info CHOP.
In theory this works fine. However, if for some reason you want to get everything from the Visage SDK, this also includes a lot of feature points for per face, 154, which all have an x, y and z. This totals to 462 channels per face for the feature points. If you track 4 faces, this would be 1848 channels.
Outputting this amount of channels from a C++ CHOP didn’t seem to have much impact on performance. However using this many channels in an info CHOP does have heavy impact on performance, the info CHOP has a cook time of over 4ms.
This can be easily replicated by creating any C++ OP and returning 2000 for
getNumInfoCHOPChans and just settings the value for each channel to
I have some ways of working around this for now, but is there any good approach for outputting this many channels in an info CHOP?
Thanks for your thoughts! I’m happy to supply more information if necessary.