After some time off blogging, I am back with an announcement of a major piece of ongoing work in the form of a PhD!
Expressivity and the Digital Puppet:
Mechanical, Digital and Virtual Objects
in Games, Art and Performance
A second version of my ‘tiger reflections patch’. Now with a simpler interface and Noise Industries ‘FXFactory’ ready!
The patch is simplifed and slightly more reliable than the previous version. The generated image can now rotate without producing artifacts. The gradient setup is now automated. Less control but simpler. I have done this to create a test composition that works in ‘FXFactory’ – which is very simple to use. It really unlocks another realm for Quartz Composer developers.
The patch does a simple thing of producing an ‘aquafied’ circle. I created this patch when I was exploring masks and how best to create a circle using the current Quartz Composer toolset. The patch contains some useful techniques working between pixels and Quartz Composer units. It is also an exercise in ‘pixel based positioning’. I am sure the visual effect can be improved upon, but I quite like the principle of instantly produced graphics using quartz composer. I followed several online tutorials for producing aqua styled graphics – then simplified the process. I reckon quite complex aqua graphics could be produced in this way, like widget graphical elements etc.
The accuracy of positioning of bottom gradient may need improving. Hence the ‘tweaks’
Better control over how the bottom gradient is generated. The rules seem to break down at smaller sizes. Fun though.
I’ve composed a patch that creates an iris transition. You can position it in x – y space, control the iris size and feather the edge of the mask.
Download Link: iris_quartz_composer.zip
The patch is quite simple to use. For a recent digital puppetry project, I connected the iris radius to a the output of a midi foot pedal so I could create scene transitions in real time. More of that elsewhere.
The patch demonstrates a number of useful ideas: pixel to unit conversion, creating a circle (using the hole distort patch), masks and the ‘source atop-in-out-wave-it-all-about’ patches.
Some Notes on Custom Patches, Hidden Patches and Core Image Units
My original patched originally used one of the hidden patches ‘CICheapBlur’ that you can enable by following instructions here.
For the download here, I have replaced the ‘CICheapBlur’ patch with a gaussian blur – so there shouldn’t be errors if you do not have the ‘hidden’ patches activated. This effects performance slightly. With custom core image filters appearing in the QC patches pane, I am sure it is quite possible to distribute compositions that will not run on other people’s machines without the custom CI filter. There seem to be more useful custom patches appearing on the scene with a number of excellent ones from Boinx. I hope a useful installation mechanism can be constructed to distribute the pre-requiste elements for custom patches.
Here’s a tool I have made that I use to create an instant sheet of thumbnails from a movie. I use it to analyze animations that I have digitised from my own video collection.
Download Link: movie_thumbnail_viewer_001.qtz.zip
It works in principle but there are a number of issues I’ll go into in a moment. It is an early version of an idea that could produce instant time-lines, retrospective after-the-fact storyboards, onion skinning and other video frame manipulations. I use it to visualize the flow and movement of time-based imagery and to produce illustrations for lectures. It is the kind of process that makes Quartz Composer a pleasure to use. To produce such a layout in Photoshop would take a good deal of preparation and layout work. I love the grid layout and the visual effects produced by this patch – as images in their own right.
You set the path to a quicktime movie.
Make some basic choices about number of frames per row, number of rows (you need to enable / disable each row as needed)
Set the time interval / frame shift to jump on each row.
Image (above): Frames demonstrating early pioneering rotoscoping from Dave Fleischer’s “Snow White” (1933) with Betty Boop and Cab Calloway (full copyright acknowledged).
Image (above): Sequences from Bill Plympton’s “Your Face” (1987) (full copyright acknowledged)
Here are some of the important issues that need to be improved:
The patch runs slowly. I am sure you could do a similar thing programmatically with QTKit that would be much faster in the generation of the rows / thumbnails. I may even have a bug / design flaw where each row gets iterated more than once.
It is always a design goal for me to have no manual tweaking necessary, for a composition to do it’s work with the minimum amount of set-up. This patch needs more work in this regard.
It seems some codecs (I forget which from my tests – I mentioned it on the qc-dev list) produce unexpected results. i.e. only two different thumbnails are generated and they then alternate across the sequence. Some sizing / aspect ratio issues of the thumbnails when the viewer is resized
I have fixed this issue on other similar patches I have made – but have yet to implement the fix here. This patch would benefit a rigorous going over. I’d love to hear from anyone who finds it useful.
Images (above): the optional ‘info’ panel and math patch. This part of the composition is interesting and the maths contained there-in could for the basis for a future improved implementation.
Image (above): The basic macro with most of the important published ports
A Quartz Composer patch that will automatically produce a cool, adjustable reflection from an image, text or video input. The style is familiar from Tiger applications, particularly “Front Row” and Keynote. It is a visual style echoed across Apple’s branding and is slightly cooler than a simple drop shadow.
Most are self explanatory but here are some notes:
Color: this controls the background, the ‘fade to color’ of the reflection gradient and the ‘fade to color’ of the block that fades the reflections
Gradient Point 1 and 2: This numbers control the falloff / distance of the reflection The numbers relate to the size of the image measured in pixels. To get recommendations on what values to use select Gradient Advice.
Currently the recommended values are calculated like so:
Gradient Point 1: image height (px) / 1.7
Gradient Point 2: image height (px) * 1.5
Gradient point 1 should be smaller then Gradient point 2. Gradient point 2 should be around the height of the image – but different effects can be achieved by varying it. Likewise, increasing Gradient point 1 from 0 increases the brightness of the first part of the reflection – creating a nice controllable reflection fall-off.
In a cocoa application the reflection gradient parameters could be more usefully mapped to a couple of sliders. If a simpler interface is needed, you could hard wire the ‘recommended’ values into the relevant inputs.
Gap: Makes a gap between the reflection and the image. This improves the illusion that the image is sitting on a surface.
- with a little effort the patch could be used in a cocoa application or, I think, converted to an image unit for use in other applications.
- thorough testing of how images with alpha channels work.
Key Quartz Composer Techniques
- mask and alpha manipulations.
- blending modes