Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| software:touch_designer [2024/07/16 09:58] – [Rendering] mh | software:touch_designer [2025/12/09 17:43] (current) – [Useful Python Expressions] mh | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== | + | ====== |
| - | * [[https://derivative.ca/|Official Website]] | + | //Personal knowledge base for rapid re‑entry into TouchDesigner after long breaks.// |
| - | * [[https:// | + | ===== Resources & Onboarding ===== |
| - | ===== Knowledge ===== | + | TouchDesigner uses node‑based workflows where data flows through operators (OPs) that cook when needed. |
| - | ==== Mouse movement ==== | + | * **[[https:// |
| - | * '' | + | * **[[https:// |
| - | | + | |
| - | | + | |
| - | ==== Nodes ==== | + | ===== Interface Essentials ===== |
| - | The Graph Editor portion of Touch Designer is called the **Network Editor**, and a bunch of interconnected operators doing some kind of function is called a network. | + | ==== Global UI ==== |
| - | The nodes are called | + | |
| + | * **Perform Mode:** Toggle with **'' | ||
| + | * **Palette: | ||
| + | * **Operator Snippets:** Help → Operator Snippets shows practical examples for most OPs. | ||
| + | * **'' | ||
| - | The Network Editor has a path bar at the top of the interface and projects in Touch Designer are similar to a Unix file hierarchy. | + | ==== Viewer Interaction ==== |
| - | Double-clicking on a grey operator will open this component and display the nodes that build it up. (e.g. geo1 in default file) | + | // |
| - | Even though | + | * **'' |
| + | * **'' | ||
| - | Viewers can be toggled **Active** with the button on the bottom right. This locks their position and enables to move the content around in the preview panel to highlight details of its processing. This does not affect its output. | ||
| - | '' | + | ==== Panes & Layout ==== |
| - | For each Operator hitting the '' | + | * Panes can be split using **'' |
| + | * The **'' | ||
| + | * **'' | ||
| - | From the top menu Help > Operator Snippets opens up a floating window with many examples and notes on each operator | + | ==== Mouse Controls ==== |
| + | * **'' | ||
| + | * **'' | ||
| + | * **'' | ||
| - | ---- | + | ==== Keyboard Shortcuts ==== |
| - | === Operator Types === | + | // |
| - | * **TOP:** **T**EXTURE **OP**ERATOR - Purple - Works exclusively with 2D rasterized graphics | + | * **'' |
| - | * **CHOP:** **CH**ANNEL **OP**ERATOR - Green - Signal, communication, | + | * **'' |
| - | * **DAT:** **DAT**A OPERATOR - Pink - String | + | * **'' |
| - | * **SOP:** **S**URFACE **OP**ERATOR - Blue - Procedural 3D Geometry | + | * **'' |
| - | * **COMP:** **COMP**ONENT OPERATOR - Grey - Multi function components (3D rendering - Panels - etc.) | + | * **'' |
| - | * **MAT:** **MAT**ERIAL OPERATOR - Yellow - | + | |
| - | The darker colors in all families are generators. | + | ===== Operators & Network Logic ===== |
| - | ---- | + | ==== Operator Families ==== |
| - | === Keyboard Shortcuts === | + | * **TOP:** **T**EXTURE **OP**ERATOR - Purple - 2D raster graphics |
| + | * **CHOP:** **CH**ANNEL **OP**ERATOR - Green - channels, numeric/ | ||
| + | * **DAT:** **DAT**A OPERATOR - Pink - tables, strings, scripting | ||
| + | * **SOP:** **S**URFACE **OP**ERATOR - Blue - Procedural 3D geometry | ||
| + | * **COMP:** **COMP**ONENT OPERATOR - Grey - components, UI, 3D rendering | ||
| + | * **MAT:** **MAT**ERIAL OPERATOR - Yellow - materials, shaders | ||
| - | //Keyboard shortcuts only works while the cursor is in the Network Editor// | + | Dark-colored OPs are generators. |
| - | //Keyboard shortcuts are case sensitive ! Careful | + | ==== Cooking, Push/Pull Logic, Performance ==== |
| + | * Data flows left → right. | ||
| + | * Cooking occurs when dependent OPs need updated data. | ||
| + | * Animated noodles = cooking | ||
| + | * Static noodles = cached. | ||
| + | * Heavy cooking sources: | ||
| + | * Full-res TOP chains | ||
| + | * CHOPs with large sample counts | ||
| + | * SOP deformers | ||
| - | * '' | + | Use nulls, selects, Resolution TOP, and Cache Select |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | ---- | + | ==== Network Hierarchy & Navigation ==== |
| - | === Signal Flow === | + | * Networks behave like Unix-style folders. |
| + | * Path bar shows current location. | ||
| + | * Double-click a COMP to see its internal network. | ||
| - | Data always flows from left to right. | + | ==== Flags, Viewers & Info ==== |
| - | Connections between nodes can be still (no animation) or cooking (animation visible on the noodle). | + | * Display flag = viewer preview. |
| + | * Render flag = included in rendering. | ||
| + | * **'' | ||
| + | * “?” in parameter window → operator wiki page. | ||
| - | Cooking refers | + | ==== Parameters & Editing Tricks ==== |
| + | * Middle-click/ | ||
| + | * Use on name of parameter to affect all values simultaneously. | ||
| + | * Drag CHOP channels into parameters: | ||
| + | * CHOP references | ||
| + | * Export bindings | ||
| + | * Drag CHOPs onto TOPs to convert. | ||
| - | ---- | + | ===== Signal Flow & Data Types ===== |
| - | === Parameters === | + | TouchDesigner mixes several structures: |
| + | * TOPs → images (resolution-dependent) | ||
| + | * CHOPs → channels (sample rate–based) | ||
| + | * SOPs → points/ | ||
| + | * DATs → strings/ | ||
| - | Every node has parameters that can be manually controlled, tied to UI, scripted, etc. | + | Important relationships: |
| + | * Instancing: SOP point count = CHOP sample count. | ||
| + | * CHOPs depend on FPS; TOPs depend on resolution. | ||
| + | ===== Rendering Workflow ===== | ||
| - | Right click on a node gives the option to open a floating parameter window. | + | ==== SOP → COMP → TOP Pipeline ==== |
| + | * SOPs exist on CPU → piped into Geometry COMP. | ||
| + | * Camera and Light COMPs define render scene. | ||
| + | * Render TOP outputs | ||
| - | When editing a parameter (e.g. speed on a moviefilein) '' | + | Add **In** SOPS in the **Geometry** op to send a chain of SOPS into it. |
| + | ==== Render TOP Fundamentals ==== | ||
| + | * Inputs: | ||
| + | * Camera | ||
| + | * Geometry COMPs | ||
| + | * Lights | ||
| + | * End with a null TOP for stability. | ||
| - | When a parameter has two values that you would like to increase/ | + | ==== Cameras, Lights, Environment ==== |
| + | * Keep one object per Geometry COMP when possible. | ||
| + | * Cameras operate | ||
| + | * Light types: Point, Spot, Directional. | ||
| + | ==== Common Rendering Patterns ==== | ||
| + | * SOP chain → Null SOP → Geometry COMP | ||
| + | * Geometry → Render TOP → Composite/ | ||
| + | * Use Select TOPs to inspect interim results. | ||
| - | ===== Rendering ===== | ||
| - | Rendering is done in a **Render** TOP. | ||
| - | |||
| - | Basic setup involves the 3D COMPS **Cameras, Geometry and Light** to bring the SOP chain operating on the CPU to the Rendering pipeline operating on the GPU and rasterize the content. | ||
| - | |||
| - | Add **In** SOPS in the **Geometry** op to send a chain of SOPS into it. | ||
| The display and render flags tell the rest of the network whether the node should be used in the rendering process and displayed in the viewer. | The display and render flags tell the rest of the network whether the node should be used in the rendering process and displayed in the viewer. | ||
| Line 99: | Line 139: | ||
| You can put multiple things in a geometry comp with the display flag ON but it's best practice to keep just one item per geometry to have a cleaner network. | You can put multiple things in a geometry comp with the display flag ON but it's best practice to keep just one item per geometry to have a cleaner network. | ||
| + | ===== Output Pipeline ===== | ||
| - | ==== Textures | + | ==== Window COMP ==== |
| + | * Main operator for projection/ | ||
| + | * Settings: | ||
| + | * Monitor | ||
| + | * Opening Size | ||
| + | * Borders | ||
| - | Texturing is done with **MAT** operators and by sending things into the Color map property. | + | ==== Perform Mode ==== |
| + | | ||
| + | * Layouts may scale differently; | ||
| - | ===== Useful tips ===== | + | ===== Tips, Tricks & Best Practices |
| - | When creating a network of nodes, add null operators | + | ==== Null Strategy ==== |
| + | * Use nulls at key checkpoints. | ||
| + | * Reference nulls elsewhere | ||
| - | TOPs have a display flag at the bottom right which can be turned on to toggle a preview in the background of the network editor. | + | ==== Select Strategy ==== |
| + | * Extract channels with Select CHOPs. | ||
| + | * Organizes complex CHOP data streams. | ||
| - | Use **Select** CHOPs to extract different channels from your other CHOPS to use them in the network. | ||
| - | |||
| - | ---- | ||
| === Referencing a parameter - Dynamic links === | === Referencing a parameter - Dynamic links === | ||
| Line 119: | Line 168: | ||
| * Select the TOP to link to parameter | * Select the TOP to link to parameter | ||
| * Drag & drop from the CHOP into the parameter | * Drag & drop from the CHOP into the parameter | ||
| - | * Select Reference type (Most of the time it's CHOP Reference | + | * Select Reference type (Most of the time it's CHOP Reference) |
| You can also drag an entire CHOP into a CHOP to TOP operator to reference it. | You can also drag an entire CHOP into a CHOP to TOP operator to reference it. | ||
| + | |||
| + | Alternatively, | ||
| ---- | ---- | ||
| + | ==== Resolution TOP ==== | ||
| + | * Drop resolution early to speed up heavy FX. | ||
| + | * Increase resolution at end of chain. | ||
| + | |||
| + | ==== Useful Python Expressions ==== | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | |||
| + | ==== Cache & Cache Select ==== | ||
| + | * Cache TOP stores multiple frames (heavy on VRAM). | ||
| + | * Cache Select references those frames without extra memory. | ||
| + | * Pair Cache + Reorder TOP for temporal RGB shifting. | ||
| + | |||
| + | ==== Instancing Workflow ==== | ||
| + | * Match SOP points to CHOP samples. | ||
| + | * Enable instancing in Geometry COMP → Instance tab. | ||
| + | * Position, scale, rotation via CHOP channels. | ||
| + | |||
| + | ==== Optical Flow ==== | ||
| + | * Outputs motion vectors (R = X velocity, G = Y velocity). | ||
| + | * Useful for simulations, | ||
| + | |||
| + | This converts video streams into usable data for interactivity. | ||
| + | ===== Common Techniques ===== | ||
| + | |||
| + | ==== Feedback Loops ==== | ||
| + | * Feedback TOP + Transform + Composite. | ||
| + | * Use Resolution TOP to prevent GPU overload. | ||
| + | |||
| + | ==== Trails ==== | ||
| + | * CHOP Trail for numeric history. | ||
| + | * TOP composite trails for visual streaks. | ||
| + | |||
| + | ==== Multi-Layer Composite Setups ==== | ||
| + | * Composite TOP blends layers using Over, Add, Screen, etc. | ||
| + | |||
| + | ==== CHOP-Driven Animation ==== | ||
| + | * LFO, Noise, Trigger CHOPs for dynamic control. | ||
| + | * Export or reference in parameters. | ||
| + | |||
| + | ==== TOP FX Chains ==== | ||
| + | * Common structure: | ||
| + | Source → Level → Blur → Edge → Composite → Null | ||
| + | * Keep heavy FX at low resolution. | ||
| + | |||
| + | ===== Creative Notes ===== | ||
| + | * Repetition of simple forms builds complex visuals. | ||
| + | * Overlapping translucent layers enrich motion and depth. | ||
| + | * Vary timing, resolution, and color to create dynamic energy. | ||
| + | |||
| + | ===== OLD VERSION ===== | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Useful Tools ===== | ||
| + | |||
| + | |||
| + | ==== Output ==== | ||
| + | |||
| + | Output is done by using the **Window** COMP. | ||
| + | |||
| + | You can open as a separate window or in perform mode. | ||
| + | |||
| + | Tweak the // | ||
| + | |||
| + | ==== Textures ==== | ||
| + | |||
| + | Texturing is done with **MAT** operators and by sending things into the Color map property. | ||
| + | |||
| + | ===== Useful tips ===== | ||
| + | |||
| COMP Buttons and sliders can be connected to Null operators to toggle them into run mode and handily display their output. | COMP Buttons and sliders can be connected to Null operators to toggle them into run mode and handily display their output. | ||
| + | |||
| + | ---- | ||
| + | |||
| + | === Using Resolution TOP === | ||
| + | |||
| + | It's good practice to work in lower resolutions until you need to up the resolution with a **Resolution** TOP. | ||
| + | |||
| + | When using source loops into TOP Fx chains it's handy to pass them through a Resolution TOP and lower them down to half res to improve performance. | ||
| + | |||
| + | ---- | ||
| + | |||
| + | === Using the Cache TOP === | ||
| + | |||
| + | Be wary of the frame count when using the **Cache** TOP as it is essentially what uses the most GPU memory. | ||
| + | |||
| + | It's best to use a **Cache Select** TOP rather than using the Output Index of the **Cache** TOP. They will have very small cook times and be totally free in terms of GPU memory as they will reference the images that are already in memory through the **Cache** TOP. | ||
| + | |||
| + | Use the **Reorder** top in conjunction with **Cache** and **Cache select** to create some nice RGB trailing effects | ||
| + | |||
| + | ---- | ||
| + | |||
| + | === Working with instancing === | ||
| + | |||
| + | When working with instancing take care that the length match. For example if your SOP null has 40 points, then the CHOP you use on it should have 40 samples. | ||
| + | |||
| + | Instancing is done in the **Geometry** Comp under the tab of the same name. Reference another SOP in there and play around with the points. | ||
| + | |||
| + | |||