Release Notes/2020.40000

From TouchDesigner Documentation
Revision as of 17:38, 1 December 2020 by Greg (talk | contribs)
Jump to: navigation, search

Note that experimental builds include new features still in development and ideas being tested, features are subject to change. For the stability and reliability required for performances and project deliveries, we recommend using the production ready Official Builds.

Check Known Issues and Backward Compatibility warnings below.

Download Here


Build 2020.44130 - Dec 01, 2020[edit]

New Features[edit]

  • RealSense - Added Cubemos skeleton tracking support.
  • RealSense - BACKWARDS COMPATIBILITY WARNING - Removed support for the old Windows SDK and its tracking features. RealSense CHOP/RealSense TOP will now only support the cross platform librealsense API.
  • OpenCV - Updated to OpenCV 4.5
    • Python bindings are updated and it includes the full OpenCV toolkit, including CUDA and the opencv_contrib modules (except for things that can't be included due to licensing).
    • libs and headers used for OpenCV are now available in the Samples/CPlusPlus/3rdParty folder for easy use of OpenCV with C++ and Custom Operators.
  • Geometry COMP - Can now use 2D Texture Arrays and 3D Textures for TOP instancing data.
  • Standardization of Look At - All OPs that do 3D transforms now have the same capability to make a chosen axis (+ or -X, Y or Z) point to the origin of another object, with control of an up-direction.
    • Geometry COMP - 'Rotate To/Look At' now has a control for Forward Direction. This controls what axis will be rotated to point towards the desired target.
    • Transform CHOP - Added 'Look At' parameters to create a rotation that aligns a given axis towards another object.
    • Transform XYZ CHOP - Added 'Look At' parameters to rotate the input points to face another point.
    • Transform SOP - Added 'Forward' parameter to determine which axis is pointed towards the Look At object.
  • Convolve TOP - Added 'Scale' parameter.
  • Corner Pin TOP - Added parameter to switch between Bilinear and Perspective Mapping.
  • Lens Distort TOP - Added new parameters to scale and position the distorted image within the frame.
  • Lookup TOP - Added parameters to define the range of the input indices.
  • Point File In TOP - Added support for loading E57 point cloud files (Windows only).
  • Script TOP - Added loadByteArray() to load compressed data stored in bytearrays.
  • Script TOP - Allow source to be 3 channels for copyNumpyArray().
  • Script TOP - Added copyCUDAMemory, allowing data to be loaded from CUDA.
  • Video Device In TOP - Added support for controlling camera options and manual capture triggering for Flir (Point Grey) cameras.
  • Kinect Azure CHOP - Added parameters to mirror image positions vertically and to output aspect correct UVs. Older files will default to mirrored UVs for backwards compatibility.
  • OpenVR CHOP - Overhauled to bring more inline with Steam configurations and brings support for Value Index.
    • Added default bindings for Valve Index controllers.
    • Custom action manifests can now be selected to create CHOP channels filled in with values from arbitrary StreamVR controller bindings.
    • Added support for outputting Hand Skeleton Channels.
    • Added support for Finger Curl channels in skeleton mode.
  • TOP to CHOP - Added parameters to exclude pixels with NaN values, or to exclude pixels with a zero in a selected mask channel. TOPs that can be used for point clouds (Point File In TOP, Math TOP, Point transform TOP) and instancing with TOPs use NaN (not a number) or 0 in an alpha channel to indicate that the pixel is to be ignored.
  • OP Find DAT - Added options for Parent and Global OP Shortcuts.

New Python[edit]

  • COMP Class.extensionsReady now dependably recooks in expressions.
  • CUDAMemory Class - Has new 'shape' member that better describes the width/height, number of components and dataType of the CUDA memory. Held in a CUDAMemoryShape Class.
  • tdu.Dependency - These objects can now be used in bind expressions.
  • Par Class.help - Get or set a custom parameter's help text. To see any parameter's help, rollover the parameter while holding the Alt key.
  • ParTuple Class - New class defining a set of parameters. Iterable for example: [p.name for p in n.parTuple.t]
  • ParTuple Class - Added support for drag-n-drop callbacks (both as source, and received).
  • ParTupleCollection Class - ie. op('geo1').parTuple.t
  • SOP Class.numVertices - The total number of vertices contained in all primitives within this SOP.
  • TOP Class - numpyArray() has new 'neverNone' boolean keyword argument. Will always return an image when this is True, even if delayed. In the case it wouldn't have in the past, it stalls until the image is downloaded.
  • WebclientDAT Class.request - Added 'pars' keyword.
  • WebclientDAT_Class.request - BACKWARD COMPATIBILITY Data keyword will no longer implicitly add to query parameter list for non-postfield HTTP operations (eg. GET). For adding query parameters instead use the new 'pars' keyword.

New Palette[edit]

  • Palette:camera improvements
    • Fixed home/frame commands when Render TOP geometry parameter is set to '*'
    • Added FrameLookAt function to camera palette component and shortcut keys for viewing top, left, right, etc

Bugs Fixes and Improvements[edit]

  • Geometry COMP - 'Don't Use Up Vector' mode for Look-at Up renamed to 'Use Roll'.
  • Parameter COMP - Display custom parameter pages with no parameters.
  • Parameter COMP - Added 'Separators' option when using Pages.
  • CHOP to TOP - Changed the extra pixel default color from 0,0,0,1 to 0,0,0,0
  • CHOP to TOP - BACKWARDS COMPATIBILITY WARNING Reworked Fit to Square layout. Auto-calculated image dimensions may no longer be the same as in previous versions.
  • Movie File In TOP - A few fixes for 'Filename based indexing' playback mode for image sequences.
  • Video Stream In TOP - Better buffering behavior when first connecting.
  • Phong MAT / PBR MAT - Output Shader no longer includes unused uniforms in the Vertex shader.
  • DMX In CHOP - Fixed rate output when using 'Packet per Channel'.
  • Select CHOP - Allow unlimited inputs to be connected.
  • TOP to CHOP - The default color is now used to fill in shorter channels when pixels have been excluded because of the active or NaN parameters.
  • OP Find DAT - Fixed bug where DAT would not respond to parameter changes or text content changes.
  • TOP to CHOP - Empty channels are no longer created when all pixels fail the active and NaN checks.
  • WebSocket DAT - Fixed onConnect()/onDisconnect() callbacks being triggered when there is no WebSocket connection
  • Custom Operators - Fixed crash that can occur if getInfoDATEntries() doesn't fill in some entries.
  • Custom Operators - Calls to the plugins are now wrapped in try/catch clauses to avoid crashing if there are bugs in the plugin code. Will emit a node error instead.
  • Matrix Class - BACKWARD COMPATIBILITY WARNING When building a Matrix from a Table DAT, fix the matrix being incorrectly transposed.
  • Privacy - Fixed Text TOP / Field COMPs not working in protected components.
  • Palette - Fixed issue with dragging components from user folders with unicode characters.
  • Widgets - Fixed vertical slider UI and various other widgets breaking when updating to the latest version.
  • Some improvement to camera controls in 3D viewers.
  • Fixed broken outline shader in 3D viewers on macOS which resulted in red and blue checkerboard when geometry selected.
  • Fixed a number of crashes.
    • Loading crash when Time Component inside clone.
    • Crash when attaching input to Sequencer CHOP.
    • MacOS Movie File In and Movie File Out crashes that could occur.
    • Fixed a crash when trying to render some unicode newline characters.
    • Fixed crash on self deleting 'Help DAT' in panel.

Backward Compatibility[edit]

  • BACKWARD COMPATIBILITY WARNING RealSense - Removed support for the old Windows SDK and its tracking features. RealSense CHOP/RealSense TOP will now only support the cross platform librealsense API.
  • BACKWARD COMPATIBILITY WARNING OpenVR CHOP - Left and Right Controller toggles have been removed, both controllers will always be output in that mode now.
  • BACKWARD COMPATIBILITY WARNING CHOP to TOP - Reworked Fit to Square layout. Auto-calculated image dimensions may no longer be the same as in previous versions.
  • BACKWARD COMPATIBILITY - WebclientDAT_Class.request data keyword will no longer implicitly add to query parameter list for non-postfield HTTP operations (eg. GET). For adding query parameters instead use the new 'pars' keyword.
  • BACKWARD COMPATIBILITY WARNING WebSocket DAT - Removed onConnectionReady callback.
  • BACKWARD COMPATIBILITY WARNING Matrix Class - When building a Matrix from a Table DAT, fix the matrix being incorrectly transposed.

Known Issues[edit]

  • Font Size on Windows and Font Type on macOS are not the standard defaults in DAT viewers, Textport, parameter dialogs and other parts of the UI. Using stand-ins for now while waiting for a 3rd party library fix.


Build 2020.42700 - Oct 21, 2020[edit]

New Features[edit]

  • Lens Distort TOP - Implemented inverse lens distortion shader (uses an approximation formula that doesn't include k3). Includes a menu to choose whether camera matrix values are normalized or in pixels allowing for easier workflow with openCV.
  • NDI In TOP - Added support for 'Hardware Decode' for stream codecs that support it (NDI|hx).
  • RealSense TOP - Added support for D455 and SR305 sensors.
  • Point Transform TOP - New TOP that treats the RGB channels as XYZ positions or vectors and performs a 3D transformations on those positions. Analogous to the Transform XYZ CHOP.
  • Video Stream Out TOP - Added support for SRT output and support for sending as H265 over SRT.
  • Video Stream Out TOP / Video Stream In TOP - Added support to Video Stream Out TOP for sending CHOP and DAT data along SRT connections as per-frame metadata. This data can be recevied from the Video Stream In TOP using an Info CHOP and Info DAT.
  • Phaser CHOP - New CHOP for phase-staggered animations. Thank you David Braun. Watch David's 2019 Montreal TouchDesigner Summit talk presenting some techniques possible with the Phaser CHOP.
  • TOP to CHOP - Added 'Output as Single Channel Set' parameter to output a single channel set rather than outputting separate channels for each row when using 'Crop' modes Rows and Column or Full Image. This is much faster than before.
  • Sprinkle SOP - New SOP that sprinkles points on a SOP surface.
  • Render Pick DAT - New pick() method to perform a pick using python.
  • Web Server DAT - Added 'Certificate Password' parameter to fix usage of password-protected certificates in secure servers.
  • Web Server DAT - Added Info DAT reporting to fetch any start-up errors.
  • ZED - Added support for ZED 2 Cameras, upgrade to SDK 3.2.2.

New Python[edit]

  • COMP Class - New methods saveByteArray() and loadByteArray() for saving and loading .tox files directly to and from memory.
  • COMP Class.loadByteArray() also accepts 'bytes' type objects.
  • OP Class.builtinPars - A list of all built-in parameters.
  • Par Class - Momentary parameters now use their default state to operate either as normally On or normally Off. Component Editor adjusted accordingly.
  • SysInfo Class - New members MIDIInputs and MIDIOutputs which return a list of all MIDI input/output device names.
  • Debug logging features, see Palette:debugControl.

New Palette[edit]

Bugs Fixes and Improvements[edit]

  • Analyze TOP - Fixed a bug that prevented the inspected pixel values in the viewer from updating properly.
  • CPlusPlus TOP - Fix bug that caused aspect ratio being forced to 1:1 in some cases.
  • RealSense TOP - Fixed bug where only using the Depth image would result in the sensor failing to start up.
  • Text TOP / DATs - Fixed wordwrap not working with scalable font rendering.
  • Text TOP / Text SOP - fontSupportsChar() is now deprecated and always returns 'True.
  • Text TOP - Better wordwrap behavior for R->L reading direction text on macOS.
  • Video Stream In TOP - Fixed some crashes that can occur when connecting.
  • Bind CHOP - Fixed bug where setting values from script were sometimes ignored.
  • Bind CHOP - Fixed evaluation of channels when source of change is a parameter.
  • DMX In CHOP - Maximum rate increased from 40 to 44Hz.
  • DMX In CHOP - Split 'packet_rate' Info CHOP channel into 'packet_rate' (matching packets) and 'packet_rate_all' (any packet).
  • DMX Out CHOP - More accurate rate reporting.
  • Math CHOP - Added 'Interp Pars Per Sample' which removes blocky artifacting while adjusting math parameters on higher frequency input (example audio).
  • OSC Out CHOP - Added 'Send Rate' to include sending of rate information.
  • Stype CHOP - Changed default values for 'Aspect' and 'FOV' channels.
  • Examine DAT - Fixed recursion when examining certain types of objects (eg DependDict).
  • WebSocket DAT - Added callback function onConnectionReady() called after onConnection, after connection has been upgraded.
  • Parameter COMP - Fixed issue where pressing + expansion button caused bad overlapping layout.
  • USD COMP - USD working again on Windows after updating the SDK.
  • Window COMP - Fixed Perform Mode using wrong resolution for TOPs.
  • Par.section used in expressions now refreshes properly.
  • Par.enableExpr now propagated correctly through clones.
  • ZED - Now re-enabled.
  • TOP point viewer now properly retains its camera position when adaptive homing is disabled.
  • Improvments for restoring geometry viewer camera positions in some cases that use adaptive homing.
  • Adding/removing Tags using Parameter Dialog now undoable.
  • When copying or cloning protected nodes, include contents as well. (Though they are still protected)
  • Fixed User Shortcuts override files that were not working.
  • New Operator Snippets examples for Wrnch AI CHOP, Phaser CHOP, Sprinkle SOP, JSON DAT, and more.

Backward Compatibility[edit]

  • BACKWARD COMPATIBILITY WARNING - opinfo(), opinfop() Tscript expresions and opinfo command is no longer supported.
  • BACKWARD COMPATIBILITY WARNING - Empty menu parmeters now eval as ' ' instead of '0' and return a menuIndex of None instead of 0.

Known Issues[edit]

  • Font Size on Windows and Font Type on macOS are not the standard defaults in DAT viewers, Textport, parameter dialogs and other parts of the UI. Using stand-ins for now while waiting for a 3rd party library fix.
  • USD COMP not working on macOS.


Build 2020.41040 - Aug 21, 2020[edit]

New Features[edit]

New Python[edit]

Bug Fixes and Improvements[edit]

  • AJA - Upgrade to AJA SDK 15.5.4.1.
  • RealSense TOP - On macOS D-series and other new cameras are now enabled. Stability varies on different systems, please give feedback in the forum.
  • RealSense TOP - Fixes and improvements
    • Fixed Point Cloud UV map being upside down.
    • Multi-thread frame processing for better performance.
    • Add last_processing_time for Info CHOP.
    • Filters are now more controllable per-image type.
    • Better behavior when using the filters.
  • Screen Grab TOP - Application windows can now be selected from the Sources menu (Windows OS only). Windows are cropped from the full desktop capture, so they must be unobstructed and not minimized.
  • Text TOP - Fixed 0 alpha when using Scalable rendering.
  • Video Stream In TOP - Fixed memory leak that was occuring.
  • Web Render TOP - Updated to cef 84.0.4147.105, fixes Youtube streams not updating if cursor is not over them and moving.
  • wrnchAI CHOP - Fixed crash when deleting this node with non-Pro licenses.
  • CPlusPlus SOP - Added volume/intersect functions.
  • Group SOP - 'Bounding Object' calculation time halved in typical cases, possibly more when using meshes.
  • Bullet Solver COMP - Added impact flag to collisions structure of onCollision callback.
  • Optimized Python Expressions - Added support for Par.evalNorm()
  • JSON DAT - Added 'Hold Last Non-Empty Results' parameter.
  • Parameter DAT - Don't recook when source parameter changes but just interested in path.
  • Text DAT - Fixed pause that occurs when you first put down a Text DAT.
  • Export Movie Dialog now has options for 'Audio Codec' and 'Audio Bitrate'.
  • Fixed the long-cooking after you open OP Snippets once.
  • Fixed enableExpr not refreshing on certain dependencies.

Known Issues[edit]

  • Font Size on Windows and Font Type on macOS are not the standard defaults in DAT viewers, Textport, parameter dialogs and other parts of the UI. Using stand-ins for now while waiting for a 3rd party library fix.
  • USD COMP not working.
  • ZED camera operators disabled, awaiting updates to CUDA.


Build 2020.40290 - Jul 29, 2020[edit]

New Features[edit]

Major Feature Additions

  • 3D Viewer Camera Controls overhauled for pane Geometry Viewers and Object COMP and SOP node viewers.
    • 4 Camera Navigation Modes selectable from the right-click menu in the viewer.
    • For the first 3 modes the camera dolly now moves towards the cursor position rather then the center of the screen. Each of these modes differ in the the way they set a pivot to tumble around.
    • The last mode, Camera Mode, moves and pivots from the perspective of the camera and is more similar to the movement possible using a real-world camera (ie pan, tilt, dolly, track, crane).
    • Scroll wheel now also works for dolly in addition to the previous MMB-drag.
    • New outline shader for selected geometry, no longer colors the entire object solid green or yellow.
    • 3D Spacemouse supported in all 3D viewers https://www.3dconnexion.com/ (Windows only, macOS work in progress)
  • Drag-and-Drop overhaul - To create custom drag/drop systems for your controlpanels and UIs.
    • Use Python Drag/Drop Callbacks with all Panel Components for 'When Dragging This' or 'On Dropping Into' events.
    • When Dragging This callbacks include onDragStartGetItems(comp)list of item dicts and onDragEnd(comp, accepted, dropResults)
    • On Dropping Into callbacks include onHoverStartGetAccept(comp, dragItems)True if drag items are acceptable, onHoverEnd(comp, dragItems), and onDropGetResults(comp, dragItems)Dict of results
    • For usage details and examples see this new documentation Experimental:Drag-and-Drop

New Operators

  • wrnchAI CHOP - New CHOP which supports wrnchAI skeleton tracking for any camera or video stream. (Windows only and required Nvidia GPU)
  • FreeD CHOP - New CHOP that creates channels from a stream of FreeD camera tracking data.
  • JSON DAT - New DAT for parsing JSON and filtering outputs, which eliminates having to code scripts to parse and manipulate JSON, and keeps the data flow procedural.

Other Noteworthy New Features

New Python[edit]

New Palette[edit]

  • Tools > camera is a new component like Palette:arcBallCamera but using the new camera control scheme introduced in TouchDesigner's built-in 3D geometry viewers.

Bug Fixes and Improvements[edit]

  • Text TOP, Text SOP - Fonts are now enumerated properly and return more fonts, giving access to the multiple font weights/styles embedded into one font file.
  • Circle SOP - Normals for the ZX orientation now point along the positive Y axis for consistency with other orientations and SOPs. See BACKWARD COMPATIBILITY notes below.
  • List COMP - Fixed crash ending a drag action with the List COMP.
  • Execute DAT - Fixed crashes when Execute DATs cause self deletion.
  • Line MAT - Fixed some viewport picking not working well with Line MAT rendered geometry.
  • Each textport now uses its own local variables, which are also separate from parameter expression space.
  • Added 'Node Language' column in List mode to more easily weed out Tscript nodes.
  • Fixed dragging and dropping of CHOP channels onto parameters that were already exported onto.
  • Fixed erratic layout dealing with uninitialized scroll bar areas.
  • Updated Operator Snippets examples (Version 900 Join CHOP and JSON DAT)

Backward Compatibility[edit]

  • BACKWARD COMPATIBILITY WARNING Circle SOP - Normals for the ZX orientation now point along the positive Y axis for consistency with other orientations and SOPs.

Known Issues[edit]

  • Font Size on Windows and Font Type on macOS are not the standard defaults in DAT viewers, Textport, parameter dialogs and other parts of the UI. Using stand-ins for now while waiting for a 3rd party library fix.
  • A short pause may occur when adding the first DAT to your project, this is font rendering initialization and we are working on a solution.
  • USD COMP not working.
  • ZED camera operators disabled, awaiting updates to CUDA.

An Operator Family that creates, composites and modifies images, and reads/writes images and movies to/from files and the network. TOPs run on the graphics card's GPU.

Each SOP has a list of Points. Each point has an XYZ 3D position value plus other optional attributes. Each polygon Primitive is defined by a vertex list, which is list of point numbers.

An Operator Family which operate on Channels (a series of numbers) which are used for animation, audio, mathematics, simulation, logic, UI construction, and many other applications.

An Operator Family that reads, creates and modifies 3D polygons, curves, NURBS surfaces, spheres, meatballs and other 3D surface data.

A built-in panel in TouchDesigner that contains a library of components and media that can be dragged-dropped into a TouchDesigner network.

The OpenGL code that creates a rendered image from polygons and textures. Shaders can be made of up to three parts: Vertex Shader, Geometry Shader and/or Pixel Shader, which are either embedded inside Materials, or placed in Text DATs and referenced to a GLSL Material.

A sequence of vertices form a Polygon in a SOP. Each vertex is an integer index into the Point List, and each Point holds an XYZ position and attributes like Normals and Texture Coordinates.

A CHOP outputs one or more channels, where a channel is simply a sequence of numbers, representing motion, audio, etc. Channels are passed between CHOPs in TouchDesigner networks. See also Export.

An Operator Family that manipulates text strings: multi-line text or tables. Multi-line text is often a command Script, but can be any multi-line text. Tables are rows and columns of cells, each containing a text string.

An Operator Family that contains its own Network inside. There are twelve 3D Object Component and eight 2D Panel Component types. See also Network Path.

A dialog box in which commands and scripts can entered manually. Script errors and python print() messages are also output to the textport.

TouchDesigner Component file, the file type used to save a Component from TouchDesigner.

Any floating window that is not a Pane or Viewer.

OP Snippets is a set of numerous examples of TouchDesigner operators, which you access via the Help menu. These can be copied/pasted into your projects.

Unlike a Wire that connects nodes in the same Operator Family, a Link is the dashed lines between nodes that represent other data flowing between nodes, like CHOP Exports, node paths in parameters, and expressions in parameters referencing CHOP channels, DAT tables and other nodes.

The component types that are used to render 3D scenes: Geometry Component contain the 3D shapes to render, plus Camera, Light, Ambient Light, Null, Bone, Handle and other component types.

An Operator Family that contains its own Network inside. There are twelve 3D Object Component and eight 2D Panel Component types. See also Network Path.

The Graphics Processing Unit. This is the high-speed, many-core processor of the graphics card/chip that takes geometry, images and data from the CPU and creates images and processed data.

Operators that normally have 0 inputs, like a Noise CHOP, are called generators. See Filter.

An Operator Family that associates a shader with a SOP or Geometry Object for rendering textured and lit objects.

TouchDesigner's original built-in Command scripting language prior to Python.