Is there any efficient way to record the skeleton data from kinect ?

Cheng Chien-Wen's icon

Is there any efficient way to record the position data of the skelton from kinect in max?

Could anyone share an example patch or show some hints?

Thank you so much..

Luke Woodbury's icon
Max Patch
Copy patch and select New From Clipboard in Max.

Here's what I use:

Cheng Chien-Wen's icon

Thank you so much for sharing the idea and the patch.

kinectfan's icon

What are you using it for, just curious :)
Any patches to share? I am studying Max.

Peter McCulloch's icon

I'd recommend looking at seq~, since it'll make it easier to replay the data. I haven't done this, but am working on something similar and this sounds like it'd be perfect, since you can pause it mid stream, play it back slowly, etc.

edsonedge's icon

the patch onar3d posts here: https://cycling74.com/forums/what-is-a-good-way-to-record-large-amounts-of-data-in-real-time-and-play-back-at-varying-speeds
...seems to go pretty far,... He is talking about CPU problems though (but the post is from two years ago)

You would have to use something like OSCeleton if you are using OpenNI drivers to get the OSC messages from the Kinect into Max

You can use this: https://github.com/BanTheRewind/KinectOsc
If you are using the Microsoft SDK drivers

Peter McCulloch's icon

Yeah, I'm wondering if his CPU problems might have anything to do with 32-bit resolution. If you're trying to do it over an hour (which he was in his demo) it seems like 0-1 isn't going to be a huge amount of range (since you have to parse it out over 158,760,000 samples); because it's ticking over so slow, it's entirely possible that he's getting a lot of dupes? Haven't tried his patch and don't have anything to generate OSC handy, but I wouldn't rule out seq~ on the basis of that, especially if it's 64-bit friendly now and you're not storing an hour's worth of data at a go.

Also, it's a question of how you pack your data. Store it as a list of points, rather than a collection of labelled values, and use zl change to thin your data.