Presetmanagement and parameer manipulation in TouchDesigner.
Project description
TauCeti PresetSystem + Tweener
Highly customisable and setup agnostic system for presets management in TouchDesigner
Installation
Select the correct version from branch and download the toxfiles if needed..
If you already have setup a venv or other way of handling Packages, use pip install tdp-TauCeti and mod.TauCeti.Tweener.ToxFile to load the toxfile.
This will be the future way of disctribution.
Note on Versions
This project uses SemVer. All releases of a major version will be fully compatible. Minor releases will only add new features. Patches should not change behaviour.
Contributing
This project is released under the GPL-3.0 license and part of PlusPlusOne FOSS projects. Feel free to open pull requests or open issues.
https://github.com/PlusPlusOneGmbH/TD_TauCeti_Presetsystem
Tweener
The tweener is the heart of the whole system and a great component in itself. It allows for programmatic creation and management of Tweens, transitions between states of a parameter. Be it Expression or Static, fadeable and non-fadeable parameters, the Tweener should be able to handle them.
__ There should only be one tweener per project. Use GlobalOP-Shortcuts or other means of dependency management __
The tweener offers several ways of creating tweens. All do wrap arround CreateTween as the most important method.
op("Tweener").AbsoluteTween(
parameter : Par,
targetValue : any,
time : float,
curve : str = "LinearInterpolation",
delay : float = 0,
callback : Callable = _emptyCallback ) -> TweenObject
# Creates a tween that will resolve in the defines time.
op("Tweener").RelativeTween(
parameter:Par,
targetValue:any,
speed:float,
curve:str = "LinearInterpolation",
delay:float = 0,
callback: Callable = _emptyCallback) -> TweenObject
# Creates a Tween that will resolve with the given speed in distance per seconds.
Both functions are clearly aimed at fadeable, meaning numeric, parameters. They will fail for non-numeric values.
For nun-numeric parameters the underlying CreateTween is required.
op("Tweener"):CreateTween(
parameter :Par,
targetValue :float,
time :float,
type :Literal["fade", "startsnap", "endsnap"] = 'fade',
curve :str = "LinearInterpolation",
mode :Union[str, ParMode]= 'CONSTANT',
expression :str = None,
delay :float = 0.0,
callback :Callable = _emptyCallback,
id :Hashable = '', ) -> TweenObject:
# Creates a Tween for the given paramaters.
# If mode is set to ParMode.EXPRESSION, the targetValue will be ignored and expression wil be used instead.
calback is a function that takes a single arguments in form of the TweenObject.
The TweenObject has the following attributes and methods:
Active : bool # If False, the tween will not be continued until Active is back to True
OnDoneCallbacks : List[Callable] # A list of callales that will be executed once the tween is done.
Done : bool # True if the Tween is done.
Remaining : float # seconds left unti complition.
Pause() # Halts the continuation of the tween untils resumed.
Resume() # Continues the tween.
Stop() # Stops the tween right where it is and removes it.
Reset() # Reverses all changes done by the tween and stops it.
Reverse() # Changes target and startingpoint mid flight.
Delay(offset:float) # Reduces the current ime by offset. When at 0, this results in a delay, when above 0 will result in a stepback.
Resolve() # In async context, await the compleation of the tween, then conitnue.
The Tweener itself also offers some additional utility functions.
StopTween( target: Union[Par, TweenObject._tween]) # Stops a tween by the tween object or the parameter wich it points to.
StopAllFades() # Does exactly what it sais it does. Should be named StopAllTweens though.
Tweens : Dict[int, TweenObject] # A dict containing all tweens, keyed by an unique ID per parameter.
TweensByOp( targetOpartor:OP) # Returns a list of all tweens that are running and pointing at a prameter of the given operator.
Example
Fading in a levelTOP in 1 second.
op("Tweener").AbsoluteTween( op("level1").par.opacity, 1, 1)
Awaiting the completion of a tween.
await op("Tweener").AbsoluteTween( op("level1").par.opacity, 1, 1).Resolve()
Transition from current value to a refference of an LFO.
op("Tweener").CreateTween(
op("level1").par.opacity, None, 1,
mode = ParMode.EXPRESSION,
expr = "op('lfo1')['chan1']"
)
A pretty destructive tween.
def callback( tweenObject ):
tweenObject.Paramater.owner.destroy()
tweenObject = op("Tweener").AbsoluteTween( op("level1").par.opacity, 1, 1)
tweenObject.OnDoneCallbacks.append( callback )
PresetManager
The presetmanager allows to store and recall state of any arbitrary parameters.
Most operations will use the stack, which is a collection of parameters. To add any parameter to the stack, activate the viewer and add drop the parameter right in.
This video contains most information required for the operation: https://www.youtube.com/watch?v=SSNvsvrnifI
To be added:
- Data Repository
- Fademodes
- Preloading
- Python API
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file tdp_tauceti-5.1.1.tar.gz.
File metadata
- Download URL: tdp_tauceti-5.1.1.tar.gz
- Upload date:
- Size: 1.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a694b11e54225af6514bdd2d8f8cd67d59cb8a3eeb4a0571917c632bbca9277a
|
|
| MD5 |
182eb3ba64022add5259c993296b2757
|
|
| BLAKE2b-256 |
e68c2b1f7653f0841e07cb6871a5483f84b1c26b3f818a0c4f83d0f8b5641e08
|
File details
Details for the file tdp_tauceti-5.1.1-py3-none-any.whl.
File metadata
- Download URL: tdp_tauceti-5.1.1-py3-none-any.whl
- Upload date:
- Size: 1.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
76fc2aebf9ee7985530de8df20b2fff3021871a97a47b438efc70d9880aa3b00
|
|
| MD5 |
762d4d51242a0ca7f70ca22eac84b16c
|
|
| BLAKE2b-256 |
a3461924e77d80350cb696ed6b12a18cf68aef9c6d58f326caf5f0be1f0ee40d
|