See our Official Announcement for an overview of new features.
Official Build - 2021.10000 Series
2021.10330 - Feb 10 2021
- FreeD CHOP - New CHOP that creates channels from a stream of FreeD camera tracking data.
- Lens Distort TOP - New TOP that distorts the input image to match the lens intrinsics provided. Applying this to a Render in TouchDesigner allows renders to align properly with live feeds from cameras.
- 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.
- Added parameters to scale and position the distorted image within the frame.
- Phaser CHOP - New CHOP for phase-staggered animations. Watch David's 2019 Montreal TouchDesigner Summit talk presenting some techniques possible with the Phaser CHOP.
- 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.
- Spectrum TOP - New TOP that performs OpenCV's Discrete Fourier Transform (DFT) operation via CUDA (Windows only, requires Nvidia GPU).
- Sprinkle SOP - New SOP that sprinkles points on a SOP surface or inside its volume.
- 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.
Streaming & Video
- AJA 8k support
- NDI In TOP - Added support for 'Hardware Decode' for stream codecs that support it like (NDI|hx).
- Movie File In TOP - Hardware decoding of AV1 codec videos is now supported on Nvidia Ampere-class GPUs.
- Audio Stream In CHOP - Added an Audio Sync Offset parameter to tweak audio streaming sync with a Video Stream In TOP.
- Video Stream In TOP - Added support for HLS/DASH input via URLs that point to m3u8 files.
- Video Stream In TOP - Added support for SRT (Secure Reliable Transport) protocol using srt:// URLs.
- Video Stream Out TOP - Added support for SRT output and support for sending as H265 codec 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 received from the Video Stream In TOP using an Info CHOP and Info DAT.
- Movie File Out TOP - NotchLC encoding now supported. Windows only for now, macOS support coming later this year.
- wrnchAI CHOP - New CHOP which supports wrnchAI skeleton tracking for any camera or video stream input. (Windows only and requires Nvidia GPU)
- RealSense CHOP - The RealSense CHOP has been overhauled to use the Cubemos skeleton tracking SDK. This works with the current librealsense API for RealSense to offer skeleton tracking to all the latest RealSense cameras. A separate Cubemos license is required, you can get a free 30-day trial to try it out here.
- OpenVR CHOP - Overhauled to bring more inline with Steam configurations and add support for Valve Index.
- Added default bindings for Valve Index controllers.
- Custom action manifests can now be selected to create CHOP channels with values filled in from arbitrary StreamVR controller bindings.
- Added support for outputting Hand Skeleton Channels.
- Added support for Finger Curl channels in skeleton mode.
- RealSense TOP - Added support for D455 SR305, and L515 LiDAR sensors.
- RealSense CHOP - Added Cubemos skeleton tracking support as mentioned above.
- RealSense TOP - On macOS D-series and other new cameras are now enabled. Stability and connection varies on different systems, please give feedback in the forum.
- NOTE - The old Windows SDK and its tracking features have been removed. RealSense CHOP/RealSense TOP will now only support the current cross platform librealsense API. See BACKWARDS COMPATIBILITY WARNING section below for details. For access to the old Windows SDK use builds from 2020.20000
- 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.
- Video Device In TOP Flir Cameras support - Updated Flir Spinnaker SDK (previously called Point Grey cameras).
- Added support for image bit depth for Flir cameras.
- Added support for controlling camera options and manual capture triggering for Flir cameras.
- Added ability to load presets for Flir cameras.
- ZED - Added support for ZED 2 Cameras, upgrade to SDK 3.2.2.
OpenCV and Extending TouchDesigner
- OpenCV - Updated to OpenCV 4.5.1
- Now TouchDesigner ships with the full OpenCV 4.5.1 toolkit
- Includes CUDA and the opencv_contrib modules (except for a few things that can't be included due to licensing). The extra modules give you access to functionality not packaged with the default OpenCV distribution. Examples of modules include: Aruco Marker Detection, 3D Object Recognition and Pose Estimation, Custom Calibration Patterns, Structured Light as well as various CUDA accelerated libraries. See full list OpenCV Modules.
- libs and headers used for OpenCV are now available in the
Samples/CPlusPlus/3rdPartyfolder for easy use of OpenCV with C++ and Custom Operators.
- Custom Operators - Parameter labels, page names, and string defaults should now properly support UTF-8.
- Script TOP - Additions for loading data.
- Added loadByteArray() to load compressed data stored in bytearrays.
- Allow source to be 3 channels for copyNumpyArray().
copyCUDAMemory, allowing data to be loaded from CUDA.
- Script OPs custom parameters can now be edited using the same Component Editor Dialog as components by dragging the Script OP onto the dialog’s ‘Path’ or right-clicking on the OP and selecting ‘Customize Operator…’.
- Web Render TOP - Added options to 'Enable Media Stream' which enables the mic and camera to be used by web pages. Also included an option to specify a 'User Cache Directory'.
- 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.
- WebSocket DAT - Added callback function
onConnectionReady()called after onConnection, after connection has been upgraded.
- Text TOP - Added Slug support which is a high quality GPU-based scalable font rendering library. This is available by setting 'Display Method' = Scalable. This supports .ttf and .ttc font files or any installed font on the system.
3D Viewer Camera Controls
- 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 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 control panels 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
list of items to dragand
- On Dropping Into callbacks include
True if drag items are acceptable,
onHoverEnd(comp, info), and
Dict of results
- For usage details and examples see this new documentation Drag-and-Drop
- BACKWARDS COMPATIBILITY WARNING. This system has backwards compatibility issues with versions of prior to 2020.46450. Migration Guide here.
- Floating Cloud Licenses are a new option for licensing. These floating licenses allows any internet connected computer to access a pool of floating licenses on a single account.
- Available in store now in the shopping cart's 'Select Product' list.
- These licenses are great for:
- Distributed Teams and Remote Working - Local computers can be licensed from a global pool of licenses available to any of your team, world-wide. A pool of numerous licenses on one account can be shared between global locations such as offices, studios, or installations, delivering the license to the team member on demand.
- Lab Computers at Schools and Universities - Sometimes lab computers are wiped and/or do not have admin privileges to install a key. Using floating cloud licenses allows the system administrator to install the credentials onto lab computers as part of their disk image. This setup will automatically use licenses when TouchDesigner is in use and return them when TouchDesigner closes.
- Running TouchDesigner on Cloud Platforms - A great usage case for floating cloud licenses is for running TouchDesigner and TouchPlayer on servers in the cloud. Often these virtual cloud servers do not have consistent system codes, or you may be spinning up instances dynamically and need a method to auto-key them. Dongle-based solutions usually don't work since it's rare that access to the hardware is possible for cloud servers.
Other Noteworthy New Additions
- Bullet Solver COMP - Added impact flag to collisions structure of onCollision() callback. The flag is True when the collision is at the point of impact.
- Engine COMP - New features and additions
- Added new 'Start' and 'Initialize on Start' parameters, renamed 'Power' parameter to 'Play'.
- Added 'Match Component Rate' and 'FPS' parameters to Tune page to help control the Engine COMP's playback rate.
- Added 'Unload' pulse parameter.
- Added callbacks for onInitialize, onStart, and whileRunning.
- Faster loading when .tox file changed as TouchEngine no longer needs to restart.
- New Operator Snippets including an example of Engine COMP running audio at 240fps.
- Geometry COMP - Can now use 2D Texture Arrays and 3D Textures for TOP instancing data.
- Parameter COMP - Added 'Separators' option when using Pages. 'Separators' will also work with or without Page Names.
- Analyze TOP - Added Minimum/Maximum in RGB/A operations to return the smallest or largest value in the given channels. The existing Minimum and Maximum operations have been renamed Minimum/Maximum Pixel and still return all channels of the pixel with the smallest or largest value.
- Constant TOP / Ramp TOP / Text TOP / Circle TOP / Rectangle TOP - Generator TOPs can now composite with an input. Added 'Output' page providing all the composite types of the Composite TOP.
- Convolve TOP - Added 'Scale' parameter.
- Corner Pin TOP - Added parameter to switch between Bilinear and Perspective Mapping.
- 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).
- Rectangle TOP / Circle TOP - Added Justify parameters to align the rectangle/circle horizontally or vertically.
- Reorder TOP - Added options to choose the maximum or average color from the input texture.
- Screen Grab TOP - Added Source parameter to select individual displays or the entire desktop (Windows Only).
- 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, Text SOP - Fonts are now enumerated properly and return more fonts, giving access to the multiple font weights/styles embedded into one font file.
- 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).
- Filter CHOP - Added One Euro filter type, good for filtering noisy signals while maintaining high precision and responsiveness.
- Math CHOP - Added 'Interp Pars Per Sample' which removes blocky artifacts while adjusting math parameters on higher frequency input like audio.
- Oculus Rift CHOP - Added 'Tracking Origin' parameter to set origin to eye level or floor level.
- OSC Out CHOP - Added 'Send Rate' to include sending of rate information.
- Select CHOP - Allow unlimited inputs to be connected.
- SOP to CHOP - Added Point Index and Normalized Position output toggle parameters.
- 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 Geometry COMP instancing with TOPs use NaN (not a number) or 0 in an alpha channel to indicate that the pixel is to be ignored.
- 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.
- CPlusPlus SOP - Added volume/intersect functions.
- Extrude SOP - Added option to compute normals for the extruded geometry.
- OP Find DAT - Added options for Parent and Global OP Shortcuts.
- Parameter Execute DAT - New 'On Values Changed' callback that includes all values that changed during the frame in a single list.
- Render Pick DAT - New
pick()method to perform a pick using python.
- Phong MAT - (And all other MATs) now have expanded blending functionality. There is a new 'Blend Operation' menu to select from Add, Subtract, Reverse Subtract, Minimum, and Maximum operations. In addition there is a separate operation menu just for alpha. Furthermore new options for Constant Color/Constant Alpha are found in the 'Source Color'/'Destination Color' menus which enable 'Blend Constant Color' parameters when selected.
- Phong MAT, PBR MAT - Can now output World space position, normals, and shadowed area strength to extra color buffers.
Color Channel Selection Improvements
- Analyze TOP - Added option to find the pixel with the largest RG or B value: (RGBA Maximum).
- Lookup TOP - Added option to use the largest of the 4 RGBA color channels (RGBA Maximum) as the index of the input image.
- Lookup TOP - Added more options for selecting the index from the source image.
- Normal Map TOP / Blob Track TOP / Edge TOP / Emboss TOP / Luma Blur TOP / Luma Level TOP / Matte TOP // Monochrome TOP / Threshold TOP / Leuze ROD4 CHOP / Nvidia Flow Emitter COMP - Added new Maximum RGB/RGBA color channel selection options.
Look At Improvements
- 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.
- TDFunctions and TDJSON now work with normal Python import statements.
- OP Class.builtinPars - A list of all built-in parameters.
- COMP Class - New methods
loadByteArray()for saving and loading .tox files directly to and from memory.
- COMP Class.loadByteArray() also accepts 'bytes' type objects.
- COMP_Class.internalOPs COMP_Class.internalPars - Dictionary of all internal shortcuts defined in the component (see also OP_Class.iop OP_Class.ipar).
- COMP Class.extensionsReady now dependably recooks in expressions.
- GeometryCOMP Class.computeBounds - Bounding box now includes instanced geometry positions.
- Camera Class.move3D - Moves the camera like the 3D mouse.
- FlexsolverCOMP Class.actors - New member to fetch list of actors in the simulation.
- TOP Class - Added ability to control 'quality' of JPEG saving.
- 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.
- ScriptCHOP Class.timeSliceDefault - Default time slice value equivalent to the input CHOP's isTimeSlice.
- CHOP Class.isTimeSlice - allow to be set in scriptCHOP case.
- SOP Class.numVertices - The total number of vertices contained in all primitives within this SOP.
- 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.
- Matrix Class - Added
- 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.
- Par Class - Momentary parameters now use their default state to operate either as normally On or normally Off. Component Editor adjusted accordingly.
- 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.
- Par Class.lastScriptChange - Returns information on how this parameter was last modified by a script.
- Par Class.style now returns 'Object' instead of 'OBJ' in such cases - See BACKWARD COMPATIBILTY WARNING below.
- Page Class.appendObject(...) now replaces Page.appendOBJ(...) - See BACKWARD COMPATIBILTY WARNING below.
- Optimized Expressions - Par.default and Par.menuIndex are now optimized.
- Optimized Python Expressions - Added support for Par.evalNorm()
- tdu.Dependency - These objects can now be used in bind expressions.
- SysInfo Class - New members
MIDIOutputswhich return a list of all MIDI input/output device names.
- Debug logging features, see Palette:debugControl and Debug_module.
- Palette:debugControl - This component is to facilitate and test changes to the "debug" command.
- 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
- 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
- Updated navigation modes to match changes to the built-in geometry viewer. 'Cursor' and 'Viewport' behaviours have been split into separate modes and geometry picking is enabled for all camera actions in 'Cursor' mode. Updated to version 0.13
- Added basic support for using a 3D Spacemouse to control the camera via the Joystick CHOP.
- Added basic WASD keyboard controls for the first person camera.
- Palette:pointRender - Default colors are now set to white when only the position input is used. Updated to use the latest camera component from the Palette.
- TDAbleton updates
- Ableton console now scrolls infinitely like textport abletonMIDI component
- Added "split touching notes" feature to separate incoming MIDI notes abletonSong component
- Added time signature controls to abletonTrack, abletonChain and abletonClipSlot components
- Added Color and Clip Color controls, see BACKWARD COMPATIBILITY WARNING - clip data channels now include the clip number in their names.
Bug Fixes and Improvements
- Actor COMP - Flex 'Feedback TOP' optimization.
- Camera COMP - Fixed multiple issues with changing the camera position by navigating inside the node viewer or geometry pane with the regular mouse and space mouse.
- Camera Blend COMP - Fixed 'BG' alpha not blending correctly.
- Geometry COMP - 'Don't Use Up Vector' mode renamed to 'Use Roll' for 'Look-at Up Vector' menu.
- Nvidia Flex Solver COMP - Added 'Callbacks DAT' parameter.
- List COMP - Improvements and bug fixes.
- Improved highlight color of selected text.
- Fixed crash ending a drag action with the List COMP.
- Fixed left outside border being cut off / borders shifted left.
- Selected areas now color in inside area, not border edge.
- Recook and update List COMP output when scripting new selections.
- Cook operators that reference rolloverRow, etc outside of callback methods.
- Fixed crash when List COMP deletes its own script DAT during execution.
- Parameter COMP - Display custom parameter pages with no parameters.
- Parameter COMP - Fixed issue where pressing + expansion button caused bad overlapping layout.
- Select COMP - Now shares same panel values as source.
- Engine COMP - Improvements
- Fixed crash which could occur after changing the loaded .tox file.
- Some issues with CHOP inputs and dropping samples fixed.
- For Engine COMP and TouchEngine, fixed bad UTF-8 strings through DATs, parameter names and values, channel names, and file paths.
- Fixed an issue which caused some loads to fail when they should succeed.
- Fixed a potential crash on unload of a component with TOP Ins or Outs.
- Fixed a number of reported crashes.
- Replicator COMP - Fixed handling of name conflicts between Replicator COMPs; name conflicts will cause an error instead of the COMPs stepping one each other.
- Window COMP - Fixed Perform Mode using wrong resolution for TOPs.
- Analyze TOP - Fixed a bug that prevented the inspected pixel values in the viewer from updating properly.
- 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.
- CPlusPlus TOP - Fixed a bug that caused aspect ratio being forced to 1:1 in some cases.
- Depth TOP - Corrected results when outputting camera space depth for orthographic cameras.
- Layout TOP - Fixed resolution bug and made Optimizations for single texture input and GPU memory usage optimizations.
- Movie File In TOP - Fixed 'Filename based indexing' playback mode for image sequences.
- Movie File In TOP - Fixed last frame not playing correctly when using hardware decode.
- Movie File In TOP - Fixed Cube Map .dds file loading.
- Movie File Out TOP - Upgraded to Nvidia Video SDK v11. Requires drivers Nvidia 456.71 and later.
- Noise TOP - Fixed pivot not being correctly placed in the image.
- Nvidia Flex TOP - Changed output pixel format to 32-bit float RGB instead of RGBA since velocity only has 3 components.
- OP Viewer TOP - Fixed missing background in blank table cells.
- Point File In TOP - Loading .XYZ files with semi-colon or pipe delimiters now works.
- RealSense TOP - Numerous improvements
- Added last_processing_time for Info CHOP.
- Fixed issue where only using the Depth image would result in the sensor failing to start up.
- Fixed Point Cloud UV map being upside down.
- Multi-thread frame processing for better performance.
- Filters are now more controllable per-image type and better behavior when using the filters in general.
- Render TOP - Fixed 'Topology Wireframe' not working with Override Material.
- Scalable Display TOP - Upgraded to Scalable Display SDK 7.0.
- Screen Grab TOP - BACKWARDS COMPATIBILTY WARNING Capture area is now scaled to fit the output resolution rather than cropped when using GPU to GPU capture. Allows capture of windows that are larger than 1280x1280 with a Non-Commercial license.
- SSAO TOP - Now works correctly with orthographic cameras.
- 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.
- Text TOP - Improved font family and OpenType Variable font support on Windows.
- Text TOP - 'Automatic' font mode now uses 'Scalable' for sizes 16 and above.
- Video Stream In TOP - Improved buffering behavior when first connecting.
- Video Stream In TOP - Added support for http and https URLs that don't end with exactly .m3u8.
- Video Stream Out TOP - Added control for sending silent audio when no audio output is provided. Some services such as YouTube require audio data always. Other's do not support MP3 so no audio stream should be sent.
- Video Stream Out TOP - Info CHOP channels are now filled in properly when using RTMP and SRT.
- Video Stream Out TOP - Low latency mode improved for SRT streams.
- Web Render TOP - Updated to cef 84.0.4147.105, which fixes Youtube streams not updating if cursor is not over them and moving.
- Audio Device Out CHOP - Fixed a crash that could occur when device not present on macOS.
- Audio Stream Out CHOP - Now works correctly on macOS.
- 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 - Fixed rate output when using 'Packet per Channel'.
- DMX Out CHOP - More accurate rate reporting.
- DMX Out CHOP - Fixed usage of netaddress column in mapping table with sACN.
- Kinect Azure CHOP - Fixed a bug outputting absolute bone rotations.
- Kinect Azure CHOP - Fixed an error when body tracking frames were not yet available.
- OSC In CHOP - Allow manual deletion of channels (fixes TDAbleton value swapping issue) and fixed crash when removing channel from uncooked OSC In CHOP.
- Pulse CHOP - Fixed linear and ease in/out interpolation methods.
- Slope CHOP - Fixed calculating per-sample slope when there is only one sample.
- 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.
- TOP to CHOP - Empty channels are no longer created when all pixels fail the active and NaN checks.
- Stype CHOP - Changed default values for 'Aspect' and 'FOV' channels.
- Alembic SOP - Fixed a bug with 'Unload' parameter not freeing write access to Alembic file.
- Alembic SOP / Import Select SOP - 'Direct To GPU' bug fix, deactivating/reactivating viewer would sometimes clear the imported SOP data.
- Alembic SOP - Don't automatically triangulate when 'Direct to GPU' disabled.
- Group SOP - 'Bounding Object' calculation time halved in typical cases, possibly more when using meshes.
- Circle SOP - Normals for the ZX orientation now point along the positive Y axis for consistency with other orientations and SOPs. See BACKWARD COMPATIBILITY WARNING notes below.
- Examine DAT - Fixed recursion when examining certain types of objects (eg DependDict).
- Execute DAT - Fixed crashes when Execute DATs cause self deletion.
- Keyboard In DAT - Fixed crash when deleting a referenced Panel COMP.
- OP Find DAT - Fixed bug where DAT would not respond to parameter changes or text content changes.
- OP Find DAT - Fixed recent crash when matching parameters.
- Parameter DAT - Don't recook when source parameter changes but only interested in path.
- Parameter DAT - Now shows empty pages if 'Parameter Scope' set to '*'.
- Parameter Execute DAT - Fixed crash when evaluating a bad expression.
- SocketIO DAT - Fixed 'Bytes Column' toggle.
- Web Server DAT - Fixed bug that prevented having more than 16 WebSocket connections.
- Web Server DAT - Fixed crash when receiving WebSocket frames larger than 1024 bytes.
- WebSocket DAT - Fixed
onDisconnect()callbacks being triggered when there is no WebSocket connection.
- Line MAT improvements.
- Fixed some viewport picking not working well with Line MAT rendered geometry.
- Fixed 'Draw Points' when used with deform attributes.
- Force face culling to be off to avoid missing parts of lines in scenes where face culling is globally on.
- Phong MAT / PBR MAT - Output Shader no longer includes unused uniforms in the Vertex shader.
- Fixed the long standing performance issue where snippets would keep cooking after you open OP Snippets dialog once, even if you closed the window.
- Many existing Operator Snippets have been updated, in addition there are new Snippets for the following
- Export Movie Dialog now has options for 'Audio Codec' and 'Audio Bitrate'.
- Unicode - Unicode labels for Custom Parameters and Parameter Pages now work correctly. Names (parameter tokens) still need to be english-alphanumeric.
- Unity home option for single sample CHOPs in RMB menu (shortcut key 'f') will set the channel heights to minimum height for readable text used in names and values.
- Parameter popup info now includes information about when it was last set by a script.
- Tweaked ctrl-arrow behavior when moving around text to be more Python aware.
- C++ SDK - Don't restrict menu names, as they are unrestricted in python custom parameters.
- Added missing parameter types to C++ SDK: appendOP, appendCOMP, appendMAT, appendPanelCOMP, appendHeader, appendMomentary, appendWH.
- 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.
- Privacy - Text TOP / Field COMPs now work when inside protected components.
- When copying or cloning protected nodes, include contents as well. (Though they are still protected)
Other Bug Fixes
- Palette - Fixed issue with dragging components from user folders with unicode characters.
- 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.
- Par.section used in expressions now refreshes properly.
- Par.enableExpr now propagated correctly through clones.
- TOP point viewer now properly retains its camera position when adaptive homing is disabled.
- Geometry viewer improvements for restoring camera positions in some cases that use adaptive homing.
- Adding/removing Tags using Parameter Dialog now undoable.
- Optimized Expressions - Added support for n.par['tx'] (the  part).
- Fixed User Shortcuts override files that were not working.
- Fixed enableExpr not refreshing on certain dependencies.
- Fixed an issue with Cue and Cue Point not always updating.
- Fixed issue where TD would only show a black screen when Antialiasing was forced on in the Nvidia Control Panel.
- Fixed crash when PYTHONPATH set to alternative python installation in some cases, and any existing PYTHONPATH now moved to end of sys.paths to avoid 3rd party startup issues.
- Fixed dragging and dropping of CHOP channels onto parameters that were already exported onto.
- Basic widgets fixed problems with font enumeration and Border Color fix to 2D slider.
- Auto scrollbars turning off now layout properly first time.
- Fixed erratic layout dealing with uninitialized scrollbar areas.
- Fixed ranges when automatic horizontal and vertical scrollbars used.
- Fixed auto scrollbars in children.
- Fixed some odd behavior with drag drop.
- Fixed bug that prevented dragging geometry in orthographic views (top, right, front, etc)
- Fixed problems using the 's' and 'SPACE' shortcuts to temporarily switch between view and transform modes in the geometry viewer pane.
- Fixed the orientation of the Top and Right cameras in all 3D geometry viewers
- Fixed a number of crashes.
- Loading crash when Time Component inside clone.
- Fixed crash when updating 'inside' panel value which trigger cooks that cause the current UI to be deleted.
- 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.
- Fixed crash that could occur on loading an empty file into a Table DAT.
- Fixed crash with odd copy case in COMP.copy() method.
- Fixed crash that could occur when entering/exiting Perform Mode.
SDK and API Updates
- CUDA - Updated to CUDA 11.2
- FFmpeg - Updated to FFmpeg 4.3
- RealSense TOP - Updated to SDK version 2.36.0
- Scalable Display TOP - Upgraded to Scalable Display SDK 7.0
- AJA - Updated to AJA SDK 184.108.40.206
- Web Render TOP] - Updated to cef 84.0.4147.105
- Oculus Rift - Updated SDK to v1.55.0
- OpenCV - Updated to OpenCV 4.5.1
- ZED - Updated to SDK version 3.2.2
- BACKWARD COMPATIBILITY 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 - RealSense CHOP - Changed 'Image Positions' to 'World Positions' and have it return x, y, z channels converted from image coordinates to world using the camera intrinsics.
- BACKWARD COMPATIBILITY - Screen Grab TOP - Capture area is now scaled to fit the output resolution rather than cropped when using GPU to GPU capture. Allows capture of windows that are larger than 1280x1280 with a Non-Commercial license.
- BACKWARD COMPATIBILITY CHOP to TOP - Reworked Fit to Square layout. Auto-calculated image dimensions may no longer be the same as in previous versions.
- BACKWARD COMPATIBILITY OpenVR CHOP - Left and Right Controller toggles have been removed, both controllers will always be output in that mode now.
- BACKWARD COMPATIBILITY Circle SOP - Normals for the ZX orientation now point along the positive Y axis for consistency with other orientations and SOPs.
- BACKWARD COMPATIBILITY WebSocket DAT - Removed onConnectionReady callback.
- BACKWARD COMPATIBILITY Matrix Class - When building a Matrix from a Table DAT, fix the matrix being incorrectly transposed.
- BACKWARD COMPATIBILITY- Par_Class.style now returns 'Object' instead of 'OBJ' in such cases, though Page_Class.appendOBJ is still functional.
- 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 - Empty menu parameters now eval as ' ' instead of '0' and return a menuIndex of None instead of 0.
- BACKWARD COMPATIBILITY - opinfo(), opinfop() Tscript expresions and opinfo command are deprecated.
- BACKWARD COMPATIBILITY. Drag-and-Drop system has backwards compatibility issues with versions of experimental prior to 2020.46450. Migration Guide here.
- BACKWARD COMPATIBILITY- TDAbleton - Clip data channels now include the clip number in their names.
Build 2021.13610 - May 12, 2021
- TouchEngine - The TouchEngine API is now publicly available on Github including a number of examples for Windows. The TouchEngine API will allow other software packages to load TouchDesigner .tox files, process them, and pass data back and forth. TouchEngine is the core technology behind the Engine COMP.
- Polish and cleanup for release.
- Documentation updated for release, see Github Readme.
- Read our blog showcase showing how Front Pictures integrates TouchEngine into their Screenberry mediaserver.
- Nvidia Background TOP - New background segmentation TOP (i.e. it "keys" out the background from the foreground) using Nvidia's Maxine AI SDK. An Nvidia GPU and Windows OS required. Check the OP Snippet for this TOP.
- Nvidia Denoise TOP - New AI-driven TOP for removing static noise and compression artifacts. An Nvidia GPU and Windows OS required.
- OP Class - Member
- Par Class -
.bindRangesetting in all cases.
- List COMP
.dragRow .dragCol- Returns currently dragged cell.
- Channel Class
.copyNumpyArray(arr)- Copies a single dimension float32 NumPy array to an existing CHOP channel's sample values.
- scriptCHOP Class
.copyNumpyArray(arr, baseName='chan')- Copies a two dimensional float32 NumPy array to the Script CHOP's output channels. Shape must be
(numChans, numSamples). Compatible with the array returned from
CHOP.numpArray()for example. Check the OP Snippets for the Script CHOP.
- Palette:sceneChanger - A component that manages smooth changing of scenes and optimized cooking for a scene-based show.
- Palette:initializeStart - A component that provides standardized initialize and start triggers for general use in projects.
Bug Fixes and Improvements
- Animation COMP - 'Channels DAT' now available as a parameter.
- Environment Light COMP / PBR MAT - Fixed recent bug where environment lights would not work if there are more environment lights than regular lights in a scene.
- List COMP - Fixed growing list of dragItems when re-entering list area.
- Table COMP - Now Children page parameters on any parent properly apply Fit and Scale parameters to a Table COMP.
- Line MAT - Fixed 'Start Caps Pullback' so it pulls back all line segments, not just the start segment.
- Phong MAT / PBR MAT - Fixed compile error when using 3D textures or 2D texture arrays.
- GLSL TOP - Fixed crash that can occur on newest AMD drivers on consumer cards when using GLSL TOP and GLSL MAT.
- Movie File Out TOP - Fixed a crash when the header table has less than 2 columns.
- Notch TOP - Fixed adding/removing of parameters (ie. exposed properties) when live editing.
- RealSense TOP - Fixed some initialization issues occurring on D455 and L515 cameras when the Color stream isn't started first.
- Video Device Out TOP - Fixed an issue where incorrect timecodes were sent for signal formats greater than 30 FPS.
- Web Render TOP - Fixed handling of Unicode characters when loading contents from a DAT.
- Text TOP / Text DAT - Fixed some font rendering issues when using <tab> with scalable fonts.
- Text SOP - Added 'Smart Quote' parameter. Converts quotes, ellipsis, and dashes to more typographically nice unicode versions.
- Ableton Link CHOP - Updated to Ableton Link v3.0.3 and fixed a crash occurring on macOS.
- Expression CHOP - Fixed loading of older files which had only 1 expression specified.
- Face Track CHOP - Fixed 126 point landmark mode when not using mesh fitting features.
- Face Track CHOP / Face Track SOP - Updated to version 0.7.5 of the Nvidia AR SDK. Check the OP Snippet for the Face Track CHOP.
- Joystick CHOP - Fixed a bug that changed the range of values in the most recent build.
- MIDI Out CHOP - Avoid sending spurious automatic events in some cases.
- MIDI Out CHOP - Added 'events_sent' to Info CHOP for diagnostic purposes.
- Script CHOP - Fixed crash when using
ScriptCHOP.copyNumpyArrayon zero-sized numpy array. Check the OP Snippet for the Script CHOP.
- Touch Out CHOP - Added toggle to disable constantly re-sending channel names for UDP based connections.
- Touch In CHOP - Reworked queuing a bit to improve behaviors.
- Folder DAT - Fix pattern parsing crash and add error to Folder DAT if parsing issue found. Fixes issue of setting Folder DAT's 'Extensions' parameter to a list.
- Touch In DAT - Fixed Unicode data not being received correctly for text based data.
- Web Server DAT - Fixed crash when connecting to secure servers on macOS.
- Web Server DAT - Fixed issue with WebSocket connections not working on a secure sever.
- Fixed DATs not getting updates to viewers or syncing to file when values are changed via binding.
- Various optimizations to improve DAT and Textport cook times.
- Fixed new crash that can occur if a Python module is imported in a Python thread.
- Fixed some bugs related to the undo stack.
- Fixed Parameter Dialog scroll wheel step size not working correctly.
- New examples for the Face Track CHOP, Script CHOP's support of numpy arrays, Nvidia Background TOP, and Render TOP transparency examples.
Build 2021.12380 - Apr 08, 2021
- Face Track CHOP - Provides high performance face tracking through Nvidia's Face Tracking AR SDK. Requires Windows and Nvidia RTX GPU.
- Face Track SOP - New SOP generates a face mesh from the Face Track CHOP above.
- Kinect Azure TOP / Kinect Azure CHOP - Updated to version 1.1.0 of the Kinect Azure Body Tracking library. Adds support for Nvidia RTX 30xx, AMD and Intel GPUs.
- Video Device In TOP - Added support for 10-bit capture for DataPath devices.
- ZED - Upgrade to ZED SDK 3.4.1, should now work with 3000 (ampere) series Nvidia cards.
- New resizable parameter page tabs allows for a smaller minimum parameter dialog size, see Geometry COMP or Actor COMP as an example. More importantly this provides needed support for Custom Parameter pages and page names of any size, which was often an issue in the Notch TOP using Notch blocks with many layers.
- Renamed page switcher from
n.par.pageindex. This can be used to set the current page of any operator.
- Drag-and-Drop - Abort drag process (cursor changes, further callbacks etc) if
onDragStartGetItems()returns empty list.
- app.paletteFolder - reports the installation folder containing palette files.
- DAT Class.editable - True if the DAT contents can be edited (Text DATs, Table DATs, locked DATs etc).
- par.lastScriptChange - New debugging feature that returns the location of the script which last update this parameter's value. Note: this has a performance impact and therefore must be turned on in the Preferences Dialog ie. Edit > Preferences...
- Par Class - Fixed
.enableExprpropagation to clones.
- Matrix Class - New
numpyArray()method to return a 4x4 numpyArray from the matrix.
- tdu.PathInfo renamed to tdu.FileInfo (note: previous still works as an alias).
- Palette:camera - Added right-click menu for setting navigation mode and choosing view presets.
- Widgets - New gadget folder with NavBar gadget.
- Updates to Palette:moviePlayer and Widgets.
Bug Fixes and Improvements
- TouchEngine / Engine COMP - Fixed some crashes that could occur is a texture was not initialized.
- TouchEngine / Engine COMP - Fixed a number of issues dealing with menu parameters and empty menus.
- TouchEngine / Engine COMP - Improved behavior when renaming parameters/pages/inputs, also fixing some issues with these when reloading the Engine COMP.
- Engine COMP - Added support for read-only and disabled parameters.
- Geometry COMP - Fixed files from 2020.20000 loading up with incorrect 'Instance Look At Direction'.
- Geometry COMP - Fixed incorrect transform order with instanced 'Tex Coord Transform Order' parameter.
- GLSL TOP - Fixed a crash that can occur when using multiple color buffers and multiple passes with compute shaders.
- GLSL TOP - Avoid incorrectly stepping on uProj and uWorld uniforms with internal matrices.
- Layout TOP - Fixed 'Background Color' not being applied on the input texture.
- Screen Grab TOP - Fixed bug when capturing a source with a vertical position below the primary display.
- Shared Mem In TOP - Fixed crash that can occur when the input resolution changes.
- Text TOP - Fixed incorrect alpha on edge pixels when using Scalable text (either using Display Method = Scalable or using Automatic when Font Size > 16).
- Text TOP - Few improvements to Stroke rendering quality.
- Video Stream Out TOP - Fixed hang that occurs when trying to use per-frame metadata.
- Audio Play CHOP - Fixed issue where volume input CHOP was ignored.
- Info CHOP - Fixed 'Type' menu being empty in some cases.
- Limit CHOP - Fixed usage of
- Splice CHOP - Fixed a crash that could occur with unexpected inputs.
- Timer CHOP - Fixed
onSegmentEnterbeing skipped when segment changes in another
- Alembic SOP - Fixed flipped faces in some Alembic files.
- OP Find DAT - Improvement so when 'Active'=Off, clicking 'Pulse' will cook the OP Find DAT and update the results.
- Web Server DAT - Fixed a crash that could occur on macOS.
- macOS - Fixed dark/incorrect shading on newer macOS version and M1 mac models. This effects 3D viewers and the Phong MAT and PBR MAT.
- MIDI Device Mapper Dialog - Fixed 'Check MIDI Devices' button which was not working.
- Setting ui.preference value will now take place immediately, not after the script is completed.
- Fixed 'Copy into' option when dragging tiles onto a component.
- Added cook dependencies for
cpuCookTimeso they properly update when used in expressions.
- Fixed 'Quadro' detection for Nvidia A6000 GPUs.
- Fixed locked 2D TOPs with greater than 1280x1280 resolution not loading correctly when using non-commercial licenses.
- Large reduction in GPU memory usage by not loading scalable fallback fonts unless they are needed.
- Large reduction to CPU memory usage by not loading OpenCV unless it is needed.
Build 2021.11180 - Mar 04, 2021
- Camera Blend COMP - Now works when rendering cubemaps.
- Movie File Out TOP - Added support for VP8 and VP9 codec encoding into .webm containers.
- Point Transform TOP - Added second input that can be used as a weight map to control which points are transformed.
- Web Render TOP - Added 'Cook Always' toggle on by default which is the old behaviour). When off, Web Render TOP will continue to cook for 10 frames after an update from the cef process to avoid delays, but afterwards new cooks will be triggered by updates.
- Trim CHOP - Added 'Shift Start to 0' parameter.
- Text SOP - New 'Level of Detail' range down to 0 gives a far lower polygon count.
- TOP Class.save - Added metadata keyword to save a list of key/value pairs to the header of .exr files.
- kinectazureTOP Class.colorCameraIntrinsics/depthCameraIntrinsics now return named tuples.
- Allow negative indexing of ListAttributes. Example: op('list1').rowAttribs[-1] # bottom row
- Allow negative indexing.
ui.panes[-1] #returns last element op('table1')[-1,-1] #returns bottom right cell op('table1').row(-1) #returns bottom row
Affects following classes:
Color Class / Dongle Class / DongleList Class / Licenses Class / Monitors Class / Panes Class / Position Class / Quaternion Class / Runs Class / Vector Class / CHOP Class / Channel Class / DAT Class / Actors Class / Bodies Class / AttributeData Class / Mesh Class / Points Class / Prim Class / Prims Class / Sequence Class
- TDAbleton - Added new tdAbletonPackageBeta which has been updated to add support for Ableton Live 11.
- Palette:reproject - New release. Quickly setup multiple outputs for Camera COMPs quad reproject feature.
- Palette:splitter - New release. Split large input textures and assign to a screen array.
- Palette:webSvg - New release. Component to load and transform SVG files, uses Web Render TOP and therefore works on all systems. Replaces deprecated SVG TOP which relied on an older Nvidia SVG library and required a Nvidia GPU.
- Palette:camera - Reworked the component so that it can be used directly as a camera.
- Palette:gestureCapture - Added 'Always Record' parameter for continuous recording of input and constant drawing of lines.
- Palette:kantanMapper - Now allows for dragging a texture directly onto the currently selected shape, and a fix for DPI scaling.
- Palette:searchReplace - Fixed some issues with multi-value parameter name changes.
Bug Fixes and Improvements
- Bullet Solver CHOP - Fixed incorrect rotation channel values for some collision shapes.
- Engine COMP - Fixed issue which prevented custom parameters updating when "Start on Init" was turned on.
- Engine COMP - Fixed for parameters not being set on load in some circumstances.
- List COMP - Fixed issue with fontSizeY not working.
- OP Viewer COMP now shares same panel values as the operator its pointing to which fixes reported issues of no click events on OP Viewer COMPs.
- Window COMP - Fixed unresponsive 'Open as Separate Window...' and 'Open as Perform Window...' options in the COMP's right-click menu.
- OpenColorIO TOP - Fixed usage of color correction and file transform files from VFS.
- RealSense TOP - Fixed issue with 'Color Aligned to Depth' causing librealsense API to fail initializing.
- Render TOP - Fixed 'Display Overdraw' feature not working.
- Spectrum TOP - Added correct error for incorrect Nvidia CUDA driver version.
- Text TOP - Create a global 'default' font to be used when font loading fails, this fixes missing fonts loading into the UI of tools like Palette:stoner and Palette:kantanMapper etc.
- Text TOP - Fixed crash when using emoji.
- Text TOP - Fixed some issues with emoji glyphs not being displayed.
- Text TOP / Text SOP - Better behavior when loaded font is missing, load a fallback font in it's place.
- Vioso TOP - Fixed usage of Vioso files from VFS.
- Kinect Azure CHOP - Disabled CUDA check on the CHOP when only looking for IMU data.
- Render Pick CHOP / Render Pick DAT - Now respects 'Cull Face' parameter of the Render TOP.
- Point Sprite MAT - Now works correctly with the 'Instance Active' instancing attribute.
- SocketIO DAT - Fixed TLS connection issues.
- Matrix Class - Fixed getInverse and getTranspose() not actually returning a result.
- Split up panel width/height/x/y expression dependencies to optimize/avoid recursions.
- Fixed missing menu choice entries when drag/dropping onto nodes .
- Fixed issue where TouchDesigner would fail to start on some older versions of Windows 10.
- Fixed oversized node icons when node stretch extremely wide.
- Fixed crash by correctly interpreting code points for emojis on macOS.
- Fixed TouchPlayer not determining Perform Window size and showing error dialog on startup.
Experimental Builds 2020.40000 - Jan 06, 2021
For experimental release notes in this branch refer to Experimental 2020.40000 Release Notes
Official Builds 2020.20000 and earlier - Dec 23, 2020
For earlier Official Build release notes refer to Official 2020.20000 Release Notes