Initialize Start is an approach in TouchDesigner to prepare and run timed processes. It applies to any system in TouchDesigner where there first needs be an initialization, like files read, server queried or data prepared until the system is ready to go, and then it is signalled to start. For example, before starting a show, you may want to initialize all your generative components at their first frame.
Initialization often takes more than one frame to complete, so there is usually provision to initialize over several frames without substantially stalling TouchDesigner.
Examples of parts of TouchDesigner where the Initialize Start approach is used are:
- Timer CHOP
- USD COMP, FBX COMP
- Bullet Solver COMP
- Nvidia Flow TOP, Notch TOP
- Animation COMP
particlesGpuCOMP in Palette
- Engine COMP (30K)
initializeStarttemplate components in plaette - for making you own component that follow the Initialize Start approach
- Initialize (pulse) - prepares all data, in
- Start (pulse) - starts all the timers, puts in
- Play (toggle) - used to pause while playing
- Speed (float) - speed or slows the timer or simulation clock while runnning.
- Cue (toggle), Cue Pulse (pulse), Cue Point (float with menu % index, frames, seconds) - allows you to put/scrub sysetm at specified time
- Length (float) - if behavior is fixed-length, length is sometimes pre-determied like a movie file, sometimes user-set.
This is often achieved by attaching an Info CHOP to the operator. It is the actual output in the Timer CHOP.
timer_frames. used to drive animations, index lookups, etc.
running_seconds (external seconds since Start),
playing_seconds (affected by Play and Speed parameters).
Fixed-length vs infinite (unknown) length. An example of infinite length would be a particle simulation. There are two flavors of fixed-length - user-specified length or media-determined length (like an audio file).
In some cases, like the Timer CHOP, there are callbacks where you can run python code when events occur, such as the end of initialization, or the end of a fixed-length behavior.
Errors and Warnings
In some cases, the operator reports errors or warnings, like failure to initialize.
A built-in panel in TouchDesigner that contains a library of components and media that can be dragged-dropped into a TouchDesigner network.
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.
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.