July 29, 2011
So, a colleague of mine at Seneca is working on this XB Pointstream thing, which is pretty neat – you should scroll down to the demos, but what it amounts to is a way of rendering stuff in 3D, in webpages, in a really lightweight way, and all in JS. It’s pretty neat, and I was thinking about it when I was looking at some videos from the Visible Human Project, something you’ve also probably seen – slices taken, millimeter by millimeter, of a frozen cadaver and then stacked to be viewed in sequence. Also pretty neat.
So, stupid brain was keeping me awake last night, and I’d had this idea rattling around for a bit, so I wrote some code that strips the movie down frame by frame, looks at it pixel by pixel and turns that into a point stream. The resulting dataset is kind of huge, around ten gig or so, but I put up a demo with 1% of the set here for your amusement. It’s a little blurry; we’re on the far side of quite a bit of compression here, alas, even before we get to the “1% of the real data” bit”. And you need a WebGL-enabled browser, and it’s probably going to murder your GPU, but you can move it around with your mouse and zoom in and out. Seeing it load is neat, like watching little nanobots condense a human out of the ether. And for an hour or two of work spent turning a video of a 3D object back into a 3D object, I think it was kind of fun
Andor Salga gets most of the credit for this; as usual, I’m making little hood ornaments for the engines much smarter people than I have built, and built well. If you have point-streamy questions, he’s the person to talk to.
UPDATE: Ho HO! Andor has expanded my demo by adding a slider to it so you can actually play with the progression a bit. Killer.
One thing about this technique is, it only quote-works-unquote because I knew going in that one frame of movie equals one millimeter of sliced up human. I wonder what happens if I put an actual movie into it?