touchdesigner / touchengine-ue Goto Github PK
View Code? Open in Web Editor NEWThe TouchEngine-UE plugin allows UE developers to load TouchDesigner components within UE while relying on the TouchEngine API.
License: Other
The TouchEngine-UE plugin allows UE developers to load TouchDesigner components within UE while relying on the TouchEngine API.
License: Other
Repro steps:
Selecting ‘Parameter Example’, and adjusting the numeric ‘Tox Parameters’ like Test Color or Test Position works for only the first parameter edited, after that all the parameters are non-responsive and flash when cursor is over them. If I play and stop the scene, then it resets.
This has very specific repro steps:
In some cases, after loading a .tox or clicking reload tox, it appears that the name is not loaded in the UI except in the label on hover.
It should appear with the correct name for inputs and outputs of all supported types (DAT, CHOP, TOP).
TBC if it's an issue with Parameters as well, but I believe it was only on Inputs.
I have a simple file with an actor object with a TouchEngine added to it, loading the parameterTest.tox
Inside the blueprint for the actor I set the value for customparam/Testfloat, and get the output from output/out5.
When UE launches it starts TouchEngine.exe. I press play and the engine is working. If I then stop, the TouchEngine.exe shuts down.
Then if I press pay again I get crashes due to myTEInstance being nullptr, even though myDidLoad = true
TEInstanceSetFrameRate() is used to do this. Place it under the reload .tox button
Don't mention the example project, assume someone is just looking at this repo.
Changing “Test String” parameter in ‘Tox Parameters’ does not update the string that is rendered onto pf the textures like it does when you use parameterTest.tox in TouchDesigner. The word always just says “test”
When I changed Make Literal String value that is plugged into Set TouchEngine Input for Teststring (to change ‘test’ to something else), after this change to the blueprint, Unreal crashed once pressing play, other times worked.
If I'm not mistaken, you can't change the path without first clearing the path (remove string or (yellow arrow button next to path in component details) and probably compiling, otherwise the TE component still seems to have a reference to the previous cached .tox
DX12/OpenGL/Vulkan
When a parameter is created after a reload or it's the first time a .tox is loaded, the default values should be used.
I've ifdef'd out the DX12 support for now. I think the way forward with that is to wait until the TouchEngine API supports DX12, that way we can natively talk using DX12 textures. Otherwise we have to use DX11on12 API, which isn't officially supported on UE (we need to have our own dx11.lib included). We can likely remove that .lib from our binaries directory too in that case
reassigning parameterTest.tox to my own parameterTest_audio.tox (the same .tox with only an extra CHOP added inside) it didn't work (the parameters loading progress in the Details pane just continuously cycled and it woudl not run when started).
Therefore I edited the .tox path back to parameterTest.tox but then it crashed.
Here is my .tox file for reference
UE4Editor_TouchEngine!FTouchEngineDynamicVariableContainer::ToxParametersLoaded() [C:\Users\ben\Documents\GitHub\TouchEngineUE4Samp\Plugins\TouchEngine-UE4\Source\TouchEngine\Private\TouchEngineDynamicVariableStruct.cpp:69]
UE4Editor_TouchEngine!TBaseRawMethodDelegateInstance<0,FTouchEngineDynamicVariableContainer,void __cdecl(TArray<FTouchDynamicVariable,TSizedDefaultAllocator<32> >,TArray<FTouchDynamicVariable,TSizedDefaultAllocator<32> >),FDefaultDelegateUserPolicy>::Execute() [C:\Program Files\Epic Games\UE_4.26\Engine\Source\Runtime\Core\Public\Delegates\DelegateInstancesImpl.h:467]
UE4Editor_TouchEngine!TMulticastDelegate<void __cdecl(TArray<FTouchDynamicVariable,TSizedDefaultAllocator<32> >,TArray<FTouchDynamicVariable,TSizedDefaultAllocator<32> >),FDefaultDelegateUserPolicy>::Broadcast() [C:\Program Files\Epic Games\UE_4.26\Engine\Source\Runtime\Core\Public\Delegates\DelegateSignatureImpl.inl:955]
UE4Editor_TouchEngine!UFileParams::ParamsLoaded() [C:\Users\ben\Documents\GitHub\TouchEngineUE4Samp\Plugins\TouchEngine-UE4\Source\TouchEngine\Private\TouchEngineSubsystem.cpp:199]
UE4Editor_TouchEngine!UFileParams::execParamsLoaded() [C:\Users\ben\Documents\GitHub\TouchEngineUE4Samp\Plugins\TouchEngine-UE4\Intermediate\Build\Win64\UE4Editor\Inc\TouchEngine\TouchEngineSubsystem.gen.cpp:39]
UE4Editor_CoreUObject
UE4Editor_CoreUObject
UE4Editor_TouchEngine!TBaseUFunctionDelegateInstance<UFileParams,void __cdecl(TArray<FTouchDynamicVariable,TSizedDefaultAllocator<32> >,TArray<FTouchDynamicVariable,TSizedDefaultAllocator<32> >),FDefaultDelegateUserPolicy>::ExecuteIfSafe() [C:\Program Files\Epic Games\UE_4.26\Engine\Source\Runtime\Core\Public\Delegates\DelegateInstancesImpl.h:161]
UE4Editor_TouchEngine!TMulticastDelegate<void __cdecl(TArray<FTouchDynamicVariable,TSizedDefaultAllocator<32> >,TArray<FTouchDynamicVariable,TSizedDefaultAllocator<32> >),FDefaultDelegateUserPolicy>::Broadcast() [C:\Program Files\Epic Games\UE_4.26\Engine\Source\Runtime\Core\Public\Delegates\DelegateSignatureImpl.inl:955]
UE4Editor_TouchEngine!<lambda_f4e07816cfc13d49f86870fc08291634>::operator()() [C:\Users\ben\Documents\GitHub\TouchEngineUE4Samp\Plugins\TouchEngine-UE4\Source\TouchEngine\Private\UTouchEngine.cpp:114]
UE4Editor_Core
UE4Editor_Core
UE4Editor_Core
UDN ticket for this issue has been posted here
https://udn.unrealengine.com/s/question/0D52L00005HCGeMSAX/call-function-at-the-beginning-of-a-frame
note from malcom:
"i would think the stalling part is easy, you'd use our stall mechanism
all you need to know how to do is fire that frame cook at the absolutely earliest point possible
so the first time something tries to use an output, Get TouchEngine Output, then you'd stall"
Trying to add an array element once caused a crash for me. Can't reproduce again though.
What does happen consistently though is pressing the + will cause TouchEngine to shutdown/restart, and then the array element is cleared out when TouchEngine is restarted
The terms TOP, DAT and CHOP refer to Texture OPerators, Data Operators and CHannel OPerators, which are native node types within TD.
The naming convention doesn't extend to other types, so BOP, DOP etc. is meaningless, and stuff like SOP is actually conflicting cause we do have Surface OPerators, which are geometry (and will be a feature in the future).
I think the code should refer to the native Unreal types instead, and not use TD terminology at all. getBoolOutput, getInt32Output, getTableOutput (or getStringArrayOutput?), getTextureOutput
As we add more object to show possible functionality in the example project, we're using more and more memory with touch engine instances. Putting toggle buttons around the area so users can turn on parts of the showcase at a time (or maybe trigger volumes so that the showcases auto turn on / off when the user approaches them?) will help lower the memory impact of the project.
Version 2020.46360 of the SDK at the TouchEngineExampleWindows repo.
No API changes but some useful bug-fixes.
On U4.24.3
Can't load sample.tox (attached zip) into UE4.243 - can you give sample path syntax
tried all permutations with and without slashes to reference sample.fox in root of Content and in TouchEngine subfolder
which works in TD v2020.23680 Engine COMP if referenced at
D:\projects\UnrealProjects\TouchTest424\Content\TouchEngine\sample.tox
but NOT if at level above
D:\projects\UnrealProjects\TouchTest424\Content\sample.tox
Is this tested on 4.25?
This was in a TouchEngineInfo actor event graph
Quickstart would assist
3 cookmodes
Synchronized - stall until get that frame output. Ideally the cook is started right at the start of the unreal frame, but then the outputs aren't read until later, letting unreal do some other work in the meantime
Delayed Synchronized - get previous frame output, then set new frame inputs and trigger a new cook.
Independent - Tell TouchEngine to run in Independent mode. Set inputs arbitrarily, get output whenever they arrive
The Synchronized and Delayed Synchronized cook modes are running at about twice the speed of the Independent cook mode. Investigate why this is happening.
Running, went into blueprint and changed color value, played again, then when I stopped playback it crashed
LoginId:c044ab5f4357c3f2584083ab9c3ec459
EpicAccountId:78b79fccc63d43e5b68bec6a3d0476c7
Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0xffffffffffffffff
UE4Editor_TouchEngine!TMulticastDelegateBase::RemoveDelegateInstance() [C:\Program Files\Epic Games\UE_4.26\Engine\Source\Runtime\Core\Public\Delegates\MulticastDelegateBase.h:171]
UE4Editor_TouchEngineEditor!TouchEngineDynamicVariableStructDetailsCustomization::`scalar deleting destructor'()
UE4Editor_PropertyEditor
UE4Editor_PropertyEditor
TouchEngine_ParamTest 2 Make Arrays have a spelling error ‘tset’ instead of ‘test’ in their 3rd string entry
Unreal Crashes when often after I try to rename these in the blueprint
This is probably related to recompiling a blueprint while a tox file is loading, or due to custom blueprint node failing to compile
If I disconnect the execute wire from the Testbool blueprint node, the box correctly is no longer monochrome. However the 'Test Bool' UI parameter doesn't affect the box's color
Need to click the Reload Tox button each time a change occurred at the .tox top level and blueprint was updated accordingly / project saved. The data seemed cache and doesn't carry with the project / in git.
If an existing parameters list is already in the subsystem for a specific tox file, the restart button will not regenerate that list
Make sure that someone can add this plugin to a project without having visual studio installed on their machine. This could possible be a common use case for artists / musicians / other people who don't require c++ coding to work in unreal.
remove lots of the extra objects that arn't needed, make the .toxs be used in various ways throughout the scene (assigning light values, or maybe driving something more compelling)
have some text coming in from TouchEngine that's creating text in the scene
and kind of make it clear that there's Example Tox21, Example Tox 2 etc, lined up in the scene
We won't use the wiki, I think documenting it here will be better
Can’t seem to connect images/textures from Unreal’s Content Browser to the ImageIn Inputs parameter
(Currently only certain types of images are supported, investigate if this can be implemented)
Using the parameters and updating the values in the details panel of the world editor doesn't seem to be passed to the blueprint. Instead, the blueprint needs to be updated from the blueprint editing window or the details panel values need to be used at runtime.
In the UI, they should appear as dropdowns with proper names / labels, even if in C++ and in blueprints they end up being indices (ints).
This involves some new struct type parsing I haven't done yet so going to take some time
This is the crash I had on my end that we saw together. I don't remember exactly what happened, apologies if the issue title is inaccurate.
Send in and out single and 1024 floats, both as an array, or as 1024 individual channels. See how Unreal's performance keeps up, if it's hurting the FPS, see where the slowdowns are
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.