Engine Room Audition... from Kevin Atkinson on Vimeo.
[Update: For those new to the blog, I've written a dataflow framework for real-time video effects, plus a number of effects implemented within that framework (some of which are demoed in the above video). In this post I'm announcing that I'm open-sourcing that framework]
A few months ago, I made this post on reddit.com, where I crowd-sourced my then-just-begun job search. The post went to the top of the programming page and even squeaked onto the front page of the main reddit. As a result, I got an interview with Weta Digital, and after two very long interviews, I was offered a gig there with the code group. My wife and I leave for New Zealand tomorrow. (Finally! Our visas were delayed for about six weeks, but they arrived by Fedex this morning.)
I've been vaguely intending to commercialize this work for a year, but I just don't seem to have it in me to be a software vendor, and I think it's a bit sad to seal these effects away inside closed binaries. Also, I no longer have the time.
So, I decided to open source the lot. Here's the code:
jskFx code.
The code is generally not half bad, though after a year where I've really concentrated on enhancing my coding skills (reading Andrei Alexandrescu, learning template meta-programming and such like, delving deeper into boost), it's not the way I'd do it now. It was written in six weeks, on a brutal deadline, so signs of rushing are sometimes apparent (though most of the effects themselves were developed over the previous couple of years). Also, this stuff is way overdue to be ported to the GPU.
The "flowy-blowy" effect never made it into the jsk framework, since I just ran out of time, and the code was a bit of a mess. I'm also a bit wary of releasing it as is, since it uses Jos Stam's semi-Lagrangian interpolation technique, which I believe is covered by some obnoxious patent or other. Messrs Lagrange, Navier and Stokes were kind enough to not to patent their stuff, but Mr. Stam, or perhaps just his employer, had other ideas.
In any case I'm currently rewriting it using a lattice-Boltzmann approach. Hm. Maybe I should look into the patent situation there? But then, I know that Blender's fluid sim is lattice-Boltzmann, so it should be okay.
About the name: The code was created in its current form last summer for a cool gig that a fellow named Joel Gethin Lewis (interaction designer, bon vivant, and all around jet-setting, conference-headlining man-about-town) landed us in New York. You can read about it here. For the gig, I took some video effects I had written over the previous couple of years, cleaned them up, and then wrote a node-based coding framework that they could operate uniformly within, and wrote a couple new effects besides.
A clever fellow coder named Shawn Bonkowski also created some effects for the show, though I haven't included his code in this release. I'll be in touch with him to see if he'd like his stuff included in the next release.
As a result, I used the prefix "jsk" (for Joel-Shawn-Kevin) to all the objects in the library. All the code in this release is my own, but I kept the prefix to honour the contribution of the other guys to the event, and commemorate the circumstances that gave it its birth in its current form.


18 Comments:
Beautiful! Thanks for sharing.
Awesome! I'm glad you got a good job, you definitely deserve it.
Very clever stuff :) thanks for sharing
Welcome to New Zealand. We can always use more good programmers.
Thanks, very nice work nice demonstration. I have an blog in Sweden about Open Source and I will present your work there.
1) because it's nice and interesting
2) becuase it's open source
3) you have found yet another good reason to open source something.
My blog is mixed open source hints, and open source problems (and some Microsoft bashing...). The blog is in Swedish. I found an interresting translation mode at google, search with original and translated language in parallel.
Here swedish english
Here french english (only one)
May the source be with you!
For people moving to Wellington I can recommend these two groups,
http://up.org.nz/
http://wellington.thursdaynightcurry.com
Beautiful stuff :)
wonderful! it's a very original idea, simple in its conception but with a lot of possibilities! i imagine that with this engine you can simulate easily an man running in flames, or even design complex and abstract non-linear systems using only colored geometric shapes in movement. absolutely fantastic.
i love too to program cellular automata, physical simulations and all that stuff. congratulations.
Amazing visuals...as an audio operator, sound designer and audio engineer, I wonder if you ever watched your video with your eyes closed? -ES
What license are you open sourcing this under?
Hey folks, thanks for the kind remarks.
Jared, the code is GPL for now. Possibly LGPL down the road at some point.
And ethan, I only watch my videos with my eyes closed -- I get sick of watching my ugly mug ;-) I just used the built in mic on my HV20, so yeah, the sound sucked.
Hope you like it here in New Zealand, and congratulations on getting a job at Weta!
Oh wow, that sure looks like it must have been fun!
RT
www.anonymity.2ya.com
Excellent, first-rate!
Awesome, congrats, will be good to have you here in New Zealand. :)
Thanks Kevin, these are amazing and congrats on the job.
Awesome! Care to share some tips to become like you? Things like your reading meterials for example? And thank you very much for knowledge sharing.
Awesome, but I can't build this 2 examples. Anybody knows how?
I am on VS C++ 2005 and 2008...
Post a Comment
<< Home