Create strange attractor
create_strange_attractorGenerate a 3D strange attractor in TouchDesigner by integrating Lorenz, Aizawa, or Halvorsen ODE systems, with configurable parameters and an automatic render pipeline.
Instructions
Build a strange-attractor deferred geometry generator: a Script CHOP integrates a chosen ODE system (Lorenz / Aizawa / Halvorsen) with configurable sub-steps and maintains a rolling ring buffer of trail_length points. A Script SOP converts the channels into one open polyline; an optional Tube SOP thickens it for shaded render inside a Geometry COMP + Camera + Light + Render TOP pipeline. Closing Roadmap Milestone 4. Complements create_growth_system (L-systems) and create_particle_flock (boids) as the deterministic CPU-geometry idiom. With TD timeline paused the integrator pauses too (time-dependent) — resume playback to continue. Returns a summary plus a JSON block with the container path, output path, exposed controls, errors, warnings, and an inline preview.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "create_strange_attractor"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| dt | No | Integrator time step. Smaller = smoother but slower trajectory. | |
| name | No | Container baseCOMP name. | strange_attractor |
| seed | No | Initial state [x, y, z]. A tiny non-zero offset avoids the Lorenz fixed-point stall at the origin. | |
| color | No | Constant MAT colour (RGB, 0..1). | |
| params | No | Override ODE constants. Lorenz: sigma, rho, beta. Aizawa: a, b, c, d, e, f. Halvorsen: a. Unknown keys are ignored. | |
| parent | No | Parent network where the container is created. | /project1 |
| bg_color | No | Render TOP background colour (RGB, 0..1). | |
| attractor | No | ODE system to integrate: lorenz (classic butterfly), aizawa, or halvorsen. | lorenz |
| thickness | No | Tube SOP radius. Set to 0 to render the raw polyline (no Tube SOP — lighter on GPU). | |
| auto_frame | No | Auto-position camera based on attractor bounding radius (deterministic; no live bound query). | |
| trail_length | No | Points retained in the rolling ring buffer. Higher = longer ribbon, costlier SOP cook. | |
| expose_controls | No | Expose StepsPerFrame / Dt / TrailLength / Thickness as custom parameters on the container. | |
| steps_per_frame | No | RK-style integration sub-steps per cook frame (controls speed and smoothness). |