Voxels/ PointCloud in QC

volkerk's picture

I do have motion capture data from a dance performance as raw voxel data, in quite high resolution (~ 15 mm sixe per voxel). The format is in simple x,y,z,r,g,b per voxel. Due to the high resolution, a frame consists of up to 6000 voxles.

Tried to visualize this in qc, but run into serious performance problems. The first test was using an iterator and creating standard cubes with rgb color values for the faces, this works but does go down to ~ 3 frames per second.

then i tried kineme GL point in an iterator, slightly faster with 6 fps (on my macbook), but nowhere near fast enough. it is also a different render style and i think i prefer the cubes.

what did work at the end is the kineme GL point structure, which performs incredible fast, no matter how many points. the problem here is though, i can't control the color of each individual point, only global for all of them.

my question to the list and particular to the kineme authors, hw can i speed up rendering of many cubes in qc and could the point structure GL plugin be modified so it accepts a structure with the point coordinates AND rgb values?

i attached two screen shots and example qc files.

cheers, volker kuchel@unsw.edu.au

PreviewAttachmentSize
GLpoints.jpg
GLpoints.jpg75.03 KB
cubes.jpg
cubes.jpg52.55 KB
voxels.zip67.87 KB

cwright's picture
Re: Voxels/ PointCloud in QC

GL Quad Structure can draw cubes, provided you do some work to generate the proper points (via JS or something -- probably not fast). A custom patch that renders cubes about points could be written, but it's somewhat special-case.

GLPoint Structure can be modified to accept per-point RGB values, but such a modification will take a while (not due to complexity, but due to smokris and I having next to nothing in terms of free time.)

volkerk's picture
Re: Voxels/ PointCloud in QC

i have a look into the quad patch you suggested, and see if i can get the 30 fps, but i doubt it.

thx, volker

psonice's picture
Re: Voxels/ PointCloud in QC

Very cool stuff. How are you capturing the scene, laser scanner or something?

I did some point cloud based stuff quite a while back, but hit the same issue you have: decent performance with any kind of large data set is impossible without a custom plugin to do the rendering. A plugin to draw coloured cubes for each point wouldn't be particularly hard, but it means either writing it your self (and learning obj-c, cocoa, opengl) or paying somebody to write it for you.

There's a few videos of my point cloud stuff here: http://www.vimeo.com/1363091 (I used a load of point cloud video data that radiohead released as part of some marketing thing for a video they did, I think it was ~100k points. I fed it into some other stuff I built to skin it and render it a bit more nicely).

volkerk's picture
Re: Voxels/ PointCloud in QC

we use multiple synchronised video cameras from different point of views (12 in total). after calibrating the whole thing you can extract the voxel data with the help of a custom application. a Phd student developed the algorithm and software. I do have 30 fps voxel data, which adds up tu GB of raw data, waiting to be visualized.

i guess i will go down the custom plugin path, can't really do it myself though.

volker

usefuldesign.au's picture
Re: Voxels/ PointCloud in QC

I know you want to get the fps up for live use but in the mean time, QuartzCrystal is a great off-line renderer for .qtz compositions.

If you wanted to use differing colours on a limited sub-sets of the points data you could keep the fps up quite high I think. Use a JS patch to parse the data into as many separate structs as you desire.

The slowdown from the JS patch will only occur when it's inputs change and it forces a rerun of the javascript. So if you limit the recalculations to none or only every few seconds should be okay. Each point-data struct can go to a Macro patch of the Kineme GL Points patch and colours can be changed at will inside each macro.

toneburst's picture
Re: Voxels/ PointCloud in QC

This sounds cool. Looking forward to seeing some examples of it in action!

a|x

psonice's picture
Re: Voxels/ PointCloud in QC

Oooh, that sounds really good :)

Is the capture realtime, so you can process + redisplay it live? If not, you have plenty of options really, and I second quartz crystal for rendering it out.

toneburst's picture
Re: Voxels/ PointCloud in QC

I have a friend who is a martial artist, and I sat in on a mo-cap session he and one of his students did for a computer game company once. Fascinating stuff. That was a much simpler system though, based on tracking a small number of points marked by reflective balls (on hands, feet, knees, elbows etc.). I think they used 4 hi-resolution infra-red cameras and some specialist Windoze software to track the points in 3D space. As far as I remember, there was a realtime display, but the operator said there would be a fair amount of post-processing to clean up the data- partly I think because there were two people fighting, so they tended to occlude each other quite a lot.

Interesting stuff...

a|x

toneburst's picture
Re: Voxels/ PointCloud in QC

I'd vote for this one, too, if you have some time at some point in the future. I realise you're both very busy at the moment though.

a|x

usefuldesign.au's picture
Re: Voxels/ PointCloud in QC

Yes if not live data you could pre-process the data into heaps of sub-sets and load them into XML files, either one large structured file or many flat files of just x,y,z data in different sub-sets.

Then QC can just multiplex b/w the different XML inputs.

I guess the XML could even be processed out outside QC in C or something for higher live generation speeds and QC could update the feeds (not sure how fast QC is at that bit)

gtoledo3's picture
Re: Voxels/ PointCloud in QC

Fascinating... I haven't had a chance to look at this...

Do these screenshots reflect what it is supposed to currently look like when running? It didn't do that when I was opening it up a couple days ago, all I was getting was a square in the corner, I believe... Or do you have to do something to get it going? I haven't had the time to see why the structure isn't loading, been chasing my own tails :o)

SteveElbows's picture
Re: Voxels/ PointCloud in QC

You need to change the path of the structure, change it to voxel_data and reload.