Login | Register 
Products Applications Downloads Features Wiki forum Store

Release Notes/077/3700

From Derivative wiki

Jump to: navigation, search

Contents

Build 3700 - Sep 29, 2009

These are the release notes for the Sept 29, 2009 Official build 3700. The previous Official build was 2505 in May 2009.

Note: Build 3712 of October 13, 2009 fixes defects reported in 3700. See end section for detail.

Build 3700 contains many practical features that were added for those using TouchDesigner in production and art-making projects.

TouchDesigner 077 is "beta" although it's very solid and rich as a product. Our next official build will be the final, "gold" release of 077, so look for that in a few months.

As you scan through these improvements to 077, know that many of them are in response to the production you TouchDesigner users are doing, plus some things we anticipate you will find very useful as your TouchDesigner skills improve. Our goal is a for is a tool that can make "all things interactive".


Palette components

The Palette Browser holds a collection of components we've included with TouchDesigner. You can use the Palette as a learning tool by examining how these components are built. This release includes some new and updated components for you to try.

  • New Image Shaders - new GLSL TOP image effects are found in Palette > Shaders. It includes:
    • Twirl - Rotates pixels around a point.
    • LumaGlyph - replaces colors depending on their luminance level with color from a different texture.
    • Dent - stretches or collapses a region of the image as in a carnival mirror.
    • Dilate, Erode, ShredPixel, LightTunnel.
  • New Image Filters - Image filter components are TOP networks. New image filters are found in Palette > Video > Filters.
    • Pixellate - Makes the image appear blocky.
    • Pointillize - Renders the image in a pointillistic style.
    • RGBContrast - Adjust contrast of an image independent for red, green and blue.
  • Updated TUIK Gadget Library - The TouchDesigner User Interface Kit makes it easier than ever to build custom panels.
  • Equalizer - a 6-band parametric equalizer component. After you connect a CHOP audio stream to this component's input, you can adjust up to 6 frequencies. Multiple outputs give you separate channels for audio output and for RMS power for each selected frequency. You can find this in Palette > Tools > Equalizer.
  • Wallpaper Groups - There are 17 mathematical types of symmetric tiling. This component creates all 17 "wallpaper groups". See a movie of an example of the p6m tiling.

To make the browsing of components easier, in the parameter dialog, press the bulls-eye button to see only the non-default parameters.

The Palette can also hold components that you have built and wish to reuse often. Just drag your components into it.

New Keyframe Animation Pipeline

The animation pipeline in TouchDesigner has been completely re-designed. It is the first stage of a multi-stage animation system upgrade.

  • Check this new Keyframe Animation article explaining the parts of the pipeline and how to use them.
  • A new Keyframe Editor dialog is completely new user interface for animating.
  • A new Keyframe COMP component type used to hold channel and keyframe data.
  • Start animating from the parameters of your operators. Read Keyframe Animation for details.

Open Design

The keyframe system is DAT-based, making it fully open and flexible. In TouchDesigner, DATs are used for building UI, scripting, table management, variables, macros, HTML access, XML parsing, expression evaluation, ramps for the Ramp TOP and even for generating 3D in SOPs.

Keyframes are contained in DAT tables. The new Keyframe CHOP uses these DATs to interpolate keyframes and generate channels of samples. Being exposed means you can also generate keyframes procedurally or load keyframes from other software. So the Keyframe CHOP is now a converter from a DAT table of keyframes to a CHOP of multi-sample channels.

The editing of Keyframes is achieved through a new special-purpose Graph panel component type.

The new keyframe command can add, remove, set keyframes, as well as list channels. convert a CHOP into a keyframe table.

Alternate Panel Design

There is an alternative way to build control panels. You can now connect panel components in a hierarchy within one network by connecting their top/bottom node connectors, similar to how 3D object components are connected in a hierarchy. When connecting nodes this way, the top node in the hierarchy contains all the panels that are below it. (The "classic" way is to put panels inside other panels.) This allows the user to create an entire control panel in one network, and alleviates the problem of deep panel networks when building user interfaces.

For examples, look at any component in the Palette under Video -> Filter (left side of interface).

TUIK revamped

TUIK TouchDesigner's User Interface Kit now makes it easier to build custom interfaces by assembling its many gadgets components into an interface while working in a single network.

TUIK has been fully revamped to utilize the new panel parenting described above. TUIK was also simplified to allow gadgets to be created without first putting them into a container panel.

TUIK F10 shortcut - When you roll over a TUIK component node in the network editor, you can press F10 to cycle through (1) the control panel view, (2) the operator view of the out1 CHOP, and (3) the define DAT that allows you to edit the gadget's settings.

3D Geometry Instancing

There is now powerful instancing in Geometry components. By passing transforms and instance IDs to the shader via CHOPs, each instance can be rendered differently. This method of instancing uses GPU hardware-acceleration (requires a Geforce 8000 or later). One SOP in a Geometry object gets sent to the GPU, but it can be rendered many times, each with a different transform, and using GLSL shaders, each can have a separate shape, colors and textures.

The new Instance page on Geometry components -

  • Instances can be transformed using a CHOP's channels (one sample per instance).
  • A parameter determines the number of instances, or it can be controlled by the number of samples in the CHOP.
  • Instance ID (instance) is an attribute available to MAT shaders.
  • Any code in the vertex shader can customize the instance based upon the instance ID the uniform parameter.
  • the instance ID of a picked surface in a render is returned by the Render Pick CHOP.
  • Instances are only visible in a Render TOP or Render Pass TOP. Geometry viewers use a slower method to emulate the instancing.

UI Changes

  • Double-click the network background to bring up OP Create dialog
  • OP Create dialog now has a help summary at the bottom for each OP type. Then press RMB to get more detailed wiki help for each node type.
  • fast switch to Perform mode and back to Designer Mode - Click the [^] icon on the left of the top Layout bar to switch to Perform mode (see Window Placement). Then press the Esc key over the perform window to flip back to designer mode.
  • Stop Playing when Minimized, found under Edit -> Preferences -> General, now functional. When this preference is set, audio does not play either.
  • info on connecting lines - Middle-click on a ----->---- connecting line to get useful info about the 2 nodes it connects (exports, node references etc).
  • Dialogs -> Console - It combines all startup errors with the console log, and is more informative than before.
  • When Viewer Active is ON, the input and output connectors are visible when you mouse near them, and you can now connect inputs/outputs.
  • DAT tables navigation
    • You can now use the Tab key to jump between cells of DAT tables.
    • Up and down arrow keys will move between rows in spreadsheet cells.
  • new Preference Background Color for Objects, SOPs and Materials that affect all Geometry/SOP/MAT viewers. The default is 10% grey.
  • 10-bit color support added to windowing - The results are very noticeable on new 10-Bit Color Displays. The one draw back is that 10-bit color means there is only 2-bit available for alpha. (This is unlikely to be an issue though since TouchDesigner does not use blending equations that use the Destinatation Alpha as a factor in the blending (remember that the visible window is the only thing that is 10,10,10,2. TOPs continue to be 8,8,8,8 or 16,16,16,16, etc. and any drawing done into the window starts off at at least 16-bit while its rendering.)
  • Function keys in the Application Shortcuts table each have a unique identifier for overriding with custom scripts.
  • Default timeline length is 50 sec - If you started with a .tox file, it was 10 seconds.

CUDA now in FTE

The NVIDIA CUDA TOP is now available for use in FTE (must turn on Expert Mode operators to see it). It is no longer a Pro-only feature.

TOPs

  • inspecting exact pixel values in TOP viewers - on TOP Viewer, RMB -> "Display Pixel Values" gives you the exact XY, UV, and RGBA values of the pixel under the cursor.
  • Render TOP - proper transparency through multi-pass depth-peeling - The Render TOP has a new feature for rendering transparent objects in proper depth order. It is multi-pass and, for every pixel, renders the closest surface in the first pass, then the second-closest surface in the second pass, up to the number of passes specified by the parameter. It can be enabled on the 'Advanced' parameter page.
  • smoother sampling in all TOPs with Mipmaps - When you shrink an image, one or more pixels are combined to get each new pixel. Previously you had the choice between Nearest Pixel and Interpolate Pixel sampling modes, which don't take into account all pixels when scaling down. Now all TOPs can sample their input as Mipmaps, which gives better averaging of pixels when images are made smaller, either by reducing the image resolution, or by shrinking via Corner Pin or Transform TOPs.
    • On the Common page, the Input Smoothness menu has Mipmap Pixels, which affects the image output from the TOP.
    • On the Common page, the Viewer Smoothness menu has Mipmap Pixels, which only affects how you see the image in the node viewers.
    • The Default has not changed - The sampling behavior is still the linear Interpolate Pixel mode.
    • See Texture Filtering.
  • Movie In TOP - asynchronous http opening over network - now uses the parameter 'Disk Open Timeout' for network files that are downloaded via http://.
  • new Cube Map TOP builds a texture map in the format needed for cubic reflection maps. It accepts a vertical cross image, or 1 input per side of the cube.
    • Phong MAT can now use the Cube Map TOP for reflections and support was added for per-pixel normal mapped reflections.
  • new 2D Texture Arrays in TOPs - Texture Arrays can be created in the Texture 3D and GLSL TOPs. 2D Texture arrays are much like 3d textures, except they are sampled using a non-normalized w texture coordinate. (i.e, 0 is the first slice, 1 is the 2nd slice, 2 is the 3rd slice etc.). Texture arrays also don't support blending between different slices when sampling at coordinate that falls between two slices. This a much faster alternative to 3d textures when you dont need the inter-slice blending. Also the non-normalized coordinate is much more intuitive to use. Requires Geforce 8000 series or later.
  • Render TOP - new GLSL page to the Render TOPs which allows users to pass TOPs (samplers) and uniforms into GLSL MATs in a global fashion, instead of having to bind them to each and every MAT in the system (useful for many multi pass techniques).
  • GLSL TOP and GLSL MAT shaders can now have int and bool (boolean) uniforms, the values from the parameters will be converted internally for bools, anything not equal to 0 is true. For int the parameter value will be rounded.
  • getting alpha in RGB-only codecs movies using the Movie In TOP - This is a way of encoding alpha into RGB-only formats like H.264. and several other QuickTime formats. You need to construct the movie with alpha in the bottom half of the image (RGB = AAA), and the movie is double the height resolution.
  • GLSL TOP now supports array uniforms (set using CHOPs).
  • Locking 3D Textures and 2D Texture Arrays now supported - However it can be very memory intensive and the file saving process may run out of memory when doing it.

CHOPs

  • Audio Out CHOP level clamping - new 'Clamp Output' clamps the output between -1 and 1 to avoid blown speaker effects.
    • Goes quiet when the input switches to 0 channels.
  • Select CHOP multi-CHOP merge - now merges channels from multi-CHOPs like the Merge CHOP, and renames channels like the Rename CHOP.
    • new Automatic Prefix option builds on the 'Multi Select' behavior of prefixing all fetched channel names with their parent node's names.
  • Rename CHOP behaves more like "rename" in the Select CHOP.
  • CHOP units include "Fraction" - added 'Fraction' to several more CHOP start/end/width unit parameters: Composite, Cycle, Delay, Envelope, Filter, Lag, Limit, Noise, Resample, Shift, Spectrum, Stretch, Trigger, Trim. It is expressed as 0-1 range.
  • Perform CHOP timeslice_step channel - The new channel, Timeslice Step is the number of frames that Touch stepped forward for the current cook. It will be 1 when running 1000/$FPS msec or less, etc. It is the length of the timeslice in frames. It is related to the cook channel.
  • TOP to CHOP delayed download - The new option enables a delayed download from the GPU, which is faster because it doesn't stall the rendering. By default, the TOP to CHOP is done immediately - the image is copied from the GPU to the CPU, which interrupts the pipeline on the GPU, forcing the GPU to be idle (there is a slight delay of up to 5 msec).
  • Object CHOP Output Range - The timeslice option now outputs a real timeslice. This can be used to process the transforms coming from CHOP-driven geometry objects with full continuity. The drawback is that it will cook the geometry hierarchy for every intermediate frame since the last cook.
    • new 'Smooth Rotation' outputs a smooth rotation curve (without graphical jumps at 0, 90, etc).
  • Merge CHOP - removed 'CHOP' parameter (uses wired inputs only).
  • Audio Play CHOP command - The audioplay command - index of -1 now specifies all samples as described in the help.
  • MIDI In Map CHOP is much faster - It doesn't cook unless relevant events are being processed.

SOPs

  • new DAT to SOP
    • takes a list of point values and creates a SOP.
    • To merge attributes use the parameter Points DAT for point attributes and Vertices DAT for primitive attributes.
    • it merges in existing attributes for points or primitives, and will also add standard ones (N, Cd, T, uv, v, mat, Cd, dist, lod, pCapt, pCaptPath, pCaptData, pCatSkelRoot).
    • outputs a warning for out-of-bounds and unknown attributes.
    • input is optional. If no input specified, the points DAT and a Vertices DAT is used to create points and polygons. index column will be ignored.
    • can match attributes back by point or primitive number
    • can have attributes in DAT that aren't in a SOP.
    • Float, Int and String attributes can be used. The attributes are used for both Points and Vertices DATs, and you can only choose non-standard attributes to add. Attributes are added in order. If an attribute is listed in more than one of the three types, only the first type will be added.
    • merging attributes use Points DAT for point attributes and Vertices DAT for primitive attributes.
    • the input is optional. If no input is specified, the points DAT and a vertices DAT is used to create points and polygons.
    • index is the column for point/primitive number. If there is no index column for a DAT to SOP that's merging attributes, row number (-1) is used instead.
  • Add SOP - Extended DAT "Points Table" to allow named attributes. Turn on new parameter 'Named Attributes'. Add any of the following as columns in the DAT:
    • P(0) P(1) P(2) P(3)
    • N(0) N(1) N(2)
    • Cd(0) Cd(1) Cd(2) Cd(3)
    • uv(0) uv(1) uv(2)
    • Any other columns are added as single-float attributes.
    • Remember to turn off 'Compute Normals' when supplying them in the DAT.
  • Cache SOP - works now, and had a parameter re-vamp so it looks and behaves like the Cache TOP and Texture 3D TOP. If you use a Cache SOP, you will have to re-setup its parameters.
  • Point SOP custom attributes - added ability to create custom attributes in the Point SOP
  • Primitive SOP -
    • you can now create custom attributes (up to a vector with 4 values).
    • Added $GI (primitive group index), and $GCEX, $GCEY, $GCEZ (centroid of a primitive group) variables to the Primitive SOP. If a primitive is in more than one group, it just uses the first group that primitive is a member of.
  • Object SOP - each parameter now accepts a list of patterns of node names, instead of just a path to a single SOP.

DATs

  • new Serial DAT
    • this DAT reads serial data from the COM ports.
    • It is implemented as a FIFO like the MIDI In DAT.
    • Data can be expressed as newline-delimited ASCII or individual binary bytes.
    • Each message (ASCII line or byte) appends one row to the DAT and calls an optional script, similar to the FIFO, MIDI In, TCP/IP In and OSC In DATs
    • Data can be written through this connection via the new serial command.
  • new serial command works with the Serial DAT
    • Usage: serial serial_path [-b] value1 value2
    • Description: This will output a string of bytes to a Serial DAT. The bytes can be either individual byte values, or a string of characters. Newlines are automatically appended in the latter case.
    • Example: serial /project1/serial1 -b 65 66 67
  • new TCP/IP In DAT - captures all the messages without any queuing or buffering, and allows you to send it any messages you want.
    • this DAT reads data from a TCP/IP connection, either originating or connecting to a connection.
    • Data can be expressed as newline-delimited ASCII or individual binary bytes.
    • Each message (ASCII line or byte) appends one row to the DAT and calls an optional script, similar to the FIFO, MIDI In, Serial In and OSC In DATs
    • Compatible with Pipe Out CHOPs.
  • new SOP to DAT
    • This takes a SOP and extracts its point or primitive (polygon/etc) data. Points will extract position as well as selected attributes.
    • The output table consist of 1 row of headers, follow by rows of data. The first column is always the point or primitive number.
    • outputs a list of polygon vertices and a flag indicating whether they are closed or not.
    • extracts point data or primitive data
    • first row = data/attribute name
    • first col = point/primitive number
    • list of attributes to extract, default all
    • will extract point or primitive attributes
    • index is the column for point/primitive number. If there is no index column for a DAT to SOP that's merging attributes, row number (-1) is used instead.
  • the family of Execute DATs - On Start, On Create are initialized in numbered alphanumeric order now, to assure a predictable execution order.
  • Text DAT - On Start and On Create refinement - When you (1) drag-drop a .tox to a network or (2) double-click a .tox in a folder, or (3) click a .tox on our the web site and open it with TouchDesigner, it will run all scripts in the .tox that have "On Create" turned on, and then run all scripts in the .tox that have "On Start" turned on.
  • new Output Table Size parameter in Evaluate DAT - This allows the formula table to be larger than the data table.
  • Evaluate DAT v() functions - The functions that get other cells in the Evaluate DAT - v(), vr(), vc(), vrc() functions now return floats only. A new family of functions vs(), vsr(), vsc(), vsrc() will return string values, similar to if() and ifs(). Not completely backwards compatible, but unlikely to affect anyone!
  • XML DAT filtering - added 'Parent Name' and 'Parent Value' to the filter criteria.

Materials

  • Texture Sampling Parameters in MATs have been overhauled. It is now a collapsible part of the parameter box instead of a popup dialog.

Control Panel Design

  • Window Component - new menu option to place the window relative to where the mouse is located.
  • new dragrollover panel value - This Panel Value switches from 0 to 1 when something that can be dropped is dragged over.

Commands

  • comparing two .toe files - You can now compare what has changed between two .toe files.
    • new toestats command outputs a summary of all the components of a .toe file, The -p option lets you refine the output using a pattern to match.
      • toestats -d file1 file2
    • new toediff command compares the components of two files.
      • toediff file1 file2
  • new Preference "Allow Scripts to run System Commands" - when set to "Always", TouchDesigner is allowed to run "system" commands. The preference is is "Never" by default.
  • system command now by default requires user-acceptance before it is run. There are now other commands that perform most of what the system command does: mf, ld.
  • new command to make new folder - mf - Make a folder inside the current working folder. Multiple nested folders can be specified at once. Usage:
mf path [path2 path3 ...]
Example:
mf totals1
mf pics1/january pics2/january
(existing folder commands are: cf (change to), lf (list), pf (print))
  • new ld command lists the disks and network drives attached to your system.
  • lf command - added -t option to output the time stamp of the file.
  • system command - removed the automatic 'cmd /c' prefix to every command. This is operating system-specific, and only works for scripts. Please add it manually if your calls require it. (i.e. they are command scripts).
  • opparm option to pulse a parameter - opparm -p oppath parmname (value) pulses the parameter values to the specified value(s), cooks the operator, then returns the parameters to their original values. This is useful for driving a parameter that uses the 0 to 1 transition to initiate an action, like the Reset parameter or Cue parameter in a Movie In TOP.
  • opparm command - The -c option is now gone, its now automatically clicked when you opparm the button-style parameter.
  • audioplay command - an index of -1 now specifies all samples as currently described in the help.
  • time command outputs the elapsed time the application has been running.
    • time [-d] will return the current calendar date + time.
  • new root variables OP_SELECT, OP_ROLLOVER - These are updated when you click/rollover a tile (These are similar to GADGET_SELECT, GADGET_ROLLOVER variables.)
  • exportmap command clears all export mappings from a CHOP with the new -C option.
  • new filechooser -b option to browse for folder

Expressions

  • expressions in double-precision - extended the expression library to use double precision (64-bits) instead of floats (32-bits) for higher precision in expressions.
  • tab(), tabr(), tabc(), tabrc() expressions cook better - they now create a node cooking dependency when they fail to resolve to any specific cells. (Keeps nodes properly dependent on tables even when the rows/columns they are looking for aren't present).
  • new expressions to test Variables
    • varexists("NAME") is 0 or 1.
    • vartype("NAME") returns types:
      • undefined
      • script
      • operator
      • path
      • component
      • root
      • builtin
      • system
    • varpath("NAME") is where the variable resides in the case of path, root and component variables.
  • New tabmr(), tabmc() expressions allow patterns matching in the name parameter - Examples:
    • tabmc("/dats/table1", 2, "product")
    • tabmc("/dats/table1", 2, "*")
    • tabmr("/dats/table1", "month", 3)
    • tabmr("/dats/table1", "*", 3)
  • chopts(path, index) (chop timeslice) Wherever you have: chop(path) to reference the value at the current time Use chopts(path, $I) to index the current timeslice.
  • ip(n) ipf(n) - new expressions that retrieve the wired input paths. Similar to opinput(), but recursive, and works through first input only:
    • Returns the (full) relative path to Nth wired parent of the currently evaluated node. For example owf(1) would return the node immediately wired to the first input. owf(2) would return the first input's input, etc. This expression should only exist within a parameter.
  • new monitor*() expression to query about the monitor.
    • new coordtomonitor() expression.

New or revised wiki pages

Bug Fixes and Improvements

  • Fixed zooming in the TOP viewer so it is relative to where you click the cursor.
  • Windows 7 - We are testing/using Win 7 with TouchDesigner. Not officially supported yet.
  • Fixed "Desktop", "Application Data" and "My Documents" paths to not be hard-coded (changes for Windows 7).
  • Movie playback updates for newer libavcodec, also fixing popping in some audio playback.
  • Fixed a case with the Video In TOP that caused long pauses if you tried to select one camera with both TOPs.
  • Changed the behavior of network clone immune a bit, it is no longer inherited down into a COMP, through a Clone. (i.e if a clone’s parent is network immune, the clones children won’t be come clone immune:
    • Network Clone Immunity isn't inherited into a clone from the clone's parent. That is to say, if you have the node container1 set to network clone immune, and inside it there is button1 and button2. If button2 is a clone of button1, its contents do not behave as if they are network clone immune.
  • Tile viewers can now correctly display the contents of 3D Textures and 2D Texture Arrays.
  • Fixed new Matte TOP having reversed inputs.
  • 3dGLSL.tox working again.
  • Fixed memory leak in NURBs code.
  • beat command: -t (tap) fixed.
  • Fix bug with inside panel value turning off after a mouse move despite still being inside components.
  • Fixed bug that broke the Pre-Fill feature of the Texture 3D TOP.
  • Feedback TOP will now load up in a better state.
  • Fixed a crash in the Add SOP for when there are too many columns and no named row.
  • Fixed out of bounds error in SOP to DAT.
  • OP Create menu comes up faster. faster expression parser. DAT exporting is much faster now also.
  • Movie In TOP no longer black out the image when Play is set to 0.
  • Fixed problem where 'controlpanel -o' would ignore most of its settings.
  • Fixed problem with parameter dialog not being shrinkable after it is toggled on and off.
  • Isolated cases of frame de-sycning, specifically when timeslice CHOPs wrap around.
  • Fixed bug in TCP/IP and OSC input DATs/CHOPs that were reversing each cooks worth of messages.
  • Fixed look-up crash in TOP (TOP to CHOP) when the CHOP has only 3 channels.
  • fixed bugs with looping audio files, and with libavcodec reading some .wav files.
  • Pipe Out CHOP should no longer trash CPU time when 'Originate' is off. Fixed Pipe In/Out so 'Send All Data' works with the Pipe In queuing turned on.

Known Bugs

  • Please report any issues you are having with TouchDesigner in the forum.

Changes to 3700 - Build 3710

  • Clip and Clipblender CHOPs are re-enabled
  • Order-independent transparency now works correctly with GLSL MATs.
  • Fixed crash in Render Pick CHOP.
  • Crash fix for uninitialized variables.
  • Fixed inside panel value update when mouse is dragged outside of another window.
  • You can now select the comparison function to use with the 'Discard Pixels Based on Alpha' feature in the Common pages of MATs.
  • DAT viewers were growing too large.
  • Primitive SOP was not able to reverse vertices.
  • The CHOP exporter was broken.
  • wire-drawing speedups.
  • Fixed bug with evaluating double variables in braces ( ${{A}_B} )
  • Fix a bug where the horizontal scrollbar in DAT viewers did not appear

Changes to 3700 - Build 3712

  • fixes to Keyframer
  • Fixed duplicate channel bug in Select CHOP when same CHOP was wired in and specified in the path parameter.