Skip to content

TouchEngine For UE Plugin v1.3.1

Compare
Choose a tag to compare
@jetXS jetXS released this 11 Oct 21:08
· 13 commits to UE5.3-Release since this release

Note:

Release of TouchEngine For UE Plugin for UE 5.3.1

Download TouchEngine-UE_1.3.1.zip to get the precompiled binaries of the plugin, not the source downloads.

Requirements:

  • TouchDesigner 2022.35280+
  • Unreal Engine 5.3.1

Changelog

  • TouchEngine SDK Update 2022.35130

  • Main Feature: Sync Modes Update

    • The Sync Mode backend code was entirely reworked and should now behave as users expect it. It should be more effective, and stable.
    • The send mode menu was removed. This is now handheld in the backend automatically.
    • Possibly BREAKING CHANGE: We are not sending the inputs every frame anymore. You need to explicitly call Set TouchEngine Input for every frame where you want the texture copied. When you call the node, the texture will end up being copied and sent to TE and as we are not sending the inputs every frame anymore, we need to call the node again to start copying the next frame.
    • Inputs are now saving the FrameID at which they were set. We only send the frames that actually changed.
    • Added a new input buffer limit parameter. In Independent and Delayed Synchronized modes, this will enqueue cooks until it reach this limit and the buffer is full. When the buffer is full, older cooks will be merged with the next cook so that some values are still being sent.
    • The Time Scale property was removed and is being set automatically in the backend.
  • Advanced properties
    New properties were added to the TouchEngine Component

    • Pause on End Frame can be used to pause the editor when a frame was processed. This is only useful for debugging and it is only supported in Editor mode.
    • Exported / Imported Texture Pool Size properties were added for users to control the size of the texture pool used by TOP inputs and outputs in Unreal Engine. A texture pool is used to store temporary texture data while exchanging textures between the TouchEngine process and Unreal Engine. They are allocated and initialized once when the TouchEngine Component is first loaded.
    • Tox Load Timeout: The number of seconds to wait for the .tox to load in the TouchEngine before aborting.
    • Cook Timeout: The number of seconds to wait for a cook before cancelling it. If the cook is not done by that time, the component will raise a TouchEngineCookTimeout error and will continue running. Be cautious of not using too high values in Synchronized mode as we are stalling the GameThread, the application could become unusable.
  • Details panels changes and fixes

    • The properties are now closer to the TouchEngine Parameters. Parameters are converted to Unreal properties more accurately and attributes that exist for some property types are now set, such as clamping values (when enabled), default value.
    • The reset to default arrow is now available on properties with default values set.
    • Slider type display for floats, ints, floats…
      • When updating a value using the slider, the change doesn’t trigger the construction blueprint of the actor to re-init anymore. This prevent frame drops when tweaking a property. However, this means that the value will update and be passed to the TouchEngine Component only when the mouse is released.
      • ⚠️ TouchEngine now supports range min/max and clamp min/max values. Users should set those to avoid cases were incredibly small or incredibly high values are being passed from / to TouchEngine / Unreal.
    • Added or tweaked description in the tooltip of various properties
  • Blueprints context menu

    • More reorganization in the context menu
  • Blueprints misc

    • Fixed an issue where the details panel of a blueprint could display obsolete data. For example, in the case where a .tox was loaded with a set of parameters, then updated and reloaded in the world outliner details panel, going in the blueprint editor details panel could display the older properties.
  • New Nodes

    • Refresh Texture Sampler allows the UTexture to refresh its texture sampler and update the current filter. i.e. if a texture sampler was originally interpolating between pixels, was changed to a Nearest filter, Unreal will now refresh the sampler and change its filter to Nearest. This still requires a user to update the filter one way or another. The function itself works on any UTexture (if they support it).
      RefreshTextureSampler
  • Nodes changes

    • Clear was renamed to CHOP Clear, since it only is useful when working with CHOP UStructs at the moment. This is also adjusted in the context menu.
    • Is Valid? was renamed to Is CHOP Input Valid? since a CHOP UStruct passed from a Get TouchEngine Output node is always valid. This is also adjusted in the context menu.
    • FTouchEngineCHOP to String was renamed to CHOP To Debug String. This should be used only to debug.
    • FTouchEngineCHOPChannel To String was renamed to CHOP Channel To Debug String. This should be used only to debug.
  • New events

    • On Tox Started Loading. A new event that is called as soon as the TouchEngine starts loading the .tox file.
  • Events changes

    • GetOutputs was renamed to OnEndFrame
    • SetInputs was renamed to OnStartFrame
  • OnEndFrame Event Metadata

    • The new OnEndFrame event is now carrying the frame metadata. This allows to users to work more efficiently in the context of sync or have additional checks when a frame is dropped or discarded, as well as other circumstances.
    • Is Successful bool: True when Result is Success and the frame wasn’t dropped (Frame Data Was Frame Dropped)
    • Result:
      Use a “switch” node. Success and InputsDiscarded will be the most common ones. Cancelled will regularly appear when stopping TouchEngine as there might have been a cook in process or queued.
      • Success: The cook was successful. It does not mean that the frame was not dropped by TouchEngine.
      • Inputs Discarded: The inputs were discarded because the input queue became bigger than the Input Buffer Limit. When this happens, the value of the inputs will be given to the next set of inputs in the queue, unless they already define a value for those inputs. This should only happen in Delayed Synchronized and Independent modes.
      • Internal TouchEngine Error: TouchEngine failed to cook the frame
      • Cancelled: TouchEngine was requested to be shut down while a Cook was under process
      • Bad Request: Arguments were not correct or the TouchEngine instance was not valid when we wanted to start a cook
      • Failed To Start Cook: TouchEngine returned an error when the frame was started.
    • The structure is as follow:
      • Frame ID: The frame identifier, which is unique for this component, until it is restarted.
      • Tick Latency: The number of ticks it took since On Start Frame was last called.
      • Latency: The number of milliseconds it took since On Start Frame was last called.
      • Was Frame Dropped: When Unreal runs faster than the TouchEngine sub process, it can happen that the frame gets dropped, although the cook happened and be successful. In that case, the Output wouldn’t have updated.
      • Frame Last Updated: The frame identifier of the last frame we received updated data from TouchEngine.
      • Cook Start Time: The internal start time of this cook returned by TouchEngine.
      • Cook End Time: The internal end time of this cook returned by TouchEngine.
  • New read only variable Allow Running in Editor which can be used in a Blueprint to know if the Allow Running in Editor property is currently toggled on or off.

  • ToxAssets now broadcast changes. If a path is changed in a ToxAsset, or a .tox gets reimported after clicking on the Unreal Engine prompt to re-import, a TouchEngine Component relying on this ToxAsset will trigger a reload of its details panel.

  • Render Targets are now supported.

  • Compressed texture formats are now supported and converting properly from Unreal to TouchEngine / TouchEngine to Unreal.

  • Logging to boss the Message Log and Output Log was reworked. Messages should not spam the log when they are identical. Log levels assigned to specific messages were tweaked in some cases to be more or less disruptive and catch the attention. Messages being sent to the Message Log are also interactive in most cases.

  • DX11 was deprecated. Code is unmaintained and will not run in DX11 mode.

  • Various tweaks and fixes, stability improvements

  • Update of the documentation

Known issues:

  • Reset instance Changes to Blueprint Default can have unexpected behavior. This is caused internally by the TouchEngine Component properties not being quite UPropertyand a lack of events / callbacks on the Unreal Engine side of things when triggering this event.
  • Apply Instance Changes to Blueprint can have unexpected behavior. This is caused internally by the TouchEngine Component properties not being quite UPropertyand a lack of events / callbacks on the Unreal Engine side of things when triggering this event.
  • TouchEngine Menu Parameters with defaults values are missing the “default” attribute when converted to Unreal Menu UProperties. You will not see the arrow to reset to default. This is a TouchDesigner issue and this will be fixed in the next build we post.
  • When debugging using breakpoints in a TouchEngine Component using Allow In Editor, a crash can occur if your project hits a breakpoint and you disable Allow In Editor when your project is still on the breakpoint. Disable the breakpoint first and continue execution before disabling Allow Running In Editor.

Full Changelog: v1.3.0...v1.3.1