Kineme GL tools tutorial

goto10's picture

Hey everyone

Just thought to let you know about my new tutorial.

Although I don't think a lot of the regulars here will see something new, it's for the most part about Kineme tools, so I'd thought you'd might be interested.

Hope you enjoy it!

Joris

cybero's picture
Re: Kineme GL tools tutorial

Nice way to introduce Kineme Tools to QC users still to learn of the Kineme magic :-). Nice one.

dust's picture
Re: Kineme GL tools tutorial

i don't know if its any easier but you could drop one macro in an iterator and use the simplex noise plugin generate some offset copies. like you mentioned you will need to change the octave intervals of the perlin noise to a get a unique but more determinant although randomized variability. of course doing this for each iteration.

there really isn't any difference to using an iterated simplex set up than that you have done. actually probably easier to duplicate the macro three times. although inside an iterator you can ramp up the line count without having to duplicate. then you could publish to vdmx.

i like how you used the integrator and flipped your mouse position as a camera effect. i need to use the deviator and integrator more often. i don't see many people using them. smorkis has posted a few patches that uses them. my patch that uses the above mentioned technique although not with line drawing is called "determinant particle emitter" its in the repository here on kineme if you want to look to see what im rambling on about.

goto10's picture
Re: Kineme GL tools tutorial

wow, simplex noise, that's a great plugin. should definitely save me some time for creating random motion inside iterators.

still doesn't seem to work with the 'awesomelinedrawer' though (man, that name gets more stupid every time i use it). either the queue or the line structure doesn't like the iterated input, and connects the lines to each other. the result is pretty cool (see attached), but not what i'd thought it'd be.

can anyone here figure out how to make the gl line structure work as expected inside an iterator?

PreviewAttachmentSize
not_so_awesome.qtz7.94 KB

cybero's picture
Re: Kineme GL tools tutorial

The answer to this is, it seems to me, staggeringly obvious, to reduce the number of iterations to 1 and the rest takes care of itself, although you only end up with one line, not three. [ so I added a triple up]

PreviewAttachmentSize
not_so_awesome_redrafted.qtz19.58 KB

gtoledo3's picture
Re: Kineme GL tools tutorial

Err, but then the iterator isn't doing anything!

gtoledo3's picture
Re: Kineme GL tools tutorial

This is how to do non-contiguous line drawing (first attachment).

...and this is a setup that uses the _1024 random noise and math plugins to create some "wiggle", and also iterates the line structure patch so that there is a row of lines (second attachment).

I admit, I haven't really looked at any of these compositions - but I did look at the tutorial. Good job! I think the one thing that wasn't mentioned that would probably be useful is the "non-contiguous drawing" - by that, I mean line strips not drawing when mouse is up. Not a biggie, because afaik I discovered how to do that by total accident, and it hasn't been in any demos besides ones I've posted.

Actually, I'm posting a 3rd attachment that shows how to do simple non-contiguous drawing with stock SL patches using javascript and OpenCL.

PreviewAttachmentSize
Non Contiguous Drawing.qtz9.91 KB
Wiggle-line_gt.qtz36.17 KB
OpenCL Mesh Draw.qtz20.15 KB

cybero's picture
Re: Kineme GL tools tutorial

Interestingly enough, using a Point Sprite Mesh Vertices Display does work really nicely with an Iterator, but the idea with dumbing down that facility was simply to achieve the kind of flowing line achieved in the tutorial.

Additional a Point Structure patch also works nicely in the Iterator .

Sadly, not for Line Structure though that same patch with a Simplex Noise positions feed does work outside of the Iterator just fine. It's a pity it fails to be faithfully exploitable as an object creator inside of the Iterator.

PreviewAttachmentSize
not_so_awesome_redrafted_2.qtz25.45 KB

cybero's picture
Re: Kineme GL tools tutorial

Some nice examples, like that wiggle line :-) .

& only one use of Iterator amongst them too [the aforementioned wiggle line].

goto10's picture
Re: Kineme GL tools tutorial

well, thanks for trying :-)

weird that it does work with the point structure though...

goto10's picture
Re: Kineme GL tools tutorial

hehehe, feeding it a nan makes the line non-contiguous. nice find! good introduction to the 1024 plugins too.

for some reason i now have a craving for a garlic naan.

cybero's picture
Re: Kineme GL tools tutorial

The wiggle line makes a nice image feed to the _1024 Image to Sound plugin.

fsk's picture
Re: Kineme GL tools tutorial

the problem is the queue patch. putting it inside an iterator still only means one queue. the line structure patch does what its supposed to but it always gets the same structure.

the solution i found is... (drumroll) ...Multi Queue! to bad javascript is slow :/

imho the queue patch should have an option like this for "inside of iterator" behavior.

edit: forgot to mention something. one way of getting different numbers from the random patch inside iterators is to use external time and provide a different time for each iteration.

PreviewAttachmentSize
not_so_awesome.qtz9.41 KB

gtoledo3's picture
Re: Kineme GL tools tutorial

Use splice for a queue so that it works like the actual queue object and reduces it's structure count when you reduce size.

edit...

BTW, that looks cool. Nice on that and on the orig...

goto10's picture
Re: Kineme GL tools tutorial

cool! i figured javascript queues would be the way to go, but my js skills are severely lacking. well done, and it still runs at a good 30fps at 1920x1280 and 25 iterations on my old Nvidia 8600

cybero's picture
Re: Kineme GL tools tutorial

Souped up that OpenCL draw setup of yours to give explicit colours and no grayscale, plus it plays tones too. Needs _1024 Tone Player.

PreviewAttachmentSize
OpenCL Mesh Draw 01.qtz140.18 KB

gtoledo3's picture
Re: Kineme GL tools tutorial

Hmm.... crashing after awhile. Not 100% sure why. It does seem to be quite taxing.

My setup actually does give it colors ( the color fade that you are terming "greyscale" is part of the setup, and all you have to do is manipulate which r/g/b/a val gets changed, over whatever amount of time), by manipulating the javascript that would feed the color input on the mesh creator. I should have went ahead and setup inputs on the javascript with that to make it more clear. Try it out, it's ultra quick fps wise.

Small point: the notations on this qtz kind of make me "own" certain choices that I didn't actually make. I mean no criticism, it's just that I spend a lot of time going back and forth on really small adjustments, so it makes me uncomfortable. If you could annotate any changes to my code if you do a mashup/change, it would be really nice, but worse things have happened than this ;-) I'm going to have to explicitly state this in notes of the stuff I post.

Frankly, I know I've done some changes to other people's code and reposted without noting every change explicitly, and have personally regretted it, because sometimes I missed points of what they were trying to get across. I think if I had forced myself to note every change, I would have understood the orig code better, and I would have done them a service as well.

For me, things like even "where you place the patch" on the editor have an element of personal expression to them. I knoooow that's extreme, and it's hard to get nuance across on the web. Like I said, the world has way bigger problems than this ;-)

cybero's picture
Re: Kineme GL tools tutorial

Taking the JS color structure and running them through a colour multiplier works really well and better than the color making kernel employed by me in my earlier post . Because the positional values are so relatively low in value, they really don't create effective colouring.

By running the current structure through a members value multiplier kernel one retains its close association with the positional member set, whilst affecting changes to those values not at the expense of the positional integrity.

Given that your original runs at n/a fps [optimised] and that even with the better CL colour routine I can only get 50 fps, I might look at tweaking the JS instead and see if that can't result in a similarly optimised state.

I think it would be pretty cool to get some translation from pressure and velocity into the tone playing.

I actually think that having the drawing relatively static is far better, I just happened to like that rotating drawing thing [ for a while ].

Didn't mean to make you own what wasn't of your authoring, far from it.

Apologies for the crashing. I think that is probably down to the Color routine I used. Doesn't mess up on my machine though, just one of those things.

photonal's picture
Re: Kineme GL tools tutorial

Very nice comps there! Just need to figure out how to draw some crotchets and semi-quavers from a live midi source onto the manuscript! ;-)

liik's picture
Re: Kineme GL tools tutorial

Very nice tutorial, thanks for sharing. Short, simple and concise with "awesome" results. This one opens a whole new set of possibilities for me.