Zachernuk

tnSuperman tanktn oParticles uExtrusion j3d sandy flExtrusion fuelyoursenses meshCam bufferSnake dMap2 dMap pv2 cursorFire opticks faceGame FPSnake pv preOpticks painty youtuber fractalFIngers 2dbals

August 25, 2010

Webcam support in Unity3d – via Flash!

Filed under: flash,unity,Webcam — Tags: , , , , , , , , , , , , — Brandel Zachernuk @ 10:33 pm
superman

The possibilities are terrifying.

I like Unity and I like being able to play with the webcam as input.  Unfortunately, Webcam support within Unity – in particular, webcam support in the browser plugin for Unity – isn’t really possible out of the box.  I’ve written a (somewhat naive) implementation using the Aquiris u3dobject framework – click here to see it in action! (I should also warn you that it seems to be somewhat (read:extremely) unstable when the video stream is being passed through – On Windows it seems to run at 10fps at an absolute maximum with the video stream on, on Mac it fares even worse.. fun to see though!)

A guy at Doncaster College has managed to get a similar system up and running, although it doesn’t seem to work for people behind a proxy. (Any similarity between their solution and mine is because they’re both based on the Aquiris sample system. The Doncaster people seem to be using a localconnection to get the texture transferred, which sounds promising;  Mine is just passing things through the web page, and transferring the pixel data in an extremely sub-optimal way.  Each pixel’s value, for example Ox FF FF FF (white) is converted to the ASCII string “255:255:255″, passed through the JS and converted to Unity-native colour values (1.0f,1.0f,1.0f).  It’s roundabout but I found that there were incompatibilities in the byte-array representations of bitmaps between Flash and Unity, and since the middle JS stage is created as a script, so the string has to be valid there too.

It’s still a far cry from the the totally direct form of Webcam input that appears to be possible with a commercial license – I’ll definitely be looking into how that one works.  Even so, it represents a terrific way to leverage some of the functionality of Flash without having to re-create it in Unity – whether that functionality be webcam support or related to other aspects of Flash’s functionality like p2p network connections, microphone support or having a reasonable hook into local storage for a persistent session.  I’m hoping to make good use of this bridge soon!

1 Comment

  1. This is awesome, do you plan on open sourcing it, or providing some more detail, I’ve been trying to figure out how to do this myself for a few days now with no luck.

    Comment by Tomas — October 19, 2010 @ 5:54 am

RSS feed for comments on this post. TrackBack URL

Sorry, the comment form is closed at this time.

Powered by WordPress