Released on 2014.08.12

With this release came numerous new nodes and example compositions, as well as many bug fixes and usability improvements. New features include:

  • 3D object filter nodes to warp 3D objects
  • Stereoscopic rendering nodes for 3D imaging (premium)
  • A mesh warping node for rendering on planetariums, domes, and other surfaces (premium)
  • A barcode scanning node that finds barcodes within images
  • Window and screen nodes to control a composition's fullscreen status and other window parameters
  • Audio output for the movie player node
  • A Cocoa API to make it easier for developers to integrate Vuo into their Mac applications

Changes

Here's what we've done in the last 3.5 months:

Example Compositions

Added 34 new example compositions:

  • vuo.audio
    • Control Volume
    • Pan Audio
    • Play Audio File And Loop
  • vuo.image
    • Find Barcode In Syphon Image
    • Rotate Movie
    • Scan Barcodes
    • Warp Image For Fisheye Projection (premium)
  • vuo.layer
    • Change Grid Spacing
  • vuo.list
    • Show Instant Replay
  • vuo.math
    • Graph Functions
    • Paint with Math
  • vuo.midi
    • Receive Midi Notes
  • vuo.motion
    • Draw Curve
    • Spring Back
  • vuo.mouse
    • Show Mouse Clicks (recreated)
  • vuo.movie
    • Play Movie With Sound
  • vuo.scene
    • Add Noise To Clay
    • Bend Sphere
    • Divide Sphere
    • Explode Sphere
    • Facet Sphere
    • Pinch Sphere
    • Ripple Grid
    • Skew Sphere
    • Spike Sphere
    • Trim Sphere
    • Twirl Grid
    • Bounce Stereo Sphere (premium)
    • Change Traffic Signal
    • Display Scene with Floor
    • Replace Shader For Scene
  • vuo.shader
    • Spin Wireframe Sphere
  • vuo.window
    • Show Windows On 2 Screens
    • Toggle Aspect Ratio
  • Removed event-only cables into drawers, which are no longer necessary.
  • Modified the Aim Flashlight composition to display the spotlight immediately, rather than waiting until the first mouse move.
  • Increased font sizes in compositions where the text was hard to read on Retina displays.
  • Fixed a bug in Play Movie With Button where the playhead could travel past the end of the scrubber bar. (Thanks to bLackburst for reporting this issue!)

Built-in Nodes, Types, and Input Editors

  • Added nodes:
    • vuo.audio
      • Adjust Loudness
    • vuo.event
    • vuo.image
    • vuo.layer
      • Arrange Layers in Grid
      • Combine Layers (and renamed the previous node by that name to Combine Layers with Transform)
    • vuo.list
      • Enqueue
    • vuo.math
      • Calculate
      • Exponentiate
    • vuo.motion
      • Smooth with Spring (which replaces Spring)
    • vuo.scene
      • Arrange 3D Objects in Grid
      • Bend 3D Object
      • Divide 3D Object
      • Explode 3D Object
      • Facet 3D Object
      • Add Noise to 3D Object
      • Pinch 3D Object
      • Ripple 3D Object
      • Skew 3D Object
      • Spike 3D Object
      • Trim 3D Object
      • Twirl 3D Object
      • Show Back of 3D Object
      • Get 3D Object Bounds
      • Normalize 3D Object
      • Change All Shaders
      • Change Shader for Material
      • Make Stereo Camera (premium)
      • Make Targeted Stereo Camera (premium)
      • Render Scene to Stereo Images (premium)
    • vuo.screen
      • Get Screen Values
      • List Screens
      • Make Screen from Name
    • vuo.shader
      • Shade with Wireframe
    • vuo.type
      • Convert Boolean to Real
    • vuo.window (Thanks to bLackburst for suggesting these features and to mnstri, Paul, and Chris for pledging credits!)
      • Change Window Aspect Ratio
      • Reset Window Aspect Ratio
      • Change Fullscreen Status
      • Change Window Position
      • Change Resizable Status
      • Change Window Size
      • Change Window Title
  • Added a decodedAudio output port to the Play Movie node, enabling movie sound to be played within Vuo.
  • Added a color input port to the Vignette Image node.
  • Added the ability to output a 2D, 3D, or 4D point from the Make Gradient Noise node.
  • Enabled the Get Image node to read high dynamic range images (.hdr, .exr, and .tiff files).
  • Enabled image filter nodes to process high dynamic range images (try opening an .hdr file and changing its gamma using Adjust Image Colors!)
  • Added a center, fit, and hasLeftHandedCoordinates input port to the Get Scene node.
  • Added a lineWidth input port to the Make Line (Strip) Mesh nodes and a pointSize input port to the Make Point Mesh node.
  • Improved line and point rendering by converting them to triangles during rendering, which enables Vuo to render large points and wide lines.
  • Added a colorDepth input port to the Render Layers/Scene to Window nodes.
  • Added a finishedPlayback output port to the Play Audio File node.
  • Renamed the vuo.vertices node set to vuo.mesh. Modified these nodes to input/output a singular Mesh type rather than a list of the Vertices type.
  • Made the Ripple Image node output a rippled image with tiny wavelength, rather than a solid-color image, when the wavelength input port value is 0.
  • Restricted the Receive OSC Message node's udpPort input editor to the range of valid UDP ports.
  • Improved graphics performance by removing some unnecessary CPU-GPU roundtrips.
  • Chose more sensible default values for some nodes' input ports.
  • Changed the Get Scene node so that it makes all textures wrap by default, to better support meshes with out-of-range texture coordinates.
  • In the Receive Kinect Image node's receivedDepthImage output, inverted the colors so that it matches the new depth image outputs on the Render Scene to Image and Render Scene to Stereo Images nodes.
  • Made the Vignette Image node treat negative width inputs as if they were 0.
  • Antialiased the default checkerboard shader.
  • Adjusted the default window size for the Render Layers/Scene to Window nodes so that they content area (rather than the window's frame, including title bar) is 1024x768. (Thanks to Paul for making us aware of this problem.)
  • Enabled the Make Parametric Mesh/Points/Grid nodes to interpret the % (mod) operator in math expressions.
  • Changed the Make Parametric Mesh/Points/Grid nodes to accept deg2rad and rad2deg functions, rather than the DEG2RAD and RAD2DEG constants, in math expressions.
  • Changed the Make Parametric Mesh/Points/Grid nodes to work in degrees, rather than radians, for their trigonometric functions.
  • Increased the color depth of images output by Receive Kinect Images and Make Image from Channels.
  • Appended with Transform to the names of the Copy Layer, Copy 3D Object, and Combine Layers nodes that input the Transform data type.
  • Increased the width of text input editors to match the widest text constant flags.
  • Simplified the event-blocking behavior of the Smooth with Duration/Rate/Inertia nodes by removing a special case where they would transmit their first event if it hit the time port, even if it didn't hit any other ports.
  • Improved the Receive Leap Frame node's accuracy at tracking hand and finger movements by updating to version 2 of the Leap Motion SDK.
  • Changed the default position of spotlight nodes to make scenes more visible. The lights are now in the same position as the camera instead of in the top left of the scene.
  • Enabled error messages from nodes to show up in the Console application on Mac OS X 10.8 and later. Previously it only worked for earlier Mac OS X versions.
  • Slightly changed how the Calculate Loudness node calculates loudness so that it's based on the same formula as the new Adjust Loudness node.
  • Fixed intermittent hangs in graphics nodes.
  • Fixed rare crashes when file downloads time out for nodes such as Get Image.
  • Fixed a bug where the Receive MIDI Events node would stop outputting events if the MIDI device was changed while the composition was running.
  • Fixed a bug where transparent layers rendered in front of opaque layers resulted in a transparent composite image.
  • Fixed a memory leak in nodes that have a port of type Rendered Layers.
  • Fixed a bug where the Play Movie node would play some movies way too fast.
  • Fixed a bug where the Send Image via Syphon node would send an image every time the node executed, not just when the sendImage input port received an event.
  • Fixed a bug where the Make Parametric Points/Grid/Vertices nodes would output invalid numbers with fewer than two rows/columns/subdivisions.
  • Fixed a bug where the Make Radial Gradient Layer/Image nodes would output a gradient with a very large radius if the input radius was negative.
  • Fixed a bug in the Make Parametric Grid/Mesh nodes where the row and column port names were swapped.
  • Fixed a crash in the Get Scene node when opening a 3D model that contains non-UTF8 text.
  • Fixed a bug in the Get Scene node where the imported scene would have the wrong transformation.
  • Fixed incorrect tangents and bitangents along the edges of the mesh created by Make Parametric Mesh.
  • Fixed a small memory leak that happened for every light every time a scene was rendered.
  • Fixed a bug where the Copy Scene node interpreted its rotation input values as radians instead of degrees.
  • Fixed a bug in the Get Scene node where the created scene would have its normal and specular images swapped.
  • Fixed a bug where points created with the Make Point Mesh node, such as in the Make Terrain example composition, would not render on some systems.
  • Fixed a crash when editing a font color in a font input editor after opening a color input editor.
  • Fixed a bug where cameras and lights that were child objects of another 3D object didn't respect the parent object's transformation.
  • Fixed the too-small shadow produced by the Make (Scaled) Layer with Shadow nodes.
  • Fixed a bug in the Render Image to Window node where the window size was not constrained to fit on the screen and, as a result, tall windows would pop back to their starting position after being dragged downward.
  • Fixed hangs when the composition window becomes tiny by preventing it from getting smaller than 16x16.
  • Fixed at least some instances of an intermittent bug that prevented composition windows from being moved from their original position. (Thanks to mnstri for reporting this issue!)
  • Fixed inconsistent behavior for the vuo.mouse nodes on compositions running in fullscreen on a secondary display.
  • Fixed a hang in the Receive MIDI Notes node when there are no MIDI devices.
  • Enabled the fullscreen arrows button in the top-right corner of composition windows (Mac OS 10.7 and up).
  • Fixed a bug where non-fullscreen composition windows were ignoring mouse events while another composition window was fullscreen.
  • Fixed a bug where a node description for an internal (not in Node Library) node would be displayed for drawers.
  • Fixed the inability to use the Rendered Layers port type within a list.

Vuo Editor

  • Added a "Zoom to Fit" (⌘9) menu item.
  • Added a Fire on Start node to each new (non-protocol) composition.
  • Added a user interface to prevent and inform about invalid feedback loops in compositions. When a cable is dragged over a port that would lead to an invalid feedback loop, or when a composition containing an invalid feedback loop is opened, the nodes and cables involved are highlighted in red and a message is displayed.
  • Added support for premium nodes.
  • Added context menu items for actions that could previously only be performed by mouse or keyboard interaction.
  • Added a triangle symbol next to each port that has a port action.
  • Remembered the position and size of the Node Library when the Vuo Editor is quit and restarted.
  • Simplified the visual design of trigger ports by removing the spikes from their outline.
  • Made it easier to drag drawer handles by increasing the area where they can be grabbed.
  • Removed the word "item" from drawer port labels so they take up less horizontal space.
  • Made port popovers display when the port is clicked on instead of when the port is hovered over.
  • Made node descriptions display in a panel below the Node Library instead of in popovers.
  • Changed the ordering of nodes in the Node Library's "Display by Name" mode to be ordered by popularity (based on usage within the example compositions) instead of alphabetically.
  • Improved the ordering of search results in the Node Library search. Matches on the node title are listed first, followed by matches on the node class name, followed by matches on keywords. Within each group, the nodes are ordered by popularity.
  • Reduced the margin around the Node Library.
  • Removed the "Titles" / "Class Names" buttons from the Node Library. (You can still change the display mode via the View > Node Library menu.)
  • Made the borders of event-only input ports more visible.
  • Enabled crash reports for running compositions to show the Vuo version number.
  • Improved the responsiveness of the Stop button during live coding. When the Stop button is clicked, any enqueued live-coding updates are canceled, so the composition doesn't have to wait on them before stopping.
  • Added "premium" as a keyword, searchable in the Node Library, for all premium nodes.
  • Fixed choppy movement of windows when dragging them by grabbing the toolbar.
  • Fixed the "Don't Save" button being selected by default in the Save dialog on some systems.
  • Fixed a bug where connecting a non-published data-and-event cable to an input port with incoming published event-only cables (but no incoming published data-and-event cables) would displace the published cables.
  • Fixed a bug where a cable would remain highlighted after moving the mouse directly from the cable to a drawer.
  • Fixed a bug where a drawer's width would not be immediately adjusted when the width of a constant flag below it changed.
  • Fixed the composition's menu not appearing in the menu bar when a composition first starts running on Mac OS X 10.9.
  • Fixed a bug where renaming all selected nodes would erroneously allow renaming drawers, too.
  • Fixed the bottom pixels being cut off of some small icons on Retina displays.
  • Fixed an occasional crash when a composition window is closed while running and in Show Events mode.
  • Fixed a bug where the canvas would sometimes be too large, resulting in scroll bars that allowed scrolling around a large blank area.
  • Fixed a bug where an input port's constant value would sometimes say "null" after the cable into the port was deleted.
  • Fixed a bug where the constant input port values on a drawer would revert to their default values when input ports were added to or removed from the drawer during live coding.
  • Fixed the slow response the first time the Node Library is searched.
  • Fixed a bug where the "Set Data Type" menu item would have no effect for some nodes with multiple generic port types.
  • Enabled the composition's Quit menu item to work if the Vuo Editor has crashed.
  • Fixed bugs where the "Vuo Editor > About..." menu item would not make the About box visible if it was already open but behind other windows or minimized.
  • Fixed a bug where, if a port popover was displayed and then the composition had a live-coding update, the popover might not report a data value received shortly after the composition updated.
  • Fixed a bug where the Window menu failed to list minimized windows.
  • Fixed crashes when closing composition windows under certain circumstances, such as when all nodes and cables are selected.
  • Fixed a bug where empty Text items within a List port value didn't show up in the bulleted list in the port's popover.
  • Fixed intermittent crashes in the composition (with zmq_abort() error messages) during live-coding. (Thanks to bLackburst for reporting this bug!)

Documentation

  • Vuo Manual
    • Added sections:
      • Port Actions
      • Keyboard Shortcuts
    • Expanded sections:
      • Troubleshooting
      • Controlling the Flow of Events
      • Using Drawers
    • Updated the manual to reflect recent changes to Vuo.
    • Fixed the alignment of arrow annotations in illustrations in the manual. (Thanks to mnstri for reporting this problem!)
  • Node descriptions
    • Added descriptions for all new nodes.
    • Expanded and updated the descriptions for many existing nodes.

Vuo Compiler

  • Changed drawers (Make List and Make Dictionary nodes) so they no longer need an event in order to pass their output value on to the connected input port.
  • Fixed crashes, hangs, and spurious "deadlocked feedback loop" Console messages for some compositions with feedback loops. (Thanks to joeladria for reporting this problem!)
  • Fixed hangs when running some compositions with multiple trigger ports and feedback loops.
  • Fixed a memory leak that occurred with each linear chain of nodes executed within a composition.
  • Fixed a memory leak that occurred with each node execution when running a composition as a standalone executable or exported application.
  • Fixed a bug where a done port would not output an event if the event was blocked by walls or doors.
  • Fixed a bug where an event into a walled input ports would not be blocked if the node also had an input port with a door.

SDK

  • Compiler and runner
    • Added a Cocoa API to support running compositions within Mac applications.
    • Modified the VuoPluginApp example to use the Cocoa API, to use explicit reference counting instead of ARC, and to work in both 32-bit and 64-bit modes.
    • Added support for inputting and outputting GL_TEXTURE_RECTANGLE_ARB textures.
    • Improved graphics performance in the RunImageFilter-Cocoa example application to reduce vertical-refresh tearing.
    • Fixed intermittent crashes upon quitting the RunImageFilter-Cocoa example application.
    • Fixed crashes when the composition's Quit menu item is used more than once before the composition has a chance to quit.
  • Node classes
    • Added the ability to specify whether an input port has a port action.
    • Updated documentation on node class naming conventions.
  • Input editors
    • Added the VuoInputEditorWithLineEditList base class as a starting point for input editors that display a series of text fields.
  • Vuo framework
    • Reduced the size of the LLVM libraries within the Vuo framework.
    • Encompassed the LLVM libraries within Vuo's umbrella framework so that client applications don't have to manually link to the LLVM libraries.
    • Updated the instructions for building the Vuo framework from source code, and adapted them to work on Mac OS X 10.9.
  • Command-line tools
    • Added some error-handling so the command-line tools fail gracefully instead of crashing. This does not yet work for all errors, but does work for some common ones including missing node classes and invalid feedback loops.

Download