What's new in QLab 3.1 Video

We're thrilled to be releasing QLab 3.1 into the wild! There are some particularly dramatic changes on the video side of things with this release, including some changes in behavior, so I'd like to take a moment and give you the nickel tour. Got some coffee and your comfy chair? Let's dive in!

Titles Cue

Perhaps the first thing you'll notice in QLab 3.1 is a new cue type: the Titles cue. Back in QLab 2, adding text to your projections meant rendering your text out to a still image and adding that as a video cue. QLab 3.0 improved the situation somewhat, with Titles as a Quartz Composer-based video effect. But the interface was still cumbersome; rendering text alone required creating a dummy video cue; and since only one effect type per cue is supported, it wasn't possible to add effects to the titles themselves without custom QC work.

Titles cue inspector

The Titles cue makes text-based video cues a first-class citizen in QLab 3.1. It supports rich text formatting, including multiple fonts and colors, and provides all the same geometry and effects options as any other video cue. In fact, the titles cue is essentially a still image video cue under the hood. It takes the text and formatting you provide, renders it to a still image, and re-renders whenever the text changes. Because of that, the titles cue is subject to the same considerations as any other still image; in particular, make sure you stop any Titles cues when they're finished running, as they'll continue using resources otherwise.

Also note that this still image backing means that scaling up a Titles cue will result in visible pixelation. The size of the image depends in part on the font size(s) you use, so be sure your text is large enough to accommodate the largest size the cue will be shown at.

Anchor point

Anchor point

Next up, there's an extra geometry control in all the video cue types: the anchor point. Any scaling and rotation happens using this anchor point as an origin, so you can use fade cues to zoom in and out around a particular point in the frame, or to move in an arc by positioning the anchor point outside the cue's frame.

Splits for mesh warping

Titles cue inspector

Surfaces have gotten a major upgrade in 3.1, opening up a world of new possibilities. For starters, you can now split a surface up into a mesh of patches, adding new control points within the surface where the patches meet. Use splits to wrap a surface around corners, or to conform to a physical surface with a more complex shape.

Note: There are a couple limitations to how splits work. In particular, QLab's automatic edge blending calculations assume that each projector has a clear line of sight to each point on the surface that it covers in the surface editor. Dealing with any occlusion (where either an object obscures part of the surface, or the surface curves around before it reaches the edge of a projector raster) may require more work outside of QLab.

Warp modes

You can now select from three different warp modes in the surface editor:

  • Perspective: Normal, perspective-correct corner pinning. This is what you're used to if you've used QLab 3.0. Grid: Perspective
  • Linear: This mode is not perspective-correct. However, unlike Perspective mode, it guarantees continuity across any splits. Grid: Linear
  • Bézier: For curved surfaces, this gives you extra inner control points, so you can map a flat video onto a smoothly curved surface. Grid: Bézier
For the mathematically inclined: Bézier warping specifically turns each patch into a 2D cubic Bézier surface.

New control point behavior

In QLab 3.0, control points were tied to the corners of the projector raster, which was a pain if you had a surface much smaller than the projector's raster. In 3.1, control points are (by default) positioned relative to only the surface area covered by the projector. In other words, if you move the projector to extend out past the edge of the surface, the control points will move if necessary to line up with the surface edge.

Control points before adjusting

However—and this part can be a bit confusing—that's only true before you make any control point adjustments. Once you move one of the control points for a screen, you'll notice that the outline for that screen becomes a thick line. This indicates that you've made a change to the control points, which fixes them in place. That's because it's not generally possible for QLab to preserve the adjustments you want while the size of the area covered changes. Instead, the control points correspond to the corners of the area where the surface and the screen intersect, so if you move the screen with the corner pins fixed, you may see unexpected results.

Control points after adjusting

In general, define your surface size, splits, and screen layout first, and then adjust control points when everything is in place. If you work in that order, you won't need to worry about the details above. If you do end up needing to move a screen in the editor, you can always hit the "Reset control points" button and redo the adjustments for the screen's new coverage area.

For surfaces that have splits, you'll see a label ("A1", "A2", "B1", etc.) on each patch in the surface, and a corresponding label for each set of control points on the screen assignment. Control points will be visible for each patch that's at least partially covered by the screen. The above notes relate to patches as well; if you drag a screen so it no longer intsersects with a surface patch, you'll see some control points disappear, and the patch labels for that screen will change to show what you're now working with.

New rendering path and consequences

All this fancy new warping and splitting requires a lot of math. In order to keep the rendering overhead low, QLab 3.1 has a brand-new rendering path based on a prerendered lookup table. Technical details aside, the upshot is that no matter how much complexity you add to the splits and control point adjustments, the rendering overhead is exactly the same. The only overhead that accrues is in pre-rendering the lookup table, which only happens when you make adjustments.

The new rendering path also splits the work into two passes. First each surface renders all its active cues with their current geometry, opacity, and so forth, into a framebuffer managed by a private Syphon server; then it passes that image to a set of renderers, one per assigned display, which apply the edge blending and control point adjustments. Adding Syphon output to a surface is then just a matter of making the internal server public, so there's no extra overhead with Syphon output.

QLab 3.1 rendering path

In addition to streamlining the rendering load, this approach has a couple consequences:

Masks

Masks now apply to alpha instead of RGB values. In other words, they act more like layer masks in your favorite image editing software, with the result that surfaces can now show through each other's masked areas.

Layers

Before, cues rendered in their own natural order, irrespective of what surface they were on. Now that cues render within their surfaces first, and surfaces render in a second pass, we've added a layer option to the surface setup. This lets you ensure that cues on one surface will always render above cues on another surface. For example, if you have a window surface set within a wall surface, you'll likely always want the window to render on top. Set the wall to a lower surface layer, and you can, say, set up a series of crossfaded video cues using the "bottom" layer on the window surface, but without them getting shoved behind cues on the wall.

Surface workflow improvements

About single-screen surfaces

QLab 3.0 tried, in vain, to manage single-screen surfaces as an automatic special case. This never quite worked right, particularly when compounded with other factors (inconsistent screen ordering in OS X, projectors not reporting serial numbers, and other nonsense). So as of QLab 3.1, single-screen surfaces are no longer a special case. They're just plain surfaces that happen to have one screen assigned. When you create a new workspace, you'll automatically get a surface for each attached display, but after that, nothing is taken out of your hands. Not using that built-in Color LCD as a surface? Go ahead and delete it. Need a new surface for a projector you just attached? Go ahead and create it. (If you don't have a Pro Video license, you won't be able to do much surface editing, but you can at least create the new surface now.)

This changes the workflow a bit for situations when you need to repatch a display. Now, instead of a special "Repatch" button in the surface list, you'll find a "Replace screen" popup in the surface editor.

Creating new surfaces

We've streamlined some of the most common workflows when creating a new surface. When you click on the "+" to create a new surface, you're greeted with a few options:

  • New Empty Surface: Creates a surface with no screens assigned, just like 3.0.
  • New With Display: Creates a surface matching the resolution of the display you select, and assigns that display to it.
  • Multi-screen surface dialogNew Multi-Screen Surface: Gives you controls for creating a surface with a regularly arranged set of identical projectors. You tell QLab what resolution the projectors are individually, how they're arranged, and how much overlap (if any) to give them, and it'll do the math. The new surface is populated with placeholders for the screens; just select each one and use the "Assign screen" popup button to assign them.

2×2 layouts

Along with the 2-wide, 3-wide, and 4-wide partial screen layouts, there's now a 2×2 layout option for Datapath x4 users.

Display rotation

The Ceiling checkbox has been replaced by rotation options in 90° increments. (This doesn't affect surface dimensions, so you may need to adjust your surface to match a 90° or 270° display.)

Guides

Have a multi-screen surface set up, and need to rough in your projectors? Use the "Guides" checkbox to bring up projector alignment guides. Red guides show you the edges and center of each projector, and a green dotted line shows where the overlap with each adjacent projector should end.

Guides: Setup Guides: Rendered

And more...

Is that all? Of course not! Some other video things that are new in this release:

  • Fade Cues can now fade video effect parameters.
  • The Audition window now shows all active surfaces.
  • Support for video output via Blackmagic DeckLink devices.
  • An option to bypass automatic edge blending on a per-projector basis. (You can still disable edge blending for an entire surface by setting the blend gamma to 0.)
  • Revamped video effects interface, now with draggable text fields for number values and ability to tab between fields.

There's lots more in QLab 3.1, but those are some of the highlights from the video world. Give it a try—we can't wait to see what you build with it!

Sean Dougall is a California-based composer and developer with Figure 53
@sean_dougall