Learning Quartz Composer Part 2

| 6 Comments

Previously:
Learning Quartz Composer Part 1

And Then:
More babysteps with Quartz. I set about trying to make a split-screen effect quartz effect which would replicate any video 9 times within the same screen. (This was to fulfil a request for someone who wanted me to alternate between fullscreen and 9 videos on a video wall made up of 9 screens, where a hardware matrix switcher would usually be used, but couldn’t be on this for some reason.

Over at the quartz section of Vidvox forums, Vade answered my query with:

“Can’t you use 9 billboards and make them 1/3rd the size of the screen and position them accordingly?”
and even offered up an example file.. http://vade.info/9.qtz

Bingo! Coming from traditional video editing land, I hadn’t even been able to grasp that creating a new billboard effectively creates a new image that can be composited. So then, loaded with new brain juice, I set about transforming the patch so it would work within VDMX.

There were a few barriers:

1- For parameters within a Quartz patch to show up as visible, adjustible parameters within VDMX, a process called ‘adding a published input’ needs to be done. The above quartz patch was set-up to take a webcam input and replicate that 9 times. This needed to be changed to a ‘published image input’, which would mean when loaded as a VDMX effect, it would take any movie playing in that VDMX layer, and apply the replication and compostion effect to it. The adding a published input process is documented on the VDMX wiki.

2 – Although the webcam split evenly into 9 screens, when taken into VDMX the 9 clips had plenty of overlaps. This became a tedious process of working in quartz with webcam version, dimension mode on auto-height, adjusting the input parameters for each billboard a certain amount, then adding the VDMX input back in, importing to VDMX and testing what it looked like now. (If anyone has any advice on making composition arrangement in Quartz less painful, love to hear about it! ). Eventually, I managed to make a VDMX effect that can quickly turn any 16:9 clip into the desired 9×16:9 clips, in a 16:9 screen.

And here it is: https://www.skynoise.net/quartz/9screens16_9.qtz
( Dump that into your Quartz FX folder of VDMX and it should show up as an effect for any layer ).

Moving Along:

The transitions used in VDMX are available as quartz files to play with in the VDMX composition mode folder. Open them in Quartz, saving under a new name and playing around with them makes it fairly trivial to make new transitions. If you add something else useful from Quartz to them, or wish to have real-time access to any of the parameters of the transitions ( eg opacity / angle, etc ), these parameters can be published as inputs using the above methods, and then they show up as VDMX friendly parameters that can be mouse dragged or audio synced etc.

A Next Batch of Quartz Problems:

Planning to work through these over time, but figured I’d list them here, in case any pointers fly in…

– Is it possible to select an anchor point for rotating a clip in QC? (So that for example, a point well below the screen could be used as the centre of a circle that passed in an arc across the top of the screen.) I found the anchor.qtz example patch which seems more related to anchor points in HTML pages, but maybe there’s a way of using it?  And the ‘Image Transform’ effect has a rotation parameter, but no adjustible anchor point?)

– How can a slider transition be adjusted so that both clips move in sync, not just one sliding in over the other?

– Related to the slider sync – how to do seamless tiling? Am guessing once the sliding is figured out, use mirrored images at the edge of an image, to enable a seamless horizontal or vertical scrolling loop?

– Is it possible to include video masks on a layer, not just image still masks? Is it possible to use masks that effectively create blank / alpha channel space around pixels in a layer?

– Some day : separate photoshop layers with adjustible depth of field blur in sync with z depth?

– Some day II : sliders that create exponentially smaller (replicated) slices of a video.

– Some day III : more sliders, that create puzzle slider type FX, but with adjustible zooming and scaling on the pieces – so they stay the same puzzle size, but are more or less zoomed in.

So if you’ve got any advice, suggested reading / plug-ins etc about any of the above – please get in touch.

Next: Learning with Quartz Part 3 – DIY anchor rotation FX for VDMX

Autobot Roulette:

6 Comments

  1. Joris says:

    You want to look at the Rendering Destination Dimensions patch. This allows you to read back the resolution of the window that’s currently being rendered at, so you can dynamically calculate the billboard positioning. So if you want to spread four billboards along the width, you’d divide Rendering Destination Dimensions Width by 4, and connect that to the Billboard Width.

  2. Joris says:

    Reposition the clip so what you’d like to be the anchor point is in the center of the screen, then place it inside a 3D transformation patch, and use the rotation Z property of that patch to rotate it. Cumbersome I know, but that’s OpenGL for you 😉

  3. subpixel says:

    Unless you intend to independently animate your 9 separate billboards (which, now I’ve mentioned it, you might want to do…), there is probably a faster and easier way. I don’t know how Quartz Composer works (though I have an almost-unused Mac on the floor not 2m away from me) but you can probably get a single billboard to render the texture scaled and repeated. This is (I think) a basic feature of OpenGL texture rendering.

    -spxl

  4. subpixel says:

    Note regarding above comment: you can use this trick to use any level of repeating (tile-size), and using non-integer divisions! (So long as you don’t mind the tiles at the edges being incomplete)

    -spxl

  5. Kundi says:

    The link to modified patch is not working. can you please fix it?

Leave a Reply

Required fields are marked *.


This site uses Akismet to reduce spam. Learn how your comment data is processed.