test

Multiple Finger Iterator

scalf's picture

I am trying to make a composition that can handle multiple fingers on multiple devices. It will have buttons and zones that will cause interactions and triggers. So instead of making a separate hit test for every finger by hand, I am trying to use the example "multi-touch fingerpaint" as a way to test this.

Since there is only one sprite in the iterator that renders as each finger, I tried to use the incoming x and y to trigger a hit test for all fingers that could be fit on the pad.

The hit test would trigger, however only the lead or most recent finger would be able to trigger the hit test.

Does anyone have an idea on how to make it so every finger that was registered could trigger a hit test using an iterator to reduce the patchwork involved to track say 10, or 15 fingers at a time.

Also, you need the kineme multitouch patch for this

GT L3 (Composition by gtoledo3)

Author: gtoledo3
License: (unknown)
Date: 2009.11.02
Compatibility: 10.5, 10.6
Categories:
Required plugins:
(none)

This is the latest version of a Quartz Composer powered application, built with Quartz Builder, that I view as a visual synthesizer and an art piece, that draws groups of lines, quads, and textured points.

I posted the qtz source with my last version, but have made some significant changes between versions. I'll likely post source when it "settles down"; probably after another round of improvements I tentatively have planned. I'm putting this up as a test app to see if it explodes on other peoples computers (don't take that as a caution, there is nothing crazy going on with this).

It's working fine for me, on a couple of systems, though I haven't tested every new feature in SL yet (just most). If anyone can give it a spin, and let me know how it works, or if anyone has any suggestions, it would be greatly appreciated. I'm especially interested in stability and performance on various systems.

Documentation:

-Parameter control of application is available via Menu, GT L3, Parameters, which will make a Panel Inspector appear. "Esc" to quit.

-Reset Trackball- This resets the trackball interaction. This parameter is non-functional when "Main Mode" parameter is set to "Classic".

-Scroll- This is set to make the line system constantly scroll from left to right, when turned on. In this setting, doing a two fingered "Y-Scroll" will make lines spread. In the Scroll "Off" setting "X-Scroll" will move the line group horizontally.

-Scroll Speed- This parameter only applies when Scroll is on. I have set this up so that the line continues to draw when the Speed changes. I'm contemplating making that behavior selectable in future versions.

-Count and Max. Length.- This corresponds to the number of lines in the lines system, and the length of the Queue. The Queue will expand to whatever you have made the maximum size. (I have "backing down" the Queue working correctly in future versions with Line and Points, and mostly with Quads, but have a slight problem when changing Speed parameter while Queue refills right after I've trimmed points, that makes Quad thickness draw incorrectly almost_never, but it still does every so often, so I'm not introducing it until that is solved.)

-On/Off, Color, and Blend options for Points, Quads and Lines.

For each, there is also an "Auto" color option that chooses a color palette that can be shifted using the "Auto Color" slider.

-Line Style - This will make the Line Render draw along a straight path or a "zig-zag" path. This only changes the Line Render, not the Quads or Points.

-L Rotate - This shifts the line system from drawing like a tightly grouped bunch of lines, to a tubular pattern.

-L Shift- This is a manual version of what is achieved by Y-Scrolling, in that it sets relative distance of lines from one another. This works in conjunction with Y-Scroll.

-Zoom- This sets the Z translation.

-Main Mode(s)-

*Classic-Side scroller, no trackball.

*Trackball-Normal environment, trackball active.

*Ortho Trackball- Orthogonal environment, trackball active, Ortho parameters available towards bottom of Inspector.

*Field Of View Trackball- Field Of View environment, trackball active, parameter selectable at bottom of Inspector.

*Fun Mirror- Features a combo of "hard-coded" CI effects, made to simulate carnival funhouse mirror effects, and then some. Trackball active.

FX- Pushes a normal trackball mode through either internal qtz Image Filter FX, or a user selectable folder path. This can either bypass or make use of the "FunMirror" effects by using the "FunFX" Parameter.

-Fun*FX- controls whether the "FunMirror" effects get placed before the other internal effects, or user folder Image Filter effects, or not. There is a bypass, and then Mirror modes one and two.

-Bump Scale and Radius- correspond the the FunMirror effect, and any scenarios where it is called on.

-Amount, FX Boolean, FX Colors 1&2, X, Y, control many typical protocol parameters found in the stock Image Filter compositions in a condensed way. For instance FX Boolean can control the "Clean Edge" True/False functions found in some Image Filters, while also controlling overrideColor found in the Apple ASCII Art composition. The published Colors control most typically found Image Filter published parameters in Apple.

For example, some Apple compositions use "color" as a published value, some use a schema of "primary and secondary", while others are labelled slightly differently still. I've tried best to group these in a way that is transparent to the user, but which also allows full control of the filter, while not having tons "one shot" parameters. X/Y control some "wide throw" parameters in some compositions, in certain cases.

This app isn't about full featured control of external qtz's at all, but adding a basic level of integration, and ability to filter the image.

-FX Saturation, Brightness, Contrast, and Hue are also available as Image Filter parameters, and controllable, though placed towards the bottom of the Parameter controls.

-Point Image, Point Size, Line Width - Controls the texture Image of the point, the point size, and the width of the line render. The Quad thickness is fixed.

-Info- This will print whether the file is a valid Image Filter (it will read Invalid, if it isn't correct), the current file name, the current number file selected, and total file count. This is likely most useful with user Folders that may or may not contain qtz that are Image Filters. In the case that is chosen that isn't an Image Filter, this should fall back on an unfiltered version.

-FX Path/User FX Folder/Rescan/Folder Depth-

FX Path toggles between internal qtz effects, and a folder path that one can place in the "User FX Folder Field". Get a folder full of Image Filters, and drop the folder (folder path), into the User FX Folder path, and this will load up any thing that conforms to Image Filter protocol.

Rescan will be needed when loading a fresh folder, to refresh your file list. Folder Depth will control how many folders "deep" your scan will search. I've limited this to 2, which may seem lacking, but should be plenty in my personal experience; I hope it's a good half-way between allowing some extra organization in whatever folder one wants to "drop" in the app. Doing something like loading your whole computer into this, and using high Folder Depth wouldn't be great, even as is. Try to pre-prepare folders if possible.

This will not load image filters that are contingent on any 3rd party plugins (besides GL Tools, Structure Tools, and v002 Blurs).

-Dimmer- This is a selectable Dimmer that will appear to not dim at all when enabled. This can be used to fade to solid colors.

-Global Blur parameters- This uses GL Tools to grab an image of from the Color Buffer, and pass it through a v002 Zoom Blur. "Blur Freeze" simply toggles Read Pixels on or off (which results in a "stop frame" effect).

-Clear (and Clear Color)- Un-checking this will result in Feedback in the FunMirror and FX environments, and also in other environments. The method for making other environments Feedback may not work in Snow Leopard; this is untested.

-Audio parameters- Pretty Straightforward stuff. "Volume" is a multiplier on the input volume, and Audio Rise and Audio Fall are simply ways of writing "Increasing Scale" and "Decreasing Scale" and being able to fit it on an Inspector Panel. Audio mode interacts with the Y position of the line system, and automates L-Rotate.

I don't consider this to be a "sit back and enjoy" audio visualizer setting. This is more of a tool to lock in to music a bit more, while still actually "playing" the visual instrument in time to music (eg., changing viewpoints of the line system, changing textures, colors, other params, etcetera., on the beat).

The organization of the Parameter Panel has been honed in on after using this for awhile, and "playing it" on the fly. This is why, for example, the Quad, Line, Point on/off parameters are all lines up next to one another, instead of having all parameters that deal with Quads, and then all the Line parameters, and then all of the Point parameters. So, I've grouped parameters in a way that makes it a bit smoother to manipulate in real-time (for me).

Future Version plans:

-More texture images; possibly different textures on different lines, or image sequences.

-Emphasis on simulated drawing of landscapes, trees, vines, outer space scenes, as well as other generative elements.

-More control methods.

-Possible addition of particle systems, cube structure, OpenCL mesh, and?

-Possible support of non Image Filter qtz's, and adding some of my personal Image Filters to Apple sample code filters that are used in-app.

Change Log:

-1.1- Fixed FX Filter "info display" bug that made the FX info switch reverse and apply to wrong environment. Different default opening parameters, and HUD style parameter panel.

-1.2-Reverted to standard trackball for default opening environment/panel style parameter panel.