kevin atkinson code

kevin atkinson (aka method art) has landed himself a job at weta digital so has decided to release his source code…

http://methodart.blogspot.com/2009/06/e-…-ition.html

why is this approach interesting? …

“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”

"Runtime reconfigurable computing. Potential to support graphical
programming.

For our purposes, it allows us to write an effect as a component
(node), which can then be slotted into a chain of effects. So
the final effect can be messed with without requiring a recompile."

Hi Chris!

Can you briefly describe how to build two examples in jskFx.zip and what libraries should I include.

I’m on Windows XP, Visual Studio C++ 2005 and 2008…

Best Regards!
Mladen

yeah this is definitely a very interesting concept.
nodal programming works especiaily well in a live-visuals context… for vjing or performance.
could potentially be able to create a Quartz Composer style interface for openframeworks patches.

this is something id definitely be interested in getting into although i don’t think im quite on par with the technical know-how just yet.

chris, do you think this is doable in openframeworks?

would love to know how to get started…

L.

ive only had a brief look at the code, Kevin wrote it of course. maybe if he has any time he might pop in on the forums.

[quote author=“julapy”]yeah this is definitely a very interesting concept.
nodal programming works especiaily well in a live-visuals context… for vjing or performance.
could potentially be able to create a Quartz Composer style interface for openframeworks patches.

this is something id definitely be interested in getting into although i don’t think im quite on par with the technical know-how just yet.

chris, do you think this is doable in openframeworks?

would love to know how to get started…

L.[/quote]

There currently isn’t any kind of gui for this, though the code was written to support exactly that kind of approach. That would be loverly indeed, but I’m not going to have time for anything like that for a while.

BTW, the code is probably going to be a challenge to build in its current state, since it is minimally documented, and has several external dependencies. Next step for me is to make a few sample projects and better docs – look for them in the next few weeks (my wife and I are just getting settled in New Zealand)

Kevin

hi kevin, some sample code would great!

i guess you’d need to define some IN and OUT ports as a part of a super class that each node could extend.
so perhaps have two arrays of IN and OUT values and the UI could build itself based on that.

the node connections would also have to match type.
and size in the case of passing arrays.
so you can pass pixels into another patch ONLY if it can accept pixels though one of its IN ports.

im itching to try a simple implementation now! :slight_smile:

have been doing a little more reading on the topic of nodal programming…

interestingly enough the way data is passed around in VVVV anyway (another nodal programming language) is through 1-dimensional arrays.
“Most nodes handle data in a one dimensional array of values, called Spreads.”
http://en.wikipedia.org/wiki/Vvvv

for video i guess you would need to pass through the pixels and video width and height which are different types, one being unsigned char and the other an int.
not sure how can this can be passed through in a single 1-dimensional array.

its also important to decouple as much of the code as possible so each patch or node has no dependencies on others.
the observer pattern hits the nail on the head with this approach,
http://en.wikipedia.org/wiki/Observer-pattern

any examples of the observer pattern in openframeworks anyone?

L.

[quote author=“julapy”]
for video i guess you would need to pass through the pixels and video width and height which are different types, one being unsigned char and the other an int.
not sure how can this can be passed through in a single 1-dimensional array.

its also important to decouple as much of the code as possible so each patch or node has no dependencies on others.
the observer pattern hits the nail on the head with this approach,
http://en.wikipedia.org/wiki/Observer-pattern

any examples of the observer pattern in openframeworks anyone?

L.[/quote]

The way the jsk framework works is that basic types (float, int, bool, etc) are built-in, and then anything else is treated as an “extension type”. To make an extension type, you derive a class from jskExtensionType, and override a couple methods. So, if memory serves, there is a jskImageType that does just that.

Same deal with dependencies. A nodes outputs should be only and exactly a function of its inputs.

See the readme.txt file for a simple example of a node which multiplies two numbers together. It really is very simple to get going with the framework. The design philosophy was to implement the simplest thing that would work, and that turned out to work pretty darn well.

Cheers,

Kevin

:slight_smile: