This release focuses on the developer tools provided with Vuo. It finalizes the API for running compositions, creating node classes and types, and displaying input editors. It provides an SDK with command-line tools for compiling, linking, rendering, and debugging Vuo compositions. It also adds a Blend Image node class and some new example compositions. This is an alpha release. Alpha releases may include changes that break compositions you made with previous versions.

Changes

Here’s what we’ve done in the last 3 weeks:

Documentation

  • Revised the user manual sections to improve the overview of basic concepts and the detailed explanation of events and nodes. [#4483]
  • Added documentation on creating library modules used by node classes and types. [#4018]
  • Updated the documentation on writing node classes and types to reflect recent changes. [#5399] [#5521] [#5611] [#5669] [#5769]
  • Fixed the rendering of compositions with drawers in the user manual. [#6076]
  • Fixed the instructions for installing JSON-C, which placed a file in the wrong directory. [#5560]

Examples

  • Added the WalkCaterpillar.vuo example composition, which demonstrates hierarchical scene transformations, mouse interaction, and animating an object toward a point. [#5779]
  • Added the FlipCoin.vuo example composition, which demonstrates the use of 2D images as 3D scene objects, mouse interaction, and an action performed after a wait. [#5779]
  • Added the PlayTennis.vuo example composition, which demonstrates a game with a bouncing ball, a mouse controller, and a human player versus a computer player. [#5760]
  • Added the BlendImages.vuo example composition, which demonstrates the Blend Image node. [#5603]
  • Simplified some example compositions by using the node classes added in this release. [#5754]

Vuo Editor

  • Changed the way the Vuo Editor handles collapsed type-converter nodes that are rendered unnecessary by new cable connections. They are now deleted, instead of just being uncollapsed. [#5679]
  • Changed the way type-converter nodes with list inputs (drawers) are rendered. To avoid problems with rendering the drawers, prevented the type-converter nodes from being collapsed. [#6062]
  • Increased the draggable area of drawer handles to make it easier to initiate a drag. [#6106]
  • Renamed the keys in the Vuo Editor preferences file that are used to remember the Node Library’s visibility when closing and reopening Vuo Editor. [#3854]
  • Removed the use of AppleScript to bring the composition to the foreground when it’s first opened, as this workaround is no longer necessary. [#6130]
  • Fixed crashes when displaying port popovers while a composition is running. [#5318]
  • Fixed “About” menu item not showing up when a composition is open. [#5083]

Built-in Nodes, Types, and Input Editors

  • Added the Blend Image node class. [#5603]
  • Added node classes for converting between reals/integers, 2D points, 3D points, and 4D points. [#5754]
  • Added the Combine Scene Objects node class. [#6103]
  • Changed the Render Scene to Window and Render Scene to Image nodes to accept a list of scene objects, rather than a single scene object. [#6103]
  • Removed the childObjects port from the Make Scene Object node, since it was confusing that the shader input did not apply to the child objects. [#6103]
  • Renamed some vuo.scene nodes and their ports to make the use of terms “scene” and “scene object” more consistent. [#6009]
  • Changed the title of the window displayed by the Render Scene to Window and Render Image to Window nodes to use the term “scene” instead of “scenegraph”. [#6009]
  • Added a remainder port to the Divide (vuo.math.divide.real) node class. [#6082]
  • Renamed the VuoSceneRenderer and VuoImageRenderer constructors to be consistent with similar functions. [#5781]
  • Added spaces to the summaries of VuoPoint2D, VuoPoint3D, VuoPoint4D, and VuoColor values to make them easier to read in port popovers. [#2786]
  • Renamed ports on some vuo.logic and vuo.math nodes to be consistent with similar nodes. [#6112]
  • Changed the vuo.select and vuo.list nodes use one-based indexing instead of zero-based and to use more understandable port names. [#6126]
  • Added vuo.select node classes with a boolean which port. [#6126]
  • Renamed the VuoMIDI and VuoURL types to VuoMidi and VuoUrl. [#6142]
  • Renamed the vuo.list node classes to use the exact name of the type they operate on, to facilitate automatically generating these node classes in the future. [#6142]
  • Added Get Item from List node classes for more list types. [#6142]
  • Renamed the vuo.device.mouse.* node classes to vuo.mouse.*. [#6066]
  • Renamed the vuo.scene.object.* node classes to vuo.scene.*. [#6066]
  • Fixed the input port type for Are Equal (vuo.math.areEqual.real) node class. [#6081]
  • Fixed incorrect serialization of VuoPoint2D, VuoPoint3D, and VuoPoint4D values. [#6105]

SDK

  • Provided command-line tools for compiling, linking, rendering, and debugging compositions. [#3793]
  • Changed the way that metadata about node classes, types, and library modules is specified. Instead of defining certain global variables in the node class, type, or library, you use the VuoModuleDetails macro, which accepts a JSON-formatted string. [#5669]
  • Changed the format for version numbers in node classes, types, and library modules to use the Semantic Versioning scheme. [#5769]
  • Changed the input editor API to use Qt plugins’ metadata, instead of a getType() function, to specify the data type edited by an input editor. [#5076]
  • Renamed the input editor plugin interface. [#5076]
  • Added more information when registering data with the reference-counting system to help with debugging. [#2987]
  • Renamed the reference-counting functions to be consistent with other functions. [#5781]
  • Changed the VuoList functions to use one-based indexing instead of zero-based. [#6111]
  • Added a getIdentifier() function to the VuoCompilerTriggerPort class, making it easier for code that uses the VuoRunner API to work with trigger ports. [#2995]
  • Changed the VuoRunner and VuoInputEditor APIs to use JSON-C objects instead of JSON-formatted strings when getting and setting port values. [#5560]

Vuo Compiler

  • Made the compiler generate the TYPE_valueFromString, TYPE_stringFromValue, TYPE_interprocessStringFromValue, TYPE_retain, and TYPE_release functions, rather than requiring them to be written in the type definition. [#5399] [#5521]
  • Added an optional TYPE_interprocessJsonFromValue function to the type API, replacing the TYPE_interprocessStringFromValue function that is now generated automatically. [#5521]
  • Improved the way that library modules (.bc files used by node classes and types) are compiled and linked. Allowed library modules to define their own metadata, including dependencies. [#4018]
  • Changed the file extension on compiled node classes from .bc to .vuonode. [#4977]
  • Changed the way node display names are converted to camel case when writing them to a .vuo file. Each letter after a space now becomes capitalized. [#3259]
  • Fixed crashes and incorrect composition serialization when there are node display names or port constant values with non-alphanumeric characters. [#3259] [#6127]

Known Issues

Documentation

  • The Vuo Manual has not yet been updated to cover some new and changed functionality. [#3281]
  • The Vuo Manual is incomplete. [#3281] [#2937] [#2577]
  • Some nodes are not well documented. [#2786]

Examples

  • WalkCaterpillar.vuo and PlayTennis.vuo only get correct mouse positions if the composition window is the same size as the screen, since there’s not yet a way to convert between screen and window coordinates. [#5779]
  • RunImageFilter-Cocoa-NewProcess leaks textures. [#6153]

Vuo Editor

  • The editor may hang when attempting to display a port value popover while the composition is being reloaded (after being modified while running). [#5318] [#5390]
  • When a cable is disconnected while a composition is running, the input port does not keep its most recent value. [#3294]
  • Collapsed type-converter nodes aren’t selectable. [#3783]
  • On some systems, the incorrect font is used to render node and port titles. [#5159]
  • For some port types, the constant flag displays its value in quotation marks or with backslashes. [#5700]
  • When a Discard Data from Event (dataAndEvent -> event) node is collapsed and attached to an input port, it covers up the input port’s constant flag. [#6059]
  • The composition gets recompiled too many times if you drag the handle on a list drawer while the composition is running, slowing down live coding. [#6041]
  • When a cable is disconnected from an input port, the input port’s constant value is not set to the most recent data from the cable. [#3294]

Built-in Nodes, Types, and Input Editors

  • Some values of type VuoImage are not properly released when the composition is modified while running. [#5418]
  • Data editor source code is currently classified as proprietary, making it difficult for 3rd-party developers to create data editors. [#5662]
  • Scenegraphs with many child objects render too slowly. [#5937]
  • Graphics rendering in the scene window pauses while a menu is open. [#5961]
  • Graphics rendered in the scene window turn black or flicker while resizing the window or switching between spaces. [#5971]
  • The scene window’s full-screen arrows (in the top right corner for OS X 10.7 and up) cause the window to fade out as it goes full-screen and to handle shortcut keys incorrectly. [#5972]
  • The VuoColor input editor is not positioned over the port being edited. [#5351]

Vuo Compiler

  • There’s hardly any error checking during the composition compiling and linking process. If compilation fails, the compiler may crash. Currently some messages may be printed on the console, so check there first if something isn’t working. [#2341]
  • Vuo Compiler crashes if nodeInstanceData returns a bool type. [#4016]
  • Vuo Compiler crashes if nodeInstanceData returns a struct type. (Workaround: Return a pointer to a struct.) [#3942]
  • Vuo Compiler crashes when a port has certain struct types with few members, such as a struct with two int members. (Workaround: Add some unused members.) [#4124]
  • Vuo Compiler adds unnecessary dependencies to built compositions. [#3021]
Version
0.4.8