Release Notes

From TouchDesigner 088 Wiki

For details on latest Official build, see Build 62160.

For details on 099 Beta Experimental Builds, see Experimental Release Notes.

New Feature Summary

Custom Parameters

Custom parameters let you create new parameters on Components, Script operators and C++ Operators. They appear on new Parameter Pages of the Parameter Dialog. This will radically improve the way you make things! You can export to custom parameters, put expressions in them, and link them to interactive controls inside customized Container components. You will be able to build things where users less-frequently need to go inside the component to figure out what they do. Where in the past you may have stored and states in tables or CHOPs, you may now choose custom parameters to hold some of that data/state info. They have the advantage also that they can be one of numerous data types - floats, integers, strings, OP paths, file paths, menus, binary on-offs and pulses.

Rendering
  • Render TOP - There is a new option to render out Dual-Paraboloid or Fish-Eye renders. These are lower quality than CubeMap renders and require well-tessellated polygons for large objects, but are faster as they require less render passes to complete.
  • Projection TOP takes a Cube Map created with a Render TOP and converts that to a fisheye projection suitable for domes, and a “equirectangular" projection, u-v is latitude-longitude, suitable for spheres. This produces superior-quality as it's based on the cube maps.
  • Render TOP, Render Pass TOP - You can now render multiple cameras (faster) in a single node. Specify multiple cameras in one Camera parameter, and use Render Select TOP to pull out those camera results.
  • Render TOP | Render Pass TOP - New parameter 'Allow Blending for Extra Buffers' turns off blending for extra color buffers, even if the MAT has blending enabled for the main buffer.
  • Camera COMP - A new Camera Light Mask parameter allows a camera to only use a sub-set of the lights listed in the Render TOP. It acts in union with the Geometry COMPs light mask.
  • Phong MAT - added Color Buffer RGB output controls to the Advanced page. Allows sending things like normals or diffuse color to different Render TOP color buffers in a single pass.
  • A tdu.Matrix from the Matrix_Class can be used in the Xform Matrix and Projection Matrix parameters of the Geometry COMP and Camera COMP.
Oculus Rift
  • Oculus Rift was upgraded use the SDK tversion 0.6.0.1, which now requires Runtime 0.6.0.1 or later. This SDK version makes setup much simpler and hides the concept of Direct To HMD or Extended Mode from the application.
  • Consequently the Oculus Rift Component has been removed and replaced with an Oculus Rift TOP since window management no longer needs to be done by TouchDesigner. The TOP talks to the Oculus directly.
  • Oculus Rift CHOP a new parameter to allow disabling of positional tracking.
  • Oculus Audio CHOP uses the Oculus Audio SDK to take a mono sound channel and create a spatialized stereo pair or channels for that sound.
Intel RealSense and OpenVR / HTC Vive
Window Placement
  • Normally you just press F1 and Esc to get in and out of Perform Mode which uses the single Window Component /perform. The new design of the Window Placement Dialog helps with managing one or more Window components.
  • Window Placement is at Dialogs -> Window Placement (Alt-w). Here you can see a list of Window Components, open/close them, choose which one opens in Perform Mode, open their Parameter dialogs (P button) or go to their networks.
  • It is harmonized with the parameters of the Window Component: What you see/control in Window Placement is a summary of what you see/control in all the Window Components of your project.
  • Note: The parameters of the Window Component related to opening/closing windows, which windows open in Perform Mode, etc. have been altered. It now uses separate on/off pulse buttons to open and close the window.
  • The Window Component has a new parameter (Redraw) to inform a window to not draw anything. It is useful when no output is needed on the main monitors, for example when you use the Oculus Rift, when your system only outputs data via the network operators, or via the Video Device Out TOP, or other processes that do not render, such as audio processing or driving LED strips that don't use the video outs.
Palette and Snippets

The Palette is completely replaced with new components, except for the legacy TUIK2, and is the start of a new-wave of useful tools made using custom parameters as the front-end. Some palette components are:

  • CamSchnappr – new improved version in palette as a specialized Camera component
  • stoner is vastly improved
  • probe is a visual cook analyzer in the palette under Tools. Read the readMe DAT inside it.
  • blendModes is a front-end to the enhanced Composite TOP.
  • softenAlpha softens the edges of images with alpha.
  • symbolPicker retrieves the symbol icons from the built-in Unicode fonts. It also puts the python code for that character in the cut/paste buffer.

See the Category:Palette for doc on other major palette components.

OP Snippets – There are 10% more new examples, but there is no easy way yet to see what’s new.

Operators
  • Pattern CHOP - Generates a sequence of samples in a channel. Unlike the Wave CHOP, its focus is generating arrays of samples and has no reference to time (seconds or frames).
  • Composite TOP – There are 30 new blend modes in the Operation menu! See also blendModes in the palette. The Composite TOP has an option to swap the operation order, and a Preview Grid mode to see all 47x2 possibilities at once.
  • RealSense CHOP and RealSense TOP adds support for Intel's RealSense devices.
  • Scalable Display TOP lets you load calibration data retrieved from running the Scalable Display Calibration Software.
  • Kinect TOP - added ability to control 'unknown depth' value for Kinect 2 sensors.
  • Kinect CHOP - Added Smothing for Kinect 2 devices
  • Leap Motion CHOP, Leap Motion TOP - Now has 'HMD Mode' for head mounted display use. Also added wrist and elbow channels to the CHOP. Supports latest Leap Motion SDK.
  • new FFMPEG library - Movie File In TOP, Video Stream In TOP and Movie File Out TOP were upgraded to the newest FFMPEG Release/2.6 for reading image and video files, which includes support for video codecs: .gif playback and H.265 playback (H.265 has smaller files, longer CPU encode time and decode time).
  • new TIFF library - Movie File In TOP and Movie File Out TOP were upgraded to use the TIFF library version 4.0.3. Also saving .tif files from all TOPs via the right-click menu use the latest TIFF library.
  • Movie File Out TOP - New 'Encode Test Mode' parameter to allow testing encoding performance without writing anything to disk. Useful to check the CPU and GPU usage of encoding without the disk writing interfering with the measurements.
  • Video Stream In TOP - Now supports Multicast RTSP streams as well as unicast.
  • Remap TOP - New TOP whose second input is a UV map to remap the first input image.
  • Anti Alias TOP - adds post-processing Anti-Aliasing to any image. Currently implements SMAA (Subpixel Morphological Anti-Aliasing).
  • Touch In TOP | Touch Out TOP - Allows sending in different formats other than RGBA8.
  • Touch Out TOP - Default video codec is now HAP Q instead of uncompressed.
  • CPlusPlus TOP - New mode that allows writing directly to CPU memory instead of working in OpenGL to output a texture. New example added for this usage mode. TOP_OutputFormatSpecs class now contains colorBufferRB and depthBufferRB members for the GL renderBuffer indices.
  • Screen Grab TOP - Added a 'Grab' pulse parameter.
  • Pack TOP - allows you to split 32-bit floats into four 8-bit unsigned integers, or vice versa.
  • Folder DAT - added Minimum Depth parameter and optional columns basename and relpath.
  • Render Pick CHOP now includes a Callback DAT.
  • CHOP to SOP - no longer needs a SOP input, by request by about 1000 people. IN THE NEXT BUILD (50200+) the setup and defaults are further improved.
  • Event CHOP now contains an optional 3rd input for sampling values for each event.
  • Hold CHOP captures the entire the first input - all of its samples for all of its channels – good for snapshotting a full CHOP.
  • DMX In CHOP - Packet per Channel option with DAT filter table. Also includes last net/subnet/universe in Info DAT for debugging setup.
  • DMX Out CHOP - Added option to send packet per channel or per sample.
  • DMX In CHOP, DMX Out CHOP now support Enttec USB Pro Mk2 (Dual Universe) devices.
  • MIDI In CHOP - Simplified Output - now outputs accurate bpm channel based on incoming event timestamps.
  • Sync Out CHOP - No longer needs to specify number of attached clients. Instead it keeps track of how reliable each one is before deciding to wait for it or not. Option to automatically ban clients. Detailed per-client info, including filename, ip, machinename, operator path.
  • Joystick CHOP - New Player 1-4 menu entries which use XInput compatible devices such as the Xbox Controller. This ties the node to a player number instead of a particular device, so the device that is used is based on the player number that gets assigned to it by the OS. This mode also gives better results for the trigger buttons on the Xbox controllers. Also added new parameters to invert Y axis of some channels. New optional 'Connected' channel can be output. New 'POV State Array' parameter which allows outputting descreet states based on the position of the POV pad. Range for all the Axii will now be [-1, 1] instead of [0, 1] by default.
  • Function CHOP - new options convert decibels (dB) to and from Power and Amplitude.
  • Info CHOP - Added num_particles to SOP information (via Info CHOP).
Filtering the Node Hierarchy with OP Find

The new OP Find DAT is very useful for scanning through node hierarchies and gathering / filtering information about OPs. For each node that meets your criteria, you can choose from built-in columns that are output in the table, or you can run a script to generate other data in the output table, or for that matter, alter anything in TouchDesigner. As Markus Heckmann says, “Using OP Find feels like you’re cheating”. See OP Snippets. You can filter based on operator types, parameter values or expressions. You can do pattern matching on OP names, paths, comments, DAT text, or OP type, with a python callback to further restrict your search.

Wiring Nodes

Wiring Nodes is easier: If an existing node A is wired to another node B and you want to replace A with another node C, click on the output of C and move the mouse to anywhere on the A-B wire and click on the wire. C is now wired to B, replacing A.

General
  • Added support for Hap Q with a compressed alpha component.
  • Tags - lets you add text strings to operators, which you can then search for using findChildren() or the OP Find DAT.
  • Internal Shortcut is a component parameter (like the Tscript Path Variable) that can be used inside components as ext.shortcut to identify the base node inside any component in a uniform way, making it useful for components that are copied, replicated or cloned.
  • List Component is a new generic component for building interactive lists of multi-column items - where each item is an array of gadgets. You have to customize it internally using python. It is under-documented now, but examples are in the Palette and OP Snippets, and more adaptable examples are coming soon.
  • Monitoring Startup Errors - TouchDesigner will show warnings, errors and other messages that occur during startup. You have to turn it on in Edit -> Preferences -> Startup Errors.
Panel Interaction via Python

interactMouse() and interactTouch() are a new way in Panel objects for virtual interaction with panels. The are new python methods of sending down, move, up, hover messages to panels.

  • interactTouch() handles multiple touches and hovers via a user-assigned id.
  • interactMouse() simulates mouse rollover, down, move and up events.
  • interactTouch() and interactMouse() will also update the panel values: inside, insideu, insidev, state, u and v, in panels all the way up to the parent panel.
  • interactMouse() and interactTouch() python methods update the Multi Touch In DAT and its callbacks which, when connected to a Render Pick DAT will drive 3D interactions.
  • interactStatus() and interactClear() are used for checking and resetting panel states.

See: PanelCOMP_Class#Methods and geoPanel in the Palette

Extension Classes, Properties and Dependency Objects
  • Extensions are for developers writing new classes attached to a component. Classes, properties and dependency objects (python) work with Storage. See the example file described at Extensions.

Contents

Build 62160 - Jan 10, 2017

Bug Fixes and Improvements

  • MIDI fix in system component
  • Updates to Gal Palette component
  • Fixed auto-rotate for arcBallCamera and arcBallGeometry Palette components.
  • Other stability fixes.

Build 62070 - Dec 05, 2016

New Features

  • DMX In CHOP - Added Format option 'Packet per Channel (All)'. This will create a channel for each message received, instead of only the last. The number of channels created per cook will depend on dropped frames, etc.

Bug Fixes and Improvements

  • Privacy dialogs now open always-on-top.
  • Video Device In TOP, Video Device Out TOP - Upgrade to Blackmagic SDK version 10.8.3.
  • Palette Component updates and modifications: probe (launching properly with Ctrl-p), sopRender (now with interactive arcBall tumbling), movieDemo.
  • Other small bug fixes.

Build 61910 - Nov 3, 2016

New Python

Bug Fixes and Improvements

  • Upgrade Oculus SDK version to 1.8.0
  • Upgrade Oculus Audio SDK version to 1.1.0
  • Oculus Audio CHOP - No longer errors if used with FPS set to 90.
  • OpenVR TOP - Workaround SteamVR bug that caused both eyes to show the same texture in some cases.
  • Noise TOP - Fix bug where switching between Random (GPU) and other GPU noise types resulted in a solid color as output.
  • Movie File In TOP - 'Audio Loop' parameter, removed Blend to Start and added Match Start to End which produces a much cleaner transition without pops.
  • Analyze TOP - Fixed crash when placing one down (ie GPU Particles )
  • Serial CHOP - Fixed potential crashes when creating new Serial CHOP.

Build 61700 - Oct 6, 2016

New Python

  • OP.selected .current .picked .expose flags now create proper dependencies. That means you can detect when the operator's node flags change using python expressions, which will always cook when the flag changes.
  • OP.cpuMemory reports approximate CPU memory required by the operator.

Palette

  • New components added: moviePlaylist, movieDemo, audioAnalysis, and sweetSpot. Minor improvements to numerous other components. If you are using gal, you can replace it with the current.

Bug Fixes and Improvements

  • MIDI In CHOP - Fixed 'One Based' always loading turned on.
  • Fixed crash when collapsing networks in some cases.
  • Movie File In TOP - Better error handling for corrupted Hap files.
  • Render Pick DAT - Fixed issue where .selectedTexture was incorrect when first picking new objects.
  • Fixed crash when copying custom parameters to non-custom parameters.
  • Phong MAT - Fixed Diffuse/Specular Map color buffer output not working if diffuse/specular color is 0.
  • Import dialog works for .mp4 files again.
  • Fixed flickering CHOP viewer horizontal labels.

Build 61480 - Aug 31, 2016

New Features

  • New OpenColorIO TOP - can be used to apply 3D lookup tables to TOPs. OpenColorIO (OCIO) is a complete color management solution geared towards motion picture production with an emphasis on visual effects and computer animation. The TOP uses the OpenColorIO SDK. The lookup tables are generated externally and loaded into the TOP which applies further controls.
  • Trail CHOP - added new option 'Grow Length' which dynamically grows the output length while recording.
  • A new movies folder in Samples/Map (browse from a default Movie File In TOP) contains five short movie loops.

New Python

  • OP Class - Is now hashable allowing it to be used as dictionaries keys, etc.
  • tdu.Dependency() notifies its targets when deleted.

Palette

  • New component virtualFile.tox added to palette, which lets you embed files within a .tox or .toe file, and then lets you read them with a vfs: syntax in OPs like Movie File In TOP, Audio File In TOP, etc.
  • CamSchnappr numerous fixes and improvements.
  • geoPanel improved to make the 3D panels more portable and modular.
  • gal gadget library improvements.
  • improvements and better help for other components - gestureCapture, feedbackEdge, probe.

Bug Fixes and Improvements

  • Movie File In TOP - Fixed issue where some movies could not cue to the first frame.
  • CHOP Execute DAT - Fixed crash when DAT causes its own deletion during callback scripts.
  • Render TOP - Fixed GPU memory leak when deleting a Render TOP with Order Independent Transparency enabled.
  • Timer CHOP - Fixed off-by-one error in running total values.
  • Fix bug where mesh specific Geometric Offset/Transforms were not imported correctly in .fbx files.
  • LSystem SOP - Fixed crash when merging geometry, as seen occasionally.
  • Parameter CHOP improvements
    • Now outputs single framed pulses when pulse-type parameters are fetched, not their constant evaluation value.
    • Added callback for parameter mode changes.
  • Fixed crash when re-creating custom parameters that have exports attached.
  • Limit SOP - fixed crash when divisions set to less than 1.
  • Parameter CHOP - fixed not updating channel names when referenced operators are renamed.
  • Setting a menu parameter to a float is now supported, no longer need to explicitly cast to int.
  • Polyloft SOP - fixed crash when wrapping u/v without specifying groups.
  • Round-trip latency reduced by one frame period for OSC In DAT, OSC Out DAT, TCP/IP DAT, Touch In DAT, Touch Out DAT, UDP In DAT, UDP Out DAT, UDT In DAT, UDT Out DAT, Serial DAT

Build 61100 - Jul 15, 2016

New Features

  • Non-Commercial resolutions will now be clamped in an aspect correct way. E.g 1920x1080 will become 1280x720 instead of 1280x1080 as it did in previously.
  • Performance Monitor now includes panel update information.

New Python

  • Mesh geometry objects now inlude attributes: .numRows .numCols
  • debug(..) command now includes extended information.
  • OP Class OP.dependenciesTo(n) Return a list of operator dependency paths between this operator and the specified operator. Multiple paths may be found.

Palette

  • CamShnapper arc-ball fixed (Extensions were not being initialized properly after their parent components cook enable flag, was re-enabled).

Bug Fixes and Improvements

  • Fixed cases of .toe files crashing on load, involving clones and local variable tables.
  • Fixed floating Parameter dialogs not updating when enable states scripted.
  • Fixed parameter dependency loss when parameter rebuilt.
  • String Menu (StrMenu) custom parameters now support menuSource attributes.
  • Fixed problem with near/far clipping planes for SOP viewers and improved defaults.
  • Fix bug where unwiring DAT leaves text behind.
  • Fixed instances where sub panel components would duplicate when their parent container is re-cloned.
  • Fixed cooking dependencies when querying parameters with hasattr.
  • OP Viewer COMP no longer stuffs referring panel width/height parameters when scaling the tile.
  • Fixed potential crash when using Folder DATs with other processes monitoring those folders.

Build 60880 - Jun 23, 2016

New Features

  • Movie File Out TOP - Outputting H264 .mp4 files is now supported.
  • Adaptive Homing is new in SOP and Geometry component viewers, and there are new grids for SOP and Geometry viewers when they are enabled in their Display Options. Adaptive Homing of 3D viewers will assure you always see your 3D geometry in full, well-framed view, no matter how they are transformed, scaled and animated.
    • You can turn on/off Adaptive Homing manually via the right-click menu on the SOP and Geometry component viewers.
    • As before, you can turn on/off Grids manually via the right-click menu on the SOP and Geometry component viewers -> Display Options.
    • You can turn these on en-mass. In Dialog Preferences under 'Geometry' page (both off by default):
      • Adaptive Home by Default - Turns on adaptive homing feature for all newly created OPs with a 3D Geometry viewer.
      • Grid Visible by Default - Turns on a new XY grid for all newly-created SOPs and Geometry viewers.
      • Clicking the Reset Viewers button goes through all you SOPs and Geometry components in your current process and sets their viewers to the values chosen by the above two options.
    • P.S. The look of the grid display is evolving based on feedback.

New Python

  • Par.val now matches Par.eval() when casting values to integers. *** See Backward Compatibility Issues below ***
  • OP.showCustomOnly will only display custom parameters on dialogs.

Palette

  • Updated gal.tox
  • probe.tox and multitouch.tox updated to display correctly when resolution limited by Non-Commercial license.

Bug Fixes and Improvements

  • Fixed case where custom parameters were not being updated properly in cloned components, inside of clones.
  • Extension compilation messages no longer displayed on status bar.
  • Folder DAT - Path column should *always* include extension, regardless of Name Format parameter.
  • Fixed crash when dragging two probe.tox components from palette.
  • Folder DAT - Fixed cases of under and over refreshing.
  • Table COMP bugs fixed.
    • Now interactTouch/Mouse drag will update celloverid.
    • Now u, v panel values for Table COMP are 0-1 relative to the Table COMP, not the individual cells.
    • Now panel values for Table COMP are updated when using interactMouse/Touch.
  • Global OP Shortcuts no longer error first instance of the shortcut. This makes cutting & pasting components with global shortcuts much easier.
  • Geometry COMP - Fixed bug where instances would render incorrectly in some cases if the source CHOP/DAT was changing every frame and the render was expensive.
  • Fixed startup errors when clones are initializing using replicators that use the clone's extensions.
  • Fixed issue where .toe files could not be saved if clones had a bad python expression in them.
  • Fixed potential crash when custom parameters are rebuilt in some cases.
  • Custom parameters retain their disable state when operators cut & pasted through scripting.
  • Trail SOP - When 'Evaluate within Frame Range' is Off, no longer clamp output when timeline loops back to first frame.
  • Extended ascii dash characters are now accepted for command line startup options such as -gpu
  • Timer CHOP bugs fixed.
    • Fixed output glitch when using interpolated column output values.
    • Fixed bad data when column interpolation type not linear.
  • PythonExamples.toe updated to new syntax.
  • Fixed error when copying an operator in script causing its storage items to be shared by both operators, instead of unique references, as happens when cutting & pasting or loading from file.
  • Panel Components no longer save/copy mouse and key related states which are transient.
  • List Component - Fixed unresponsive UI after clicking list with zero rows.
  • Movie File In TOP - Fix Grey-Alpha .png files not being loaded correctly.
  • Fixed OP global shortcut conflicts when external tox files are reloaded on startup.
  • Video Device In TOP - Fixed flickering that can occur when Sync Groups are used and the capture is performing poorly.
  • Fixed an issue when running multiple table Cell scripts that was causing them all to execute the first cell's content.
  • tscript messages now include 'tscript' in output example "Unknown tscript command:"

Backwards Compatibility Issues

  • BACKWARDS COMPATIBILITY WARNING - Par.val now matches Par.eval() when casting values to integers. Entering fractional values on integer parameters no longer rounds before truncating, as returned by method Par.val.

Build 60230 - Apr 27, 2016

New Features

  • New Help Card on the Help menu displays all the shortcuts in TouchDesigner.
  • Sphere SOP Texture SOP - "Equirectangular (Spherical Polar)" split into Inside and Outside options. Default changed to Equirectangular Outside
  • Oculus Rift - Upgraded to Runtime/SDK 1.3.0 (release version). Support for the CV1 (commercial release headset) should work, but is untested.
  • OpenVR CHOP - Add 'First Controller' parameter, to allow for only outputting the 2nd controller, for example.
  • Camera COMP - New IPD Shift parameter to shift the camera for stereo rendering. This should be used for Cube Map renders instead of a simple translate in X on the Transform page.

Palette

  • New moviePlayer - usable in 4 modes, controlled through its parameters:
    • Drag-drop movie/still file onto it to preload and then crossfade to new media file.
    • Set the File parameter and other settings like speed, then press Play - this will pre-load without impact, and then crossfade to the new movie.
    • Give it a folder of movies/images and it will let you select any movie number and do a transition to that movie, or just play through them un-attended like a playlist.
    • Do the same with a DAT, one row per movie/still file, that can contain more controls like crossfade/fade-in times. Again play it right through, or it can wait for you to click Next, etc.
    • Clicking on image scrubs current the movie.
  • probe - In new version you put the component anywhere and it just does the rest (putting it in / is OK). It also has parameters on the component so you can place it in a better spot when in Perform Mode. A bug was fixed in TouchDesigner that made the prior version crash.
  • geoPanel - modernized some of the generic interactive 3D gadgets it contained, added knob.
  • Vive OpenVR gestureDraw, openVRRender, viveController, viveSimple - new and updated samples
  • Vive OpenVR geoControlPanel a Vive version of geoPanel - modernized some of the gadgets. The scene is a jumble of gadgets deliberately - no art intended.
  • oculusRiftSimple - accepts cube-map movie, equi-rectangular movie, or for proper stereo, any set of Geometry objects to render from two cameras.
  • arcBallGeometry and arcBallCamera have auto-rotate - switch it on via parameters on the Camera and Geometry object inside. Then click 'n flick on the viewer (like it was in PRISMS).
  • gestureCapture - new component that captures (records) multi-channel gestures and holds them per-gesture as keyframes, a SOP line or smoothed channels, the latter including derived information like distance-travelled, direction, velocity. Can be fed directly to other tools like particlesGpu.
  • particlesGpu - new version.
  • New feedbackEdge - soft or psychedelic image feedback.
  • multiMix - experimental component to help mix multi-layers, this will evolve over time.

Bug Fixes and Improvements

  • Fixed crash when dragging some components from the palette (For example Probe.tox)
  • Render Select TOP - Fixed bug where if this TOP was used on a MAT directly it wouldn't generate mipmaps, resulting in incorrect rendering unless mipmapping was disabled.
  • Oculus Rift CHOP - 'Disable Position' parameter/feature removed.
  • Oculus Rift CHOP - Scale the recommended render resolution if using Non-Commercial license.
  • OpenVR CHOP - Tweak suggested render resolution to keep aspect ratio correct when using Non-Commercial license. This fixes incorrect looking renders in the Vive when using Non-Commercial license.
  • Render Pick DAT - Fixed event.selectedOp being updated late.
  • Better error outputs for extension and script processing.
  • IDS Cameras now given more unique menu tokens to preserver order when they are rearranged.
  • Box SOP - Recook when any patterns include wildcards and a node has been added/removed/renamed from a network.
  • Render Pick DAT - Strategy: Always now follows parameter 'Next Cook' instead of forcing 'This Cook (slower)'
  • Trigger CHOP - Fixed "Release Threshold" parameter being ignored.
  • Fixed interactMouse bug where negative wheel values are not accepted.
  • Folder DAT - Allow use of double quotes to enclose search terms with spaces. (Note single quotes are valid in window filenames).
  • TUIK HSV slider knobs back.
  • Fixed Copy SOP stamping crash when specifying primitives per point.
  • Geometry view hang fixes when wiring loops encountered.
  • Clip Blender CHOP - Blend to end discontinuity fix.
  • Fix bug where a tdu.Position *= scalar would return an error.

Build 59770 - Apr 01, 2016

New Features

Bug Fixes and Improvements

  • Fixed bug where tdu.Vector *= tdu.Matrix would treat the vector as a position and apply the translation to it incorrectly.
  • Fixed recent issue in build 59620 in which saving a component with 'Save Backup' disabled, would not save its contents. However, saving a parent container component will still examine this parameter for children.
  • Fix for nested external component saving.
  • Clip Blender CHOP - Triggering during Queued State will now begin the triggered clip as soon as the queue state returns to zero, instead of when the current clip is finished.
  • Limit CHOP, Merge CHOP, Noise CHOP - 'Reset All Parameters', no longer changes value of Time Slice.
  • Movie File In TOP - Fix memory leak that can occur with some codecs.

Build 59620 - Mar 24, 2016

New Features

  • new "preset" component in palette lets you save/recall presets for parameters in any of your components. You put the preset component into your component, press its Initialize button, and the controls appear on a new parameter page of your component where you can save and recall presets. The preset component was installed in the particlesGpu palette component.
  • camSchnappr can now be used with multiple projectors. You will need one camSchnappr per projector. Each CamSchnappr will output a blend mask.
  • Stoner now also outputs a uv displacement map which can be used in conjunction with the Remap TOP. The advantage here is that Stoner itself can be removed from the network or disabled to gain performance. Also Stoner project data can be stored in a separate Component and recalled.
  • Trigger CHOP - Added new parameters "Multi-Triggers Additive" and "Clamp at Peak Level".
  • Pattern CHOP additions
    • using me.chanIndex, parameters can now be customized per-channel: Wave Type, From Range, To Range, Phase Step, Reverse. For example in Wave Type for 2 channels: ['sine', 'ramp'][me.chanIndex]
    • Ramp Samples now outputs integer values when cycles are not a multiple of length.
  • Added functions to C++ OPs to retrieve operator information given a relative path OP_DATInput* getDAT(const char *path); OP_TOPInput* getTOP(const char *path); OP_CHOPInput* getCHOP(const char *path); OP_ObjectInput* getObject(const char *path);
  • Environment variable TOUCH_LOG_EXTENSION_COMPILES echoes all compile results to the console.
  • Transform CHOP - Now adopts the Sample Rate of its input CHOP in all cases.
  • Timer CHOP - Added onCycleStart callback (sequential mode).
  • List Component - Scroll method now takes into account locking of first row/col.
  • WebSocket DAT - now supports secure (tls) websocket servers, and connections to different websocket sites now supported without requiring manual header setup.
  • new version of OP Snippets (via Help OP Snippets menu)

Bug Fixes and Improvements

  • Updates and fixes to a number of Palette components.
  • Fixed issue in which custom dynamic menu parameters may change values when their sources re-ordered their items (Example: fonts on a different system).
  • When saving storage, exclude items defined in startup storage values. Allows temporary store classes, modules, etc, without load issues.
  • Timer CHOP - Fixed endless loop / crash when onSegmentExit() calls goTo().
  • Timer CHOP - Fixed delayed output of Custom DAT column values.
  • Changed behaviour of 'Save Component' to not include contents of components defined by external .tox's when 'Save Backup of External' turned off (same behaviour of saving .toe). (See backward compatibility warning below).
  • Movie File In TOP - If a movie file has multiple video tracks, the first one is the one that will be used.
  • Fixed startup hang in palette caused by extension inside of clone.
  • Fix crash that can occur on startup on some laptops when 2nd monitor is attached an in Duplicate desktop mode.
  • Fixed case where cloned replicant components would fail to include non-immune children.
  • OpenVR TOP - Upgrade to newest OpenVR version. Support for Vive Pre.
  • Pack TOP - Fix issue that caused this node to be slow in some * cases.
  • CHOP to SOP Fixed intermittent crash when creating texture coordinates.
  • Cache TOP - Fixed incorrect resolution when Replace Index was used without Active ever being turned on.
  • CPlusPlus TOP improvements
    • Fixed bug where single/double channel textures would always end up as 32-bit float when set using getOutputFormat().
    • Add support for single and double channel CPU memory type.
  • OP.mod.xxx was adding a dependency from DAT xxx to the parent of OP, instead of OP itself, causing some sporadic module dependency issues.
  • RealSense CHOP - Fixed an issue with hand smoothing/stabilization not working correctly in all cases.
  • Fixed temporary global OP shortcut conflict when deleting nodes with shortcuts.
  • Window COMP - toggling borders, always-on-top, preserve aspect, no longer causes incorrect layout in window requiring closing and re-opening.
  • Fix case where TouchDesigner fails to launch on some motherboards.
  • Render TOP - Add a small factor to dual paraboloid renders to avoid seams when sampling right at the edges of the maps.
  • Depth TOP - Fixed re-ranging depth not working for multiple cameras.
  • Parameter rollover help fixed for joined menus. (previously only supported toggle + parameter).
  • C++ CHOPs will not have access to (OP_TOPInput) texture Indices. It will contain zero.
  • Collapsing operators into components now sets in/out operators and component to Python by default.
  • Fixed random layout issues when loading tox's that generated print statements.
  • Fixed crash when assigning non-tuples to UI.colors
  • Updated Component Editor - RMB on a component and select Customize...
  • Fixed TDAutoKey.txt not working with passwords that have capital letter.
  • Timer CHOP - Fixed onSegmentEnter not being called when goTo(segment=0) from init state.
  • Error DAT - No longer crashes when using expressions.
  • List Component - Fixed scrollbars resetting to zero when parent panel contents changed.

Backwards Compatibility Issues

  • BACKWARDS COMPATIBILITY WARNING - * 'Save Component' will no longer save external tox backup in the tox file *unless* 'Save Backup of External' is turned on.

That means loading a previous tox file with this option turned off, and resaving the component, will result in loss of data if the external tox file the component refers to is no longer available. This has been fixed in the next build, and only applies to this build.

Build 58910 - Feb 08, 2016

New Features

  • New Environment variable TOUCH_MAX_PROCESSES now sets the maximum number of TouchDesigner processes that can run simultaneously.
  • Leuze ROD4 CHOP - New CHOP that connects to the Leuze ROD4 laser scanner via TCP/IP. Blob Tracking mode allows for turning the measured distances into blobs for use as an interaction surface.
  • Blob Track TOP - Now supports non-Nvidia GPUs for the mode where background detection isn't used.
  • Monitors DAT - New gpu_index column for working with GPU Affinity.

New Python

  • textTOP Class - width and height members no longer returns 0 before first cook.
  • Par.val returns a string again in the case of menus.
  • parent.label now begins search one level up from current location.

Bug Fixes and Improvements

  • Non-Commercial is now a valid license type for TDAutoKey.txt.
  • Extra options for TDAutoKey.txt now work correctly.
  • Movie File Out TOP - Fix corrupted output when Resolution set to 'Half' or other non-default options.
  • File In SOP - Fixed hang when deleting with 'Refresh' set to On.
  • Oculus Audio CHOP - Fixed crackle that occurred in some cases.
  • Fixed recent crashes in Window COMP.
  • OP.findChildren(parName) and OP Find DAT now correctly search older versions of parameter names.
  • hasattr(OP, label) will now return True/False, unless a non-attribute error is raised searching one of its promoted extensions.
  • Cycle CHOP fix reversed ordering of channels in output. ** (May cause backward compatibility issues for old workarounds)
  • Text SOP - Fix incorrect warning on initial cook.
  • Parameters that are dependent on tdu.Dependency objects now recook their OPs properly on changes.
  • TouchPlayer - Fixed crash if shadows are used in a Render TOP.
  • Fixed case where extensions fail to compile when they are part of replicated clones that have not fully initialized yet.
  • Render Pick DAT Render Pick CHOP now report callback errors to the Textport, DAT script errors.
  • Feedback TOP - Fixed a case where this node could stop cooking in certain situations.
  • Python - Fixed sqlite module not loading correctly.
  • Fixed startup order issues where clones could not find global OP shortcuts.
  • Custom Menu entries in Customer Parameters now render duplicate Label entries properly (Names must still be unique however).
  • List COMP - Fixed intermittent random junk characters appearing.
  • Info CHOP - Fixed long cooks that can occur when pointed to a Movie File In TOP and querying the 'gpu_mem_used' channel.
  • Blob Track TOP - Fixed 'Draw Blobs' feature not working properly.

Backwards Compatibility Issues

  • BACKWARDS COMPATIBILITY WARNING - Fixed Panel Layout, Vertical Top-to-Bottom or Bottom-to-Top, reversing horizontal justification setting. This may affect toe files which expected the original (swapped) behaviour.

.

Build 58620 - Jan 13, 2016

New Features

  • Global OP Shortcut - Allow labelling of components that can be referenced anywhere.
  • Parent Shortcut - Allow labelling of components that can be referenced from any child.
  • Timer CHOP - Added 'On Done' Menu: Do Nothing, Re-Start, Re-Initialize.
  • Projection TOP - New Features
    • Fish-eye image and Dual-Paraboloid are now supported input types.
    • New Rotate parameter.
  • List Component New Features
    • New parameter: "Off Cell Callbacks" to control callbacks being executed when clicking in non-cell areas.
    • Now allows for dropping onto non-cell areas, with row=-1, col=-1, in onHover, onDrop callback parameters.
    • Editing of cells restricted to left mouse button only to faciliate context menus.

New Python

  • Par.menuSource an expression that returns an object with .menuItems .menuNames members. This can be used to create a custom menu whose entries dynamically follow that of another menu for example. Example: p.menuSource = "op('audiodevin1').par.device". Note the outside quotes, as menuSource is an expression, not an object.
  • ui.clipboard to get/set the operating system clipboard contents as text.
  • getting Par.val now returns raw value for String parameter types, not its expression.

Bug Fixes and Improvements

  • Window COMP - Changing size parameters within a script, updates properly now.
  • Fixed crash when closing Geometry Viewer panes.
  • List Component - Now lays out properly for sizes less than 25 pixels width/height. (down to 1 pixel).
  • Audio Device In CHOP Audio Device Out CHOP - Fixed crash when ASIO driver behaving unexpectedly.
  • Movie File In TOP - Fixed issue where trimmed movies would have the incorrect length if they only cooked once or twice. Also fixed hangs when pre-loading when Use Latest was on.
  • Timer CHOP - Fixes
    • Fixed recent bug where interpolated custom DAT values would glitch at start of each segment.
    • Avoid onSegmentExit() callback, when calling .goTo() from Initialized state.
    • Fixed onSegmentExit() not being called in some cases.
  • FPS counter in designer interface no longer cooks when in Perform Mode.
  • Fixed error when setting a promoted member on an Operator would always set or create it in the first attached extension object. Now the member must previously exist in a specfic extension object before it can be set.
  • Movie File Out TOP - Fix bug where 'Add Frame' button wouldn't work if pressed multiple times on the same frame (or within a script).
  • Video Device In TOP - Better alpha values for Blackmagic inputs.
  • OP Execute DAT - Fixed callbacks for name, path, delete.
  • GLSL TOP - Fixed new nodes incorrectly being created with 8-bit pixel format being forced.
  • Fixed Text DAT, File DAT, External .tox file parameters not resolving project.paths variables.
  • Fixed case where re-cloning a network would cause extensions defined inside to break or not update.
  • Convolve TOP - Fix 'Normalized Cooefficients' not normalizing properly.
  • Removed any restrictions on use of Tscript system command. (including popup warnings in TouchPlayer).
  • Separate Tscript Macros, Variables dialogs removed (including ui.openMacros), remaining is only the combined Macros/Variables dialog.

Build 58140 - Dec 14, 2015

New Features

  • Web DAT now accepts curly quotes, euro sign, and other windows-1252 characters correctly.

New Python

  • List COMP callback 'onSelect' now called when pressing/releasing in panel area, outside any cells. row,col arguments will be -1.

Bug Fixes and Improvements

  • Fixed cloned replicant components from loading up without children.
  • Fixed case where cloned replicants were creating extra master clone replicants.
  • Fix error when C++ version OPs lose their parameter values when saving and reloading in later versions.
  • Fixed some lost panel mouse failing, when the panel was displayed in a Window Component.

--

Build 58090 - Dec 09, 2015

New Features

  • Extensions now allow naming (a new Extension Name parameter per-extension), instead of relying on searching by class type. You can name an extension Player and refer to it as ext.Player. NOTE: This also allows you to have two instances of the same class in any component, like Player1 and Player2 instanced from a class Player.
  • DMX In CHOP, DMX Out CHOP - restrictions lifted for non-commercial licenses on number of channels/outputs.

New Python

  • Added static member: Page.styles which returns a dictionary of named tuples describing possible Par style attributes.

Examples:

>>> Page.styles['Int'] StyleInfo(sizeable=True, suffixes=['1', '2', '3', '4'])

>>> Page.styles['XY'] StyleInfo(sizeable=False, suffixes=['x', 'y'])

Bug Fixes and Improvements

  • Geometry COMP - Add work around for driver bug that broke instanced rendering on Intel GPUs with newest drivers.
  • Fixed intermittent crash when closing 3D Geometry Viewer panes.
  • Fixed creating duplicate parameter names and subsequent crashing example: String:Foob, and RGB:Foo (Foor, Foog, Foob)
  • Text TOP - Fixed case where glyphs were cut-off when they are much bigger than the typical glyph in the rest of the font.
  • Video Device In TOP - Fixed issue with 1080p/720p input formats on HDMI when they are in RGB colorspace.
  • Cache TOP - Fixed incorrect resolution if the node starts up with Active off and the node is just filled with a Pulse press.
  • Fix startup crash occuring on most recent Intel graphics drivers.
  • Fix some shader compilation issues for Intel GPUs.
  • Fixed rendering issue that caused shading to be broken on some GPUs.
  • Fixes for some stuttering playback cases.
  • MIDI Mapper Dialog now refreshes MIDI device list when dialog is opened.

--

Build 57580 - Nov 27, 2015

New Features

  • Sphere SOP Texture SOP - Added 'Equidistant Azimuth (Fish Eye 180)' and 'Equidistant Azimuth (Fish Eye 360)' texture projections types.
  • Sphere SOP - Added texture output option 'Equirectangular' to make projection setup simpler. (Also renamed 'Natural' to 'By Primitive Type').
  • Leap Motion CHOP - new features supported
    • Added wrist and elbow tracking, elbow rotation.
    • Added hand confidence channels.
  • Palette
    • glslParticles - a modifiable workflow for simulating particles on the GPU using multi-buffer images, feedback and dynamics.
    • RealSense improvements to samples. CameraBrowser lets you look at the various forms of image output. Also EyeTracking, DepthExtract, handInteraction and markerTracking.
    • remotePanel - lets you see and interact with a TouchDesigner panel running on another machine

Bug Fixes and Improvements

  • Replicator COMP - Fixed issue where replicators re-created on startup un-nessarily, breaking some toe files in which the replicants had been specfically tweaked previously.
  • Leap Motion CHOP - Fixed finger rotation flipping when fingers bent straight down.
  • Light COMP - Fixed bug where shadows would break if they were set to 'Custom' and then back to a regular mode.
  • Movie File In TOP - Tiled .exr files that are missing tiles will now open instead of erroring.
  • Render Pick DAT - Small optimization, avoid processing rows with blank 'select' cells.
  • Texture SOP - Now works correctly when the Camera COMP is using a custom projection matrix.
  • Fixed endless dialog loop and missing export modes when cutting and pasting CHOPs with conflicting exports.
  • Movie File Out TOP - Fix crash that can occur when codec is changed mid-record.
  • Movie File Out TOP - Fix hang that can occur in some cases.
  • Pattern CHOP - Fixed 'Ramp Samples' output to line up on samples.
  • Folder DAT - Initial collection of files about five times faster, when size, type, and dates not selected for output.
  • Video Stream In TOP - Better behavior when server isn't available when the node starts cooking.
  • Render TOP - Fixed bug where 'Crop' parameters were getting applied during non-2D renders.
  • Phong MAT - Fix busted shader when 'Fast Deform Tangent' is enabled.
  • List COMP Fixed crash executing scroll, keyboard focus methods in some cases.
  • Timer CHOP - Bug fixes and improvements
    • Fixed start channel input causing multiple python callbacks.
    • Defer segment_pulse by one frame.
    • Fixed segment channel output being delayed one frame.
    • Turn off timer_active channel output one frame earlier
    • Fixed timer_active channel output remaining on, one frame too long before delay.
    • Parallel Mode: only call 'onDone' at end of all segments, not end of each.
    • Fixed jaggy output when frames dropped during playback.
    • Optimization, avoid repeated evaluation of parameters each sample/row.
  • Fixed startup warnings about deleting matching clone immune nodes.
  • Make sure that the default text editor is not TouchDesigner. This avoids opening python files with TouchDesigner if the user doesn't have python installed or a text editor set and TD is associated with python.
  • fcur and timecur tscript command no longer echo warnings to the textport.

--

Build 57100 - Nov 09, 2015

New Features

  • Oculus Rift - Upgrade to OculusSDK/Runtime 0.8.0.0.
  • OpenVR CHOP, OpenVR TOP - Add nodes to support HTC Vive/SteamVR device as well as any other devices that support the OpenVR SDK.
  • OpenVR SOP - New SOP to load built-in models from the OpenVR driver, such as controller or headset models.
  • RealSense CHOP - Add support for separating gestures by hands.
  • Video Device In TOP - Added support for PointGrey USB cameras (not IP cameras yet). Only tested on one sample device so still preliminary.
  • Movie File In TOP
    • New 'Loading/Error Image' parameter to control what the node outputs when a load is pending or it failed to open the target file.
    • New playback extend mode of 'Zero', which is (0,0,0,0) output instead of (0,0,0,1) for 'Black'.
  • List Component 'editable' attribute now an integer, instead of a True/False value. This integer now specifies the number of clicks to edit the field. (backward compatible with existing scripts).
  • System Exclusive messages now received by MIDI CHOPs and DATs.
  • Add .md (MarkDown file extension) for DATs.

New Python

  • COMP Components have new .clones member: List of all components that clone themselves to this operator.
    • Parameters now have new right mouse button menu entry: "Copy Value to all Clones"
  • UI.performMode now updates any operators/expressions referencing it on mode changes.

Bug Fixes and Improvements

  • CPlusPlus CHOP CPlusPlus TOP Fixed C++ CHOP/TOP not being able to access TOP parameters. (inputs->getParTOP(name) always returning nil)
  • Crash fix for Geometry Viewer Pane when nodes deleted.
  • Fixed 10-bit display support.
  • Fixed recent initalization issues with re-opening MIDI devices.
  • Audio Play CHOP Fixed intermittent end pop when fading out.
  • Transform SOP fixed post unity scale with no second input connected.
  • Render Pick DAT fix for frame delay on Strategy: Always
  • Particle SOP - Fixed crash to do with ray intersection.
  • Fix cases where 'Reload on Start' external tox parameter would error, referencing a DAT that had not fully loaded yet.
  • Movie File In TOP - Fix crash that can occur sometimes with specific settings and utlra-quickly looping movies (2-3 frame loop).
  • Fixed error when adding extensions through the 'Configure...' component dialog.
  • Fixed recent missing info descriptions in OP Create dialog.
  • Fixed crashes when accessing Script SOP primitives when points haven't been added yet.
  • Fixed setting of vertex point references in polygons created without points.
  • Fixed replicator/cloning issue affecting many TUIK gadgets.
  • Time Component fixed 'Independent' not working. Also, local components were incorrectly being driven by sub time components, instead of parent time components.

---

Build 56020 - Oct 09, 2015

New Features

  • RealSense CHOP - Added the following feature support.
    • Add smoothing parameter for joint rotations.
    • Can now output Face Position world space.
    • Added ability to output relative hand rotations.
  • Multi Touch In DAT new columns: downu, downv, which hold the u and v values when the finger is first pressed. These new columns pass on to the Render Pick DAT with all the other columns, making them available to the Render Pick DAT callbacks.
  • TouchPlayer now hides built-in overlay menu when licensed with Commercial or Pro, and started with user toe file.

Bug Fixes and Improvements

  • Fixed source children deleting, when cutting+pastings components with Replicators.
  • Folder DAT - Fix issue with incorrect update of epoch format date on conversion.
  • Fixed hang when exiting TouchDesigner, after using some ASIO devices.
  • Audio Spectrum CHOP - Crash fix for changing bypass/no cook state.
  • GLSL TOP - Fix a few missing Common page parameters that went missing.
  • TouchPlayer now hides built-in overlay menu when licenced with Commercial or Pro and started with user toe file.
  • Audio Movie CHOP - Ignore Play parameter when the Movie File In TOP is using Locked to Timeline.
  • Particle SOP - Change default life expectancy to 3 seconds.
  • Fixed crash when fetching stored Points.
  • RealSense CHOP - Reworked joint rotation values to be easier to work with.
  • RealSense CHOP - Fixed X axis being reversed for Marker tracking data. Rotation values changed to be more directly usable inside of TD.
  • Fixed issue where Examine DATs reported error for first element of Chan values.

--

Build 55620 - Oct 1, 2015

Bug Fixes and Improvements

  • GLSL TOP - Fix recent bug where old files could load up with incorrect pixel format.
  • Fixed endless looping of tdu.Dependency and extension initializing in some cases.

---

Build 55560 - Sept 28, 2015

New Features

  • Kinect CHOP - Add parameters to flip Image space U coordinates. Skeleton was previously mistakenly flipped but old files should load up in the correct previously working state.
  • RealSense CHOP - Add U, V and Quality channels for marker tracking.

Bug Fixes and Improvements

  • RealSense CHOP
    • Fix incorrect UVs for hand positions.
    • Fixed U value being reveresed in some cases.

Backwards Compatibility Issues

  • BACKWARDS COMPATIBILITY WARNING - RealSense CHOP - The channels for the hands have been renamed. You may need to adjust networks for the new names. E.g wrist_l:tx -> hand_l/wrist:tx

---

Build 55460 - Sept 24, 2015

New Features

  • Render Pick DAT - new columns selectedpath, selectedu and selectedv will hold and update the attributes of the first geometry object you clicked on, even if you drag off the object. This applies to the new Always strategy, which intersects the rendered image for all active rows whether the select column is on or off.
  • .interactMouse() and .interactTouch() now update the Multi Touch In DAT and its callbacks when they point to the same panel.
  • An example will be in the palette next build, but you can get it here now: GeoPanel.toe, and its doc on wiki doc at geoPanel.

Bug Fixes and Improvements

  • Fixed installer not working for non-english Windows OS.
  • MIDI Out CHOP
    • Fixed sending of regular (non-exclusive messages).
    • Fixed sending of random values when messages length was less than 3 bytes.
  • Fix HAP Q encoding not working on Intel GPUs.
  • Fixed issue with Stitcher Component for some .pts files.
  • Fixed tscript redirecting output to file.

---

Build 55200 - Sept 18, 2015

New Features

  • Added FBX import support for NURBS surface and curve
  • RealSense CHOP - Now supports tracking object maker images.
  • Render Pick CHOP Render Pick DAT - Added Strategy method "Always" which picks continuously, regardless if a selection is being made. Similarly, Strategy method 'Continuous' has been renamed to 'While Select'.
  • Video Device In TOP - Add support for 16-bit depth from RealSense cameras.

Bug Fixes and Improvements

  • Scalable Display TOP - Fix incorrect cameraTransform being output.
  • RealSense CHOP
    • Face bound values re-worked to be more consistent with other similar node channels. In U/V space now instead.
    • Renamed face:* channels to face1:* for future compatibility.
    • Fix incorrect UV range for image space coordinates.
  • Preserved pre/post rotation during FBX import.
  • Fixed crash when recursive dependencies created.
  • Fixed crash when DAT Execute DAT callbacks delete themselves.
  • Shuffle CHOP - Fixed 'Sequence by Name' producing random values when input channels/indices are of different lengths.
  • Web DAT XML DAT - Fixed parsing errors when attribute values contained equal sign characters. Example: <a href=default.asp?n=15>
  • Fixed bug where a locked SOP wouldn't render properly if it was copied/pasted in some cases.
  • Video Device Out TOP - Cleanup output device more when closing TouchDesigner.

---

Build 55060 - Sept 15, 2015

New Features

  • Panel CHOP - For cases where on-off-on events occur quickly in succession: So nothing gets lost, it will make sure the parameter values are on and off for at least one frame. (Added a queue to Panel CHOP to catch events that happen within the same frame. Default queue size of 10. Queue size is needed so that CHOPs that are not cooking don't get bogged with old events when data is requested again. This new option is On for builds 55020+, Off for earlier builds.
  • Movie File Out TOP, Movie File In TOP - Add support for Hap Q with a compressed alpha component.
  • Box SOP - Added inside/outside options for texture coordinates.

New Python

  • Script SOP - Added Python method to get primitive center and SOP center.

Bug Fixes and Improvements

  • Numerous bugs and crashes fixed.
  • Video Device Out TOP - Fixed output not working on some models of cards.
  • Fixed unnecessary cook loop errors when expressions contain panel values.
  • Fixed startup cook loop errors dealing with extensions and panel components.
  • Speed up of long delay times when scripting several custom parameter changes to the node parameter dialog that is currently visible. (Example: ProjectBlend).
  • Fixed intermittent crash in Parameter Execute DAT when dealing with custom parameters.
  • Fixed crash when renaming master nodes in clones.
  • Text TOP - Fix bug where text were rendered horizontally incorrectly in some cases.

---

Build 54700 - Sept 09, 2015

New Features

  • RealSense TOP - Add support for outputting pointcloud data. Also support outputting UV coordinates for those point cloud points.
  • RealSense TOP - Add support for Raw Depth, as well outputting UV maps for Color -> Depth and Depth -> Color.
  • RealSense TOP - Depth stream now works for R200 cameras.

New Python

  • Added event.row to Render Pick DAT callback

Bug Fixes and Improvements

---

Build 54320 - Aug 28, 2015

New Features

  • Oculus Audio CHOP - Upgrade to latest Oculus Audio SDK version.
  • Leap Motion CHOP, Leap Motion TOP - now have 'HMD Mode' for head mounted display use.
  • Kinect CHOP
    • For Kinect 2 sensors, allow getting skeleton positions in depth camera UV space. It was previously only in color camera UV space.
    • Supports smoothing for sensor version 2
  • RealSense CHOP, RealSense TOP
    • Upgraded required SDK version to R4 (6.0.21.6598).
    • Added ability to select from multiple sensors connected to system.
    • Added ability to select R200 devices, depth output should work on R200 devices now (untested).
    • Add ability to output Face Bounds.
    • Added joint smoothing for RealSense CHOP.
    • Added support for Gestures.
  • Audio File In CHOP - Add Reload pulse parameter.
  • Render Pick DAT - callback now passes a single list with multiple events. These are now called *after* any input DAT mergings. Callback also now includes event.select .selectOffToOn .selectOnToOff (works with Render Pick CHOP as well). See the multiTouch component in the palette for an example.
  • CPlusPlus TOP CPlusPlus CHOP added ability to add custom string menu parameters.

New Python

  • Extensinons now re-initialize when one of their modules is deleted / updated during clone.
  • project.paths now maintains a persistent dictionary which can be used to define URL-syntax path prefixes. example: project.paths['movies'] = 'C:/MyMovies', and parameter: movies://butterfly.jpg
  • printStack() printErrors() moved to tdu module.

Bug Fixes and Improvements

  • Kinect TOP - Fix bad image data for Kinect 2 if device isn't connected.
  • Fixed files loading up with old replicated nodes in cases where table changed. Existing toe files need be manually corrected and re-saved once with this fix.
  • Fixed Keyboard DAT negative time values (timestamps being lost on internal events).
  • Fixed crashes when DATs cause themselves to become deleted.
  • Fixed issue where node wires randomly draw incorrectly.
  • Fix networking issues where nodes that used the UDT protocol wouldn't connect if the target hostname wasn't available when the node first cooked.
  • Movie File Out TOP - Fix recent (50000+) issues where certain codec/lengths would result in files that had the wrong frame lengths.
  • Fixed random 'module not found' errors during save, caused by new recent pickling changes.
  • Fix Monitors DAT losing 'bounds' column on startup.
  • Texture SOP 'Polar' option renamed to 'Equirectangular (Spherical Polar)'.
  • Tile flags update now after changes in replicator scripts.
  • Script OPs now recook when a parameter they reference has changed.
  • Fixed CPlusPlus TOP CPlusPlus CHOP to add default parameters when switching to an old version dll. (This was already automatic when loading old toe files containing those dll's).
  • RealSense CHOP, RealSense TOP - Fixed some issues with data quality/consistency.
  • RealSense TOP - Work is now all threaded which results in much lower cook times for the TOP.

Backwards Compatibility Issues

  • BACKWARDS COMPATIBILITY ISSUE - Remove onOtherEvent from MultiTouch In DAT callbacks and added onHoverEvent. onHoverEvent is dependent on multitouch hardware.


Build 53040 - Aug 06, 2015

New Features

  • Joystick CHOP - New 'POV State Array' parameter which allows outputting decreet states based on the position of the POV pad. State order is center, up, down, left, right, upLeft, upRight, downLeft, upRight.
  • Joystick CHOP - Range for all the Axii will now be [-1, 1] instead of [0, 1] by default. Old files will load up with the previous old [0, 1] behavior though.
  • Equirectangular option for Texture SOP. Some outstanding seams work.
  • Leap Motion CHOP - Added following wrist and elbow channels
    • hand0/wrist:t[xyz]
    • hand0/elbow:t[xyz]
  • Render Pick CHOP - Now includes a Callback DAT, that can potentially run every frame with updated render pick values.
  • Oculus Rift CHOP - New button to re-center the orientation.
  • Geometry COMP - Instancing now has Pivot support.
  • Scalable Display TOP - New TOP that reads configuration files created by the Scalable Display's toolset.

New Python

  • Page.appendStrMenu(...) method to add string fields with attached selection menu.
  • Position,Vector,Matrix repr functions now same as str, so values visible when printing list of them.
  • New global commands:

printErrors(Op=root, ...)

This function prints errors from the specified operator and all its children. It passes any additional arguments to the OP.findChildren() method, which can be used to filter which children are examined.

Op - (Optional) The topmost operator to print errors from. Defaults to the root operator.

Examples:

printErrors()
printErrors(op('/project1/movies'), type=TOP))

printStack(file=sys.stdout)

This function prints the current python stack trace. It passes any additional arguments to the built in traceback.print_stack() method.

file - (Optional) Where the printed output is directed. Defaults to the standard output stream, which is mirrored to the Textport.

Examples:

printStack()
printStack(file=op('text1'))  #redirect to a specific DAT

Bug Fixes and Improvements

  • Better locking (Lock Flag) behavior for depth/cube/array texture types. Saving .toes with locked Depth TOPs works correctly now.
  • Render TOP - Fix crash that occurs when using Order Independent Transpanrecy and multiple cameras.
  • Fixed OP.fetch expressions not updating when storing first object in an operator.
  • Fixed bug where collapsing operators would break Channel and Cell references when they had the same name/label as the collapsed node.

Backwards Compatibility Issues

  • BACKWARDS COMPATIBILITY ISSUE - Phong MAT - Specular highlights use a more accurate equation to calculate relfection vector. This may result it slightly different specular highlights than before.
  • BACKWARDS COMPATIBILITY ISSUE - Renamed following Leap Motion CHOP channels
    • hand0/sphere_t[xyz] -> hand0/sphere:t[xyz]
    • hand0/sphere_radius -> hand0/sphere:radius
    • hand0/t[xyz] -> hand0/palm:t[xyz]
    • hand0/r[xyz] -> hand0/palm:r[xyz]

Build 52460 - July 24, 2015

New Features

  • FBX import now imports animation on camera roll.

Bug Fixes and Improvements

  • Many small bug fixes.


Build 52320 - July 21, 2015

New Features

  • Render TOP - Can now output 'Depth Peel' layers as part of it's render. This allows for a pseudo-volumetric rendering information along the viewing direction.
  • List COMP - now supports dragging cells onto other cells. new attribute: .draggable must be set to True and the receiving List COMP must have drop enabled in the parameters.
  • Pattern CHOP - Generates a sequence of samples in a channel. Unlike the Wave CHOP, its focus is generating arrays of samples and has no reference to time (seconds or frames).
  • Oculus Audio CHOP - New CHOP that uses the Oculus Audio SDK to take a mono sound channel and create a spatialized stereo pair for that sound.
  • New 'Enable Cloning' parameter for all COMPs to turn on/off cloning without clearing the Clone parameter.

New Python

  • OP.evalExpression(str) - Evaluate the expression from the context of the OP. example: op('wave1').evaluateExpression("me.digits")

Bug Fixes and Improvements

  • Window COMP - Tweaks to how windows are positioned if they are opened off the side of a monitor.
  • More informative error message if crashes occur in the GPU drivers.
  • Fixed intermittent storage errors when saving a toe file "Required argument 'obj' missing"
  • Timer CHOP - fixed beginning column using Delay Units, instead of Segment Units.
  • Setting a node name to itself, no longer increments the name.
  • Setting a parameters enable state automatically refreshes the dialog.
  • Fixed crash when expanding all parameters on node with rebuilt custom parameters.
  • Fixed crash when certain parameters referenced themselves in loops.

Backwards Compatibility Issues

  • BACKWARDS COMPATIBILITY WARNING - Render TOP - The 'Transparency Passes' parameter was doing 1 more than requested. Existing files with constant values in that parameter should upgraded with the value changed automatically. Exports or expressions will need to be updated though (add one to the value).


Build 51780 - July 09, 2015

New Features

  • Multi Touch In DAT - callbacks now pass a single named tuple including all values found in the ID table, using new callback names. (backward compatible)
  • Movie File Out TOP - MP3 Audio bitrate can now be adjusted.
  • Text TOP - New 'Legacy Parsing' parameter, disabled by default, to control the old Text TOP's behavior of parsing \t, \t, [] and {} positioning, and \XXX character code specficication. New work should use the 'Specification DAT' to position strings and python to do \t,\n and character code creation.
  • Real Sense TOP - new operator that gets image data from Intel’s RealSense sensor.
  • Touch In DAT, Touch Out DAT - Now supports TCP/IP streaming protocol. This allows for sending much larger amounts of data than the previous only Message (UDP) based protocols.
  • Transform TOP - New 'Limit Tiles' parameter can be turned off to allow for unlimited tiling. Old behavior would be to have this on.

New Python

Bug Fixes and Improvements

  • Blur TOP - Fixed issue where extend mode wouldn't be applied properly in some cases.
  • Fixed bug where expressions were not saved, if the parameter was left in constant mode.
  • Fixed Par Execute DAT failing to update when the callbacks themselves changed the custom parameters.
  • Fixed crash when deleting groups of nodes containing Switch CHOPs with expressions to other deleting nodes.
  • Oculus Rift - Upgrade to SDK version 0.6.0.1.
  • Oculus Rift TOP - Added support for rendering the new performance debug HUD that came with the latest SDK.
  • Oculus Rift - Enable new 'Queue Ahead' mode in the SDK.
  • Window COMP - 'FPS Is Half Monitor Refresh' parameter converted to 'V-Sync Mode' parameter. Original two modes are still there, with a new mode to disable vsync entirely. Useful for some case such as using Oculus Rift with a UI window still rendering (but with vsync off).
  • Fixed cases where references to parameters which contained references to storage, wouldn't re-cook on change.
  • Oculus Rift TOP, Oculus Rift CHOP - Stand-in data will be output if no Oculus Rift is detected, so rendering still outputs something.
  • Setting environment variable TOUCH_ARNET_LOG will output first 16 bytes of each packet to console.
  • Serial DAT - now displays warning if it could not connect to the device.
  • Fixed System Exclusive messages not working in MIDI Out CHOP sendExclusive() method.
  • Movie File In TOP - info.xml will now be searched for in the .toe directory if it isn't found in the directory where the sequence of images resides.
  • Field COMP - \xxx character codes will no longer be parsed.
  • Movie File Out TOP - Fixed H.264 encoding not working on 32-bit builds.
  • CPlusPlus TOP - TouchDesigner's GL context is restored incase the .dll code changes the current context.
  • CPlusPlus TOP - Fix crash that can occur of a GL Vertex Array Object was left bound at the end of execute().
  • Expressions containing references to node flags, now re-cook when those flags are changed.
  • Light COMP - Fixed bug where the projection map wouldn't be properly setup for 'Use View Settings' mode in some cases.
  • Fixed clones not picking up master custom parameters when clone parameter is first set. Changing custom parameters in a clone master propagates to all its clones.
  • All network nodes can now use ports 1-9, previously limited to 10 as the minimum port.
  • Movie File In TOP - isPreloading Python member and 'preloading' Info CHOP channel doesn't go to False/0 until the Pre-Read Cache is filled up.
  • Movie File In TOP - Querying isPreloading and isFullyPreRead Python members no longer cause the node to cook.
  • Movie File In TOP - Fixed Bottom Half Alpha not working with Hap Q movies.
  • Displace TOP - Fix the Mid Point parameter being quantized when the first input is fixed-point pixel format, instead doing this based on the 2nd input's pixel format.
  • GLSL TOP - Default aspect is now 'Resolution' instead of 'Use Input'
  • Folder DAT - Now works correctly when using 'Limit Depth' with a very complex directory structure with many sub-folders.
  • Folder DAT - The cook times of this node when the target folder changes should be dramatically lower now.
  • Fixed issue where a new node's file dialogs would always open in the Samples foldereven if a different folder has been browsed to for other nodes of the same time.
  • Fixed some cases where File Save/Open dialog wouldn't open in the expected filesystem folder.
  • Movie File In TOP - Fix some playback issues that can occur when 'Use Latest On Timeout' is used and a frame read timeout occurs.
  • Movie File In TOP - Fix some movie seeking issues that were introduces in the 50000 series builds.

Backwards Compatibility Issues

  • BACKWARDS COMPATIBILITY WARNING - Transform TOP - The X and Y rotation parameters have been removed as they didn't get desirable results.


Build 50880 - June 22, 2015

New Features

  • Noise TOP - New Aspect Correct parameter to control squeeze/stretch of the noise for GPU noise, when using non-square aspect ratios.
  • Composite TOP, Add TOP etc - New Justify Horizontal and Vertical parameters to make positioning smaller images within larger ones easier. Active when using 'Native Resolution' overlay fitting only. This means you can easily place a smaller image to the left, center or right side of the larger image.
  • CHOP graph options changed to: All Channels in a Single Graph, 1,2,3,4,10,20,50 (With default of 10) Removed option to have unlimited number of graphs.
  • Leap Motion TOP now defaults to first camera, and prompts user to turn on 'Allow Images' in control panel when no cameras found.
  • Leap Motion CHOP,Leap Motion TOP - Updated to driver 2.2.6 (2.2.6.29154)

Bug Fixes and Improvements

  • Fixed recent crash when applying color to an operator tile.
  • op(Par) now resolves correctly in the case where Par is an operator parameter.
  • Audio File In CHOP - Distinguish between blank file name (warning), file not found, and file format errors.
  • Object Merge SOP - Fixed node not being loaded properly from files saved in 077.
  • Fixed crash during recursive module compilation error
  • OP Viewer TOP - Default resolution changed to 1280x720
  • Fixed crash that can occur when a SOP has primitive with no vertices.
  • Fixed Timer CHOP crash and potential cook loop warnings during callbacks.
  • Kinect CHOP - Fixed bug from build 50500 that broke this node unless a Kinect TOP is also present in the file.
  • Kinect TOP, Kinect CHOP - Better error messages if the Kinect device is not connected or connected to USB chipset it doesn't work with.
  • Text TOP - Better word-warp behavior for Right-To-Left reading direction bitmap fonts.

Build 50500 - June 12, 2015

New Features

New Python

  • tdu.Matrix() - new projectionFovX(), projectionFrustum() and projectionStereo() methods to create projection matrices.
  • Run_Class - Reworked Python output and error collection to be in order of execution, and break execution when embedded run() calls cause an exception.

Bug Fixes and Improvements

  • Text TOP - Fix to how linebreaks for word-wrap are calculated in some cases.
  • DMX Out CHOP - No longer send un-mapped channels using default parameters.
  • Threshold TOP - Now works properly for floating point input values.
  • Movie File In TOP - Add workaround for AMD driver bug that makes certain forms of Hap (Hap Alpha usually) slow to play back.
  • RealSense CHOP - Version checking added for this new Intel tracking device.
  • Kinect TOP - Avoid possible frame data sync issue between different TOPs that could occur, for V2 Kinect sensors.
  • Fixed List COMP edit text, taking on color of neighbors.
  • Fixed background color of edited List COMP cells.
  • Fixed layout problem in List COMP when locking first row/col toggled.
  • Video Device Out TOP - Fixed crash that can occur in some cases on startup.
  • CPlusPlus TOP, CPlusPlus CHOP - Crash dialog will now inform user if the crash occured in a CPlusPlus .dll instead of TouchDesigner.
  • SOP to CHOP - Now includes Start Position / End Position when input SOP not included.
  • SOP to CHOP - Skips channels it cannot find, with a warning, instead of an error. Makes setup much easier.

Build 50180 - June 3, 2015


Official Builds 32840 and earlier