Release Notes/099/2019.10000 Experimental
- 1 Build 2019.13330 - Apr 09, 2019
- 2 Build 2019.12330 - Mar, 12 2019
- 3 Build 2019.11370 - Feb, 11 2019
- 4 Build 2019.10700 - Jan 21, 2019
- 5 Build 2019.10280 - Jan 10, 2019
- 6 Build 2018.42312 - Dec 12, 2018
- 7 Build 2018.42310 - Nov 29, 2018
- 8 Build 2018.41570 - Nov 14, 2018
Build 2019.13330 - Apr 09, 2019
- RealSense TOP - Added support for RealSense D435i.
- Nvidia Flow Emitter COMP - Improvements
- Added 'Shape Threshold' parameter to control how the emitter is created from the TOP's pixels.
- Much faster performance when TOP specified for 'Shape TOP' is animated.
- Can now select which channels from the 'Shape TOP' pixels are used to create the emitter source.
- Nvidia Flow TOP - Improvements
- Added support for simulation speed control.
- Added support for Camera COMP's Background Color to show up in Nvidia Flow TOP output.
- Light COMP - Added 'Projection Map Type' parameter that allows selecting a new 'Point (Equirectangular)' projection type. This will project an equirectangular texture out in all directions from the light's position.
- USD COMP - Added "Generate Actor COMPs" parameter which generates Actor COMPs instead of Geometry COMPs in the USD network for use with Bullet Solver COMP.
- Timer CHOP's Cue and goTo() method now supported when 'Segment Method' is set to Parallel Timers.
- OSC In CHOP / OSC In DAT / UDP In DAT / EtherDream DAT - Added a local address parameter to only listen on a specific IP. Great for working with multiple network interface controllers (NICs).
- Custom Operators - Adding a /Plugins directory next to the .toe file that will also be searched for custom operators. This allows projects to move more easily between machines that do not have the custom OPs installed, and helps manage project-based custom OPs more easily for deployment.
- Added Python custom parameters and ability to evaluate them as PyObjects. Futhermore;
- Line MAT - Now works with an orthographic camera, also fixed issue with point size issue in orthographic cameras.
- Private .toe file access expanded.
- External Component inside private .toe can now be saved without the component becoming private.
- Toe file can be saved by python script (privacy maintained).
- Unicode character keyboard input for complex languages is now working on macOS.
- Widgets - Widget kit update.
- Improved control over menu drop menu item height and look.
- Radio button layout improvements including 'Grid' children layout mode.
- Field components now layout label and fields separately.
- Rocker widget no longer errors when you remove text for the label.
- Label widget now has background image parameter.
- Palette:kantanMapper - Improvements
- Fixed an issue where rows and columns could not be added in the Grid Warp mode.
- User interface is now relative to the root level resolving issues like cut off menus and more.
- Palette:moviePlayer - Improvements
- Reduced overall CPU usage and CPU time to load new movie. More robust.
- Added option to enable/disable roller wheel zoom and mouse left/middle click/drag pan/zoom controls.
- Added 'Go Back to Previous Movie' pulse button parameter.
- movieEngine - Click/drag on image to scrub. Shift click/drag to scrub and pause. Middle click to pause/play.
Bug Fixes and Improvements
- GLSL TOP - Fixed bug where sometimes the uTD* uniforms wouldn't have correct values, uTDOutputInfo.res for example.
- Text TOP - Fixed unicode text sometimes being spaced incorrectly when using Polygon or Mipmapped Texture modes.
- Text TOP - Fixed bug where text would not show up using Mipmapped Texture mode.
- Web Render TOP - Fixed excessive CPU usage on macOS.
- RealSense TOP - Fixed crash when using Windows SDK API.
- Render Pick CHOP - Added queue parameters.
- Audio NDI CHOP - Fixed some issues with audio playback. Crackles, static and lost data.
- TOP to CHOP - Fixed bug where connecting an input wouldn't always re-sample the image at the specified input UVs.
- Parameter CHOP/Parameter DAT - Added drop-down menu for selecting the parameters.
- CHOP Execute DAT - Will now execute earlier in the frame, trying to do their operations before other nodes that rely on their scripts cook.
- Copy SOP - Fixed excessive cooking that could sometimes occur when fetching stamp parameters.
- Point SOP - Fixed crash that can occur if the 2nd input doesn't have the same attributes as the first input and is referenced using one of the pointSOP Class members.
- Line MAT - Fixed the Vector:Attribute transformation.
- Panel Alignment 'Max Per Line' now takes into consideration the widths and heights of all the children to work better with Fill Mode.
- Parameter help now shown for disabled parameters (alt+rollover).
- Pasting a parameter as 'Expression Reference' now always uses relative paths again, it will not insert Parent Shortcuts anymore.
- Initialize CUDA for any C++/Custom OP, just in case it ends up using it internally.
- Default assets added to FBX COMP and USD COMP.
- Fixed issue with Select COMPs causing unncessary cooking.
- Fixed broken cube map transformation.
- Fixed loading of .csv files ending with a sequence of commas.
- Fixed crash when trying to load external .tox files.
- Fixed issue where Custom OP parameter dialogs sometimes load empty or unresponsive.
- Fixed a number of geometry file type associations on macOS.
- Fixed various hangs and crashes.
- Faster file saving when saving with Dongle Privacy.
Build 2019.12330 - Mar, 12 2019
- Actor COMP - Added 'Update Collision Shape' toggle/pulse parameter to replace Auto Initialize. This new parameter will replace the collision shape while maintaining the bodies' velocity/transform. The toggle will make the process automatic (ie. when the underlying SOPs change).
- Field COMP - Added parameters for total digits, decimal digits and trailing zeroes to handle float and integer fields. Floating values will rounded to the number of decimal digits.
- FBX COMP / USD COMP - Added 'Reload File' pulse that simply reloads any assets from the file (making no changes to the network inside the COMP).
- Audio Device In CHOP / Audio Device Out CHOP - Added 'Buffer Length' units menu.
- OpenVR CHOP - New Info DAT information which contains the serial numbers for controllers. This offers a reliable way to have the same controller be used for the same action regardless of when they become visible to the system.
- Video Device Out TOP - Added support for external reference sync input for AJA devices.
- Art-Net DAT - Added local address parameters that allow for specification of which network card the ArtPoll packet is sent from.
- Widgets - Bugs fixed and some general improvements.
- Added UI/Basic Widgets/Tools/autoUI.tox
- Presets Component Updates and Fixes
- Update pulse not working on Presets Component
- Delete pulse not working on Presets Component
- Controls list container delete preset button width stretched
- Settings/bankParSettings initial rollover error from trying to access None type - caused by not yet stored previous values.
- Blend enabled for Presetblendtime par in parent in init when PresetsComp reinitialized after previously being initialized (these pars should be filtered so not to appear in the settings list)
- Pulse parameters disabled by default
- Created internal preset values DAT inspector.
- Added functionality for updating all presets in all banks when a parameter is added, removed or renamed on the target component. A confirm update dialog is created when a change is recognized. Also a pulse button has been added to the Setup page to manually update all presets with new or changed parameters. This is useful if a default value (other than the TD default value for the parameter type) for the new parameter for all the updated presets is wanted to be set. The workflow is as follows:
- Added new parameter(s)
- When confirm dialog opens and asks to update all presets, press cancel
- Set the value of the parameter
- Press Update All Presets button on Setup page and confirm.
- Now all previously stored presets will have the desired value(s) set in the new parameters.
disable both recall and blend of parameters with expressions by default on store of preset with expression in parameter filter target components "presets parameters" in settings list so they are not viewable or editable.
- moviePlayer Now comes with zoom and panable viewport
- You can zoom into the movie image using (like in the network editor) the roller wheel, and left and middle buttons to pan/zoom. Zooming up-close, the pixels become discrete squares, and their values are displayed at the bottom right.
- Control Panel Always On - on by default now.
- Palette:probe component enhancements.
- Cook times of nodes that haven't cooked recently are better-reported.
- Can use mouse wheel to zoom large networks (but not go between networks yet).
- Palette:kantanMapper general bug fixes.
- Palette:camSchnappr bug fixes and improvements.
- Autoblend fixed.
- Autoblend can now be shown in preview output whereas previously the mask was not applied to this output.
- Added additional parameters for the Autoblend feature to control the blend curve via RGB gamma/luminance based on Paul Bourke's Edge Blending article from http://paulbourke.net/miscellaneous/edgeblend/
- Page Class Page.appendPar(name, par=Par)
- Create a custom parameter matching the specified parameter as closely as possible.
- Following members are copied: size, style, label, default, defaultExpr, min, max, clampMin, clampMax, normMin, normMax, enable, readOnly, password, menuNames, menuLabels, menuSource
- These are *not* copied: value, expression, binding, order, styleCloneImmune, startSection
p = op('geo1').par.tx ; op('base1').customPages.appendPar(p.tupletName, par=p)
- OP Class
- Returns an expression from this operator to the OP that is passed as the argument. See OP.relativePath for a version using relative path constants.
- Keyword changed to toParName.
- OP Class
- New keyword 'parName' to return expression to parameter instead.
- run() methods (Cell, OP, td) now include 'asParameter' keyword (default False). When set to true, the command is executed as though it were at the same location as a fromOP parameter.
- ListAttribute.sizeInPoints to control text size units (default False). When True size is in points, when False it is in pixels.
math.floor()not returning ints for optimized expressions.
Bug Fixes and Improvements
- Updated to AJA SDK 18.104.22.168
- OP Snippets updated. You can also right-click on an OP (in the network or in the OP Create Dialog) and get to its OP Snippet from the popup menu.
- Ableton Link CHOP - Upgraded to Link SDK 3.02 and enabled 'Start/Stop Sync' which addresses issues with Ableton 10 pauses. Also added missing Info CHOP channels for this CHOP.
- OSC In CHOP - Now starts up with correct saved values when using non-queued mode.
- Movie File In TOP - Fixed incorrect alpha when using hardware decoding.
- Text TOP - Some tweaks to line breaking behavior for word-wrap.
- Field COMP - Added parameters to Field COMP for total digits, decimal digits and trailing zeroes to handle float and integer fields.
- Line MAT - Fixed points transformations in SOP space.
- Line MAT - Lift Direction parameter option "Along Camera Z Axis" changed to "Toward Camera". The behavior of this option has also changed slighty.
- Folder DAT - Fixed double // in paths when looking at the root of a drive such as C:, F: etc.
- Performance Monitor improvements
- Added line numbers to make filtering easier.
- Improved reporting and descriptions of certain events.
- Added 'Filter Count Trigger' - If value is above zero it will stop analyzing only when that many filtered lines are received. Useful for capturing specific event descriptions.
- Bound parameters now respect their local ranges, even if bound to an out-of-range master value.
- Fixed issue where Windows Drag-Drop broke outside TouchDesigner in some cases.
- Fixed issue with panels not staying with mouse while dragging/repositioning.
- Fixed missing color picker grid in the popup color dialog.
- Fixed broken perspective view using RMB to select it in 3D viewers.
- Fixed Shift+Escape being lost in some cases resulting in getting stuck in Perform Mode.
- Improved behavior for floating dialogs so application shortcuts are not respected (undo, save, etc).
- Changed default preference for filename increment to be "On and Save to Backup Folder".
- TUIK has been removed from the Palette. RIP TUIK, thank you for your service.
- Fixed guide point and tangent displays in 3D viewers on macOS.
- Fixed a crash during startup on macOS 10.11.
- Process COMP - Removed for now as a bit of polish is still needed on it.
Build 2019.11370 - Feb, 11 2019
- Flow - Now supporting Nvidia Flow - Requires Windows 10 with Nvidia GPU. Note - Work in progress.
- Flow is a volumetric fluid based simulation of a burning gas system. Control the 3 main factors of temperature, fuel, and smoke to create amazing fire and smoke simulations.
- Nvidia Flow Emitter COMP - Sets up an emitter and material. Controls the amount of fuel injected into the system as well as the temperature and amount of smoke. Material settings for the various components in the simulation are provided.
- Nvidia Flow TOP - Runs the simulation and renders the result. Controls for the simulation include damping and fading, vorticty, and burn control for each step of the simulation.
- DMX In CHOP - Improvements
- Added 'Clear Output' parameter.
- Added 'Keep Values on Save' toggle to keep values when saving and reloading a project. When off values will be set to 0 when project is reloaded.
- Shuffle CHOP - Added "Sequence All Samples Every Nth Channel" option.
- Clock CHOP - Added second input for specifying a start date and new channel for 'days' elapsed.
- Text SOP - New 'Closed Polygons (Filled Holes)' output type. Particularly useful for use with the Line MAT.
- USD COMP / FBX COMP - Added a 'Callbacks DAT' parameter and callbacks DAT with an onImport function. This allows for post-processing the imported geometry network immediately after import.
- Offline documentation now included with TouchDesigner installation. When without an internet connection, TouchDesigner will automatically use offline help.
- DAT Class.replaceRow - Replace a row in a table.
- DAT Class.replaceCol - Replace a column in a table.
- OP Class.copyParameters - Added custom/builtin keywords that can disable copying of custom or builtin parameters.
Widgets - Bug fixes and improvements.
Bug Fixes and Improvements
- NDI updated to 3.8
- NDI In TOP - Switching to a fail-over source works better now.
- NDI Out TOP / NDI Out TOP - Better audio behavior in general.
- NDI Out TOP - Fixed audio not working when coming from some CHOP types. This previously gave a warning that the CHOP must be timesliced.
- NDI Out TOP - Fixed a crash that can occur when sending audio in some cases.
- NDI Out TOP - Better audio behavior when sending at low frame rates.
- Movie File Out TOP - Fixed audio output issues for ALAC and mp3.
- Movie File Out TOP - Fixed some issues with incorrect frames being written when writing one frame at a time for images/sequences.
- TOP - Fixed Viewer Smoothness not working on non 2D Textures.
- Delete CHOP - Added 'Output Unique Samples' parameter to output only unique samples within a certain tolerance.
- CHOP Export - Improvements made to avoid conflicts when copy and pasting.
- Binding - Pulse parameters can now be directly linked through Binding.
- Fixed the Customize Component dialog's bind menu when dragging a parameter
from an operator into dialog. No longer binds as reference for both options.
- Fixed case where first ASIO device on Windows 10 systems were being skipped.
- Fixed intermittent crash when launching external editor on DAT.
- Fixed wireframe shader not working on macOS in the Geometry Viewer when something is selected.
- Fixed some cases where op() expressions would evaluate to old results.
- Fixed orphaned replicants when cutting and pasting replicators and changing size in the same frame.
- Resolved loading issues with dynamic or custom menus that were evaluating expressions.
- Fixed empty space color around panels viewed in a pane.
- Fixed reported crashes.
Build 2019.10700 - Jan 21, 2019
- Internal Parameters (ipar) and Internal Operators (iop) shortcut objects.
- Movie File In TOP - Added support for hardware decoder on Nvidia GPUs. New Hardware Decode parameter on the 'Tune' page enables it.
- In/Out operators ordering from top to bottom on the outside of the component can now controlled by a parameter.
- Allow multiple instances of TouchDesigner to run at the same time on macOS.
- Convert SOP - Added 'Particles Per Point' and Vertex.
- Shuffle CHOP - Added "Sequence All Samples By Name" option.
- OP.localCook moved to COMP.localCook, always True for OPs internally.
Tree Browser component was added to the palette.
Bug Fixes and Improvements
- Movie File Out TOP - Fixed H264 and H265 movies saving out an extra frame.
- OP Find DAT - Fixed overcooking when target OP select state changed.
- Substitute DAT - Fixed issues when using wildcard or unicode in this DAT's parameters.
- XML DAT working again.
- Beat CHOP no longer advances when timeline is paused (but 'power' is on and still cooking).
- Fixed a bug where fetched list attributes were not initializing until first render.
- PanelCOMP.clickChild(N) now clicks the Nth visible panel child, not simply the Nth panel child.
- Fixed bug with cached parameters when placing OPs.
- Fixed read-only parameters updating in parameter dialog when set via python.
- A bound menu now evaluates to string, not its master's type.
- Expressions referencing iop. or parent. shortcuts now update properly.
- Fixed large memory usage that can occur on Windows in 2019.10280 builds.
- Fixed setting of string parameters when multiple OPs selected.
- Root component is now a Base COMP, previously a Null COMP.
- Improved handling of CHOP Exports when copy and pasting.
- Improved handling of relative paths when using 'Collapse Selected' option to encapsulate OPs into a new component.
- BACKWARDS COMPATIBILITY WARNING - Par.cloneImmune renamed to Par.styleCloneImmune, update any scripts that may have relied on this.
Build 2019.10280 - Jan 10, 2019
- Widgets - A new set of UI components for building control panels, performance interfaces, applications and systems. Designed to be modular and updatable, this new architecture is fully customizable and extendible and will be TouchDesigner's primary UI toolkit going forward. This first release of Basic Widgets can be found in the Palette under UI > Basic Widgets. In the future there will also be a more advanced widget set for system builders, but we are looking for feedback on Basic Widgets first.
- Binding - New parameter mode for bi-direction control of parameters.
- Web Render TOP - Now supported on macOS.
- TOPs - Added "Parent Panel Size" entry to Output Resolution menu parameter; this will set the resolution to the width/height of the Parent Panel. If it is not the immediate parent, it will look up the hierarchy and use the width/height of the first parent panel found.
- Particle SOP - Added new parameter 'Surface Attraction' to control the surface attraction force.
- Body Class - Represents a body in a Bullet Solver simulation.
- ActorCOMP Class.bodies - Returns the bodies within this operator.
- BulletsolverCOMP Class.actors - Returns the Actors within this operator.
- Par.bindMaster - The object to which this parameter is bound to, possibly None.
- Par.bindReferences - The list of objects which bind to this parameter, possibly empty.
Bug Fixes and Improvements
- Movie File Out TOP - Fixed 'Max Threads' not working correctly when trying to change it after a recording has been done.
- Text SOP - Added support for outputting open polygons.
- Text SOP - Added support for extruding on macOS.
- Text TOP / Text SOP - Change 'Language' to 'Break Language' and make it a menu.
- Text TOP - Fixed crash when referring to an outside Field Component.
- Bullet Solver COMP - Added 'Always Simulate' toggle.
- Constraint COMP - Added visual guides to the viewer.
- Constraint COMP - Added parameter to enable/disable collisions between constrained bodies.
- Constraint COMP - Added 'Display Constraint' toggle that will display a guide for the constraint in the viewer.
- Actor COMP - Added support for instance scaling (was not working before).
- Actor COMP - Fixed Collision SOPs parameter so that it can accept regex and multiple strings.
- Bullet Solver CHOP - Added colliding_actor_id/colliding_body_id channels.
- Camera COMP - Quad Reproject now works better when the quad is backfacing.
- Timer CHOP - Fixed 'On Done' menu behaviour, as well as with cycling.
- RealSense TOP - 'librealsense' library not supported on Windows 7 OS. Can continue to use older 'RealSense SDK for Windows'.
- GLSL MAT - Added instanceID overloads for TDDeform*() functions.
- GLSL MAT - Fixed crash that occurs when using 3D textures as a map.
- Copy SOP - Reorganized 'Attribute' page with popup menus.
- OP Find DAT - Fixed very long incremental searches when starting from root.
- CPlusPlus TOP / CPlusPlus CHOP / CPlusPlus SOP / CPlusPlus DAT - cookCount added as available data to the OP_*Input classes.
- DAT - Fixed DATs to allow inserting or appending its own columns/rows.
- Text DAT - Fixed cases where extra random characters were added to DATs when saving from an external editor.
- Folder DAT - Added callbacks parameter and attached DAT with 4 available callbacks: onInitGetColumnNames, onGetValues, onGetInclude, onFound
- Added UTF-8 support to various callback parameters:
- Art-NET DAT: short name, long name, node report
- MQTT Client DAT: label, topic
- Web Socket DAT: text
- DAT.text member for Table DATS
- Fixed perform window size when panel set to 'Size From Window'.
- Fixed 'Reset Parameter' bug causing lost unused string expressions on save (ie. parameter was in Expr or Export mode).
- Allow dragging/dropping of string parameters onto each other.
- Fixed .bchan files not loading correctly.
- Fixed OP Create Dialog crash when launching new panes (ie OP Snippets).
- Fixed hang that can occur when using a License Dongle and quitting on macOS.
- Improved homing of viewers in cases using GPU Direct geometry.
- Various crash fixes.
- BACKWARDS COMPATIBILITY WARNING - For CPlusPlus nodes, matrices are now returned in column major (vector on the right) convention to be more consistent with other code such as GLSL and tdu.Matrix classes.
- BACKWARDS COMPATIBILITY WARNING * - Actor COMP moved Perform Contact Test toggle to Bullet Solver COMP.
- BACKWARDS COMPATIBILITY WARNING * - Bullet Solver COMP / Actor COMP moved 'Callbacks DAT' parameter and docked DAT from Actor COMP to Bullet Solver COMP.
Build 2018.42312 - Dec 12, 2018
Hotfix for 42310 - Note this is a branch build witha few important fixes.
Bug Fixes and Improvements
- Work around new macOS 10.14.2 bug.
- Texture 3D TOP - Fixed a crash that occurs when using R, RG or RGB pixel formats.
Build 2018.42310 - Nov 29, 2018
- Mirror TOP - New TOP for mirroring part of an image on top of itself. (Thanks Joel!)
- Web Render TOP - Now works using Non-Commercial licences (this is still Windows only, macOS coming soon).
- Substance TOP - Upgraded to most recent Substance Designer engine, now has support for 4k textures.
- Text SOP - Added ability to extrude generated geometry. Windows only this build, next build will have macOS functioning.
- Camera COMP - Added Quad Reprojection support. This allows an arbitrary section of a render, as defined by 4 points from a SOP, to be treated as the projection plane. The contents of the quad are reprojected to fill the final output view as part of the render, resulting in a full resolution render for that sub-region of the original render.
- Search External Python Path Last added to preferences to control the order custom python module paths are searched, either before or after TouchDesigner's builtin modules.
- Geometry Viewer - Homing now works for instanced geometry.
- OP Snippets now has examples for Bullet Solver COMP and Line MAT.
- Palette:moviePlayer - Version 17 improvements
- Contents can adapt to any compoennt size.
- Specify height of each control strip.
- Movie can be behind or above controls.
- Can now output mvspec.tox for later use with a moviePlayer in another process.
- Improved layout and font sizing.
- Palette:kantanMapper - Improved uv mapping for adding rows and columns in grid mode, performance improvements when textures change.
- Par.exportSource - Returns the object exporting to this parameter. For example Cell, Channel, or None.
Bug Fixes and Improvements
- Oculus Rift - Upgrade to Oculus SDK 1.31.0.
- Fixed Custom Operators not working on macOS.
- Fixed a memory leak when parent cooking was disabled that effected Error DAT/MIDI In DAT/MIDI Event DAT/TCP/IP DAT/UDP In DAT/UDP Out DAT/Serial DAT
- Bullet Solver COMP - Added an 'Initialize Sim and Collision Shapes' pulse button.
- Actor COMP - Added 'Auto Initialize' parameter to automatically re-initialize when any child SOPs are changed.
- OSC In CHOP - Fixed unwanted leading "/" in channel names.
- Movie File In TOP - Fixed pre-loading not working correctly.
- Copy SOP - Fixed error that occurs in some cases when trying to stamp.
- Text SOP - Behavior on macOS is more robust now.
- Text TOP - Added support for scalable fonts and mipmap texture fonts on macOS.
- Render TOP - Removed incorrect warning about blending and alpha when using a PBR MAT.
- Fixed TD*Noise() and TDRotate* not working in geometry shaders.
- Fixed oversized 3D viewer axis characters.
- Fixed cursor updating so you no longer have to leave the panel and re-enter for it to update.
- Fixed GPU usage showing far higher usage than actually occuring.
- Fixed saving and reloading of locked SOPs containing groups.
- Fixed Shared Memory and Web Render TOP issue causing them to not work at all.
- Standardizing older parameter pages with sub-pages to not use sub-pages.
- List COMP - Fixed crash in initialize function.
- Geometry COMP - Fixed crash that can occur when turning off Instancing.
- Fixed common crash that occurs when changing SOPs and navigating around networks.
- Fixed opening/closing/duplicating pane crash.
- BACKWARDS COMPABITILITY WARNING - GLSL TOP, GLSL MAT - GLSL 1.20 has be deprecated on Windows (never been supported on macOS). Please upgrade GLSL shaders to 3.30 or later for compatibility with future release branches.
- BACKWARDS COMPABITILITY WARNING - $TOUCH_START_COMMAND has been removed.
- BACKWARDS COMPABITILITY WARNING - DATs named /start and /stream/start will not longer execute on file start. Use the Execute DAT instead.
Build 2018.41570 - Nov 14, 2018
- Unicode - TouchDesigner now supports unicode everywhere. This allows the use of characters beyond standard 128 ASCII characters and adds builtin text support for most of the world's languages.
- Use unicode almost anywhere you can type a string
- File names and file paths can now contain unicode characters
- DATs can now accept unicode characters directly
- Text TOP and Text SOP accept unicode characters directly
- Parameters can now contain unicode characters
- Python can use unicode characters where supported
- Some parts of TouchDesigner must still use standard alphanumberic characters, such as Operator names, Channel names, Custom Parameters, Custom Attributes.
- Physics - A new group of Dynamics Components now support hard-body physics simulations using Bullet Physics Library.
- Bullet Solver COMP - Acts as the physics simulation solver.
- Actor COMP - Holds geometry that is acted upon by the physics simulation.
- Force COMP - Applies forces to Actor COMPs that specify them.
- Impulse Force COMP - Applies impulse forces to Actor COMPs, which are forces that happen in an instant.
- Constraint COMP - Constrains Actor COMPs together in 3 ways i) Point To Point ii) Hinge iii) Slider.
- Bullet Solver CHOP - Extracts information from a Bullet Solver COMP or Actor COMP as channels that can be manipulated in CHOPs and then fed back into the simulation using the Bullet Solver COMP's 'Feedback CHOP' parameter.
FBX and USD Support
- FBX COMP - New Component that loads FBX files as a network.
- Allows for non-destructive updating of FBX assets while keeping network customizations.
- No longer converts to intermediate .tog geometry format.
- Support for lights, cameras, groups, merging geometry
- Supports Direct to GPU
- Separate parameter page for embedded animation control
- USD COMP - New Component that adds support for Pixar's USD file formats (.usd .usda .usdc .usdz). USD (Universal Scene Description) is a new interchange format for sharing 3D scenes and their assets between applications.
- Allows for non-destructive updating of USD assets while keeping network customizations.
- Imports scene materials using PBR
- Supports Direct to GPU
- Separate parameter page for embedded animation control
- Other applications/platforms using USD currently include Houdini, Maya, Katana and iOS ARkit.
- Import Select TOP, Import Select CHOP, Import Select SOP - These new operators work inside FBX COMPs and USD COMPs to extract textures, animation channels, or geoemtry meshes from the imported FBX/USD hierarchy into individual OPs.
- Custom OPs - Now C++ OPs you create have a new API allowing them to act like regular built-in operators. This includes giving them their own custom names and having them available in the OP Create Dialog.
- C++ DAT - The DAT family finally gets a C++ operator to create DAT Custom OPs as well.
- CPlusPlus OPs and Custom OPs now work with Non-Commercial licenses, they no longer require a Commercial or Pro license.
- Line MAT - New MAT that provides constant shading of lines with 3D depth rolloff and color controls. Controls for line widths, line end points, drawing points, drawing vectors and arrows, and more are included.
- Audio NDI CHOP - New CHOP to receive audio over NDI. New parameter for NDI Out TOP to select audio CHOP source.
- NDI DAT - New DAT to list all NDI sources found, also has callbacks to trigger scripts on events.
- ZED TOP / ZED CHOP / ZED SOP - Adds support for Stereolabs ZED cameras.
- Lookup DAT - New DAT to lookup values between and DAT and lookup table.
- Parameter DAT - New DAT for getting parameter information from any OP. Especially useful for parameters whose values are strings.
- Process COMP - Work in progress, stay tuned for updates.
- Widget COMP - New Panel COMP that will be a base for the upcoming Widget UI system. Work in progress, stay tuned for updates.
TOPs & Rendering
- Movie File In TOP - Added 'num_decode_chunks' channel to Info CHOP to tell how many decode chunks a HAP movie is encoded with.
- Movie File Out TOP - Added 'Stop-Frame Movie' output type.
- Movie File Out TOP - Added support for outputting .gif files.
- Video Device In TOP / Video Device Out TOP - Added support for GPU Direct for Blackmagic cards.
- Video Device In TOP - Added support for AJA Kona HDMI.
- Video Device Out TOP - Added support for using the failsafe on AJA Corvid 24 devices.
- Text TOP - Added parameters to choose between text alignment using font metrics or the bounding box of the current string.
- Render TOP - Added a rendering mode for UV unwrapping.
- Render TOP - Added parameters to only render a few faces for a cube map if desired.
- Render TOP - Added support for Image Output. This gives an extra buffer of arbitrary type/size/format that can be written to using imageStore() in GLSL MATs. The results can be accessed using a Render Select TOP.
- GLSL TOP, GLSL MAT - Added 'Preprocess Directives' DAT parameters. Specifies a DAT that contains code that will be added at the start of all the compiled shaders. This is where #extension directives should go, as well as common #define values to be set for all shader stages.
- GLSL TOP, GLSL MAT - Added TD_VERTEX_SHADER, TD_GEOMETRY_SHADER, TD_PIXEL_SHADER. TD_COMPUTE_SHADER defines.
- Phong MAT, PBR MAT - Added 'Displace Vertices' parameter that will displace vertex positions using a heightmap.
CHOPs & DATs
- Speed CHOP / Spring CHOP / Slope CHOP - Added 'Per Sample' option, Shuffle CHOP not longer needed!
- SOP to CHOP - Added toggles to SOP to CHOP for Position, Color, Normal and Texture attributes. Attributes in 'Custom' have autonamed channels.
- OSC Out CHOP OSC Out DAT TCP/IP DAT UDP Out DAT - New parameter to support multiple NICs (Network Interface Controllers).
- OSC In CHOP - Added a non-timeslice mode that will only cook when receiving data.
- Pattern CHOP - Added a new type called 'Step' and new 'Step per Cycle' and 'Phase Step per Channel' parameters.
- Timer CHOP - Rewritten for optimization.
- Keyboard In DAT - Tweaked for unicode support. A 'key' is defined as the best-match ASCII keyboard key pressed. While 'character' is the actual unicode character generated.
- OP Find DAT additions.
- Added option to show chosen filter values when combining 'any'.
- Added new 'Incremental Update' option.
- Added new 'Custom' combine option which allows an arbitary expression to combine filters.
- Added new 'wirepath' column which provides a list of connected siblings to that object. Only supported for Object and Panel components.
- Added new option 'Include Wire Hierarchy'.
- Added .csv file format support for CHOPs and DATs.
API & SDK Updates
- Updated to CUDA 9.2
- Updated to ffmpeg 4.0
- Updated to AJA SDK 22.214.171.124
- Updated ZED SDK to 2.5.1
- Updated to OpenEXR 2.3.0 for Movie File In TOP.
- Updated to Alembic 1.7.9 for Alembic SOP.
- Update FBX to 2019.0 for FBX COMP.
- Added v4.0.0 Orion support to Leap Motion CHOP / Leap Motion TOP.
- Upgraded RealSense TOP / RealSense CHOP Windows API version to 126.96.36.1994 (2016 R3). This removes support for the R200 when using this API, but adds support for Hand Cursor as well as stability improvements.
- Color Class - Added new Color class to tdu.
- Prim Class - Prim.direction returns a normalized vector pointing from the centroid of the SOP to the centroid of the primitive.
- SOP Class - Added support for SOP.center.
- Point SOP - me.inputPoint and me.inputPoint2 are now a InputPoint Class instead of a Point Class.
- Wave CHOP - Added support for .chanIndex and .sampleIndex
- DAT Class - Added findCells and findCell python methods to search cells by value.
- DAT Class functions for working with multiple rows/columns at once.
- appendRows() - appends multiple rows to a Table DAT.
- appendCols() - appends multiple columns to a Table DAT.
- deleteRows() - deletes multiple rows in a Table DAT.
- deleteCols() - deletes multiple columns in a Table DAT.
- OpviewerCOMP_Class - opviewerCOMP.isViewable(path) - Tests for potential recursion to find out if an OP is acceptable for viewing.
- UI Class - ui.copyOPs(listOfOPs) ui.pasteOPs(COMP, x=None, y=None)
tdu.match( pattern, list, caseSensitive=True) -> Listwhich returns a subset of the input list where each element matches the pattern. Wildcards are supported.
tdu.match('foo*', ['foo', 'bar']) # return ['foo'] tdu.match('b??', ['foo', 'bar']) # return ['bar']
Improvements and Bug Fixes
- Render TOP / Render Pass TOP - Re-organize parameters.
- Render TOP - Added some warnings if alpha != 1.0 is detected but blending isn't enabled on the material.
- Movie File In TOP - Improved H.265 decoding performance.
- Movie File In TOP - Fixed crash that can occur when failing to open a .exr file.
- Movie File In TOP - Removed global CPU movie cache feature, it was generally not useful.
- Video Stream Out TOP - Applied hotfix to fix stack overflow vulnerability recently found in live555 library.
- Text TOP - Adjust font spacing and layout to be more Unicode friendly.
- Text TOP - Fixed some vertical font alignment issues on macOS.
- GLSL TOP - Renamed Compute Shader output from sTDComputeOutputs to mTDComputeOutputs. Old name continues to work for backwards compatibility.
- GLSL TOP - Fixed bug where output would not be set to a 3D texture/2D Array if Depth was left as 'Input' but the input didn't have depth (or there wasn't an input).
- DAT to CHOP - Add default value parameter when values not specified in DAT.
- OSC In CHOP - Fixed delayed by one when non-queued and intermittent values sent.
- DMX In CHOP / DMX Out CHOP - Removed restrictions from universes (prev. 0-15) to make it easer to work with external programs that only use a universe number.
- Audio Stream Out CHOP - Fixed issue which caused audio loss after 35 minutes.
- SOP to CHOP / CHOP to SOP - Removed the 'Animated' method fom CHOP to SOP and SOP to CHOP.
- Expression CHOP - Added me.inputVal, me.chanIndex, me.sampleIndex to the Optimized Expression engine.
- Noise CHOP - Added 'Offset' parameter to offset noise.
- Noise SOP - Added 'Offset' parameter to offset noise.
- Point SOP - Added support for many commonly used Python terms to the Optimized Expression engine for this SOP.
- Render Pick DAT - Allow Render Pick DAT to work without a 'select' column.
- OP Find DAT improvements
- Fixed output for non-default-only, when other fields are default
- Fixed 'Combine Filters = Any' logic.
- List COMP improvements and additions.
- Added new attribute rowStretch. Allows for vertically stretchable rows.
- Now updates panel values dragroll/u/v.
- Now supports dropping of parameters, text, channels
- Perform Window now unconstrained if pointing to Panel COMP set to unconstrained.
- Added Optimized Expression support for panelCOMP.panel.<value>.val
- CrashAutoSave.toe is now suffixed with the project's filename.
- BACKWARDS COMPATIBILITY WARNING - 'Use Startup File' .toe file preferences need to be reset.
- BACKWARDS COMPAITIBLITY WARNING - Evaluate DAT - The behavior of 'Convert Backslash Characters' has been streamlined, and only affects \\ \t \n and \r sequences. Furthermore, it will not strip quotes as it did previously.
- BACKWARDS COMPATIBILITY ISSUE - Lag CHOP now uses the correct units for acceleration clamping.
- BACKWARDS COMPATIBILITY ISSUE - GLSL TOP has replaced the binding/size parameters on the Atomic Counters page with a uniform name parameter.
- On macOS, for some languages such as Japanese, unicode character input dialog is not enabled yet. You can copy & paste unicode characters in at this time. Fix in progress.
- TouchPlayer may not be able to load movies from a unicode path.
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.
TOuch Environment file, the file type used by TouchDesigner to save your project.
A built-in panel in TouchDesigner that contains a library of components and media that can be dragged-dropped into a TouchDesigner network.
A text string that contains data (string, float, list, boolean, etc.) and operators (+ * < etc) that are evaluated by the node's language (python or Tscript) and returns a string, float list or boolean, etc. Expressions are used in parameters, DATs and in scripts.
Any of the procedural data operators. OPs do all the work in TouchDesigner. They "cook" and output data to other OPs, which ultimately result in new images, data and audio being generated. See Node.
To pulse a parameter is to send it a signal from a CHOP or python or a mouse click that causes a new action to occur immediately. A pulse via python is via the
.pulse() function on a pulse-type parameter, such as Reset in a Speed CHOP. A pulse from a CHOP is typically a 0 to 1 to 0 signal in a channel.
To re-compute the output data of the Operators. An operator cooks when (1) its inputs change, (2) its Parameters change, (3) when the timeline moves forward in some cases, or (4) Scripting commands are run on the node. When the operator is a Gadget, it also cooks when a user interacts with it. When an operator cooks, it usually causes operators connected to its output to re-cook. When TouchDesigner draws the screen, it re-cooks all the necessary operators in all Networks, contributing to a frame's total "cook time".
An Operator Family that reads, creates and modifies 3D polygons, curves, NURBS surfaces, spheres, meatballs and other 3D surface data.
The operating system's holder of files and other folders (directories). It does not refer to operators within TouchDesigner. See Network Path.
TouchDesigner User Interface Kit - A collection of User Interface components.
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.
Binding is a Parameter Mode that ties two or more values together, where changing the value of any one of the bound values changes all of them. The actual value is stored in one place, whichever value is at the top of the bind chain, called the bind master. Parameters can be bind references, bind masters, or both. Table cells and bindCHOP channels can be bind masters only.
TouchDesigner is a hierarchy of components. "root" is the top-most network in the hierarchy. The Path is simply
/. A typical path is
Parameters in TouchDesigner are an operator's settings (numbers, menus, flags, strings, paths) which the user can alter. Parameters for any operator can be opened by right-clicking on the operator and selecting "Parameters..." A currently selected operator's parameters can be viewed in a Network Editor by pressing the keyboard shortcut 'p'.
Exporting is the connection of CHOP channels to parameters of operators. The output of each exporting CHOP is one or more channels, active only while the CHOP Viewer is on. The current value of a channel can be exported to a parameter of any operator, overriding that parameter's value. See Parameter.
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.
Quad Reprojection renders pixel-perfect perspective-correct images for flat TVs and LED panels hung at any orientation.
Unicode is fully supported in TouchDesigner. Unicode can be typed into parameters, DATs, Python scripts etc. Unicode encoded text files can be loaded into DATs. File paths can include any unicode character that is legal for a file path.
A 3D image created with the Render TOP. Also used more generally to include the compositing (with TOPs) to generate an output image.
The connection of an output of one node to the input of another node in a network. In contrast, see Link.
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.