Skip to main content
Glama

Create moving-head fixture control + 3D previz

create_fixture_control

Build a moving-head lighting rig with DMX/Art-Net output and a 3D previsualization. Fixtures include pan/tilt control and a beam preview that updates automatically from DMX channels.

Instructions

Build a moving-head lighting rig with BOTH a DMX/Art-Net output chain AND a 3D visual previsualization. For each fixture: a Constant CHOP holds an 8-channel movingHead8 block (pan, tilt, dimmer, r, g, b, strobe, gobo, prefixed '/…'), padded and merged into a dmxoutCHOP (interface, universe, netaddress, rate); and a Geometry COMP 'head' with a tube-cone beam whose pan→ry and tilt→rx rotation is expression-driven straight from that fixture's DMX pan/tilt channels (0-255 mapped across pan_range/tilt_range degrees), all rendered under one camera+light Render TOP. This adds the live 3D preview on top of what create_dmx_fixture_pipeline (DMX-out only) does. Bind individual channels later with bind_to_channel / animate_parameter on op('rig_out')['fix1/pan']; the previz updates automatically.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fpsNoDMX refresh rate (dmxoutCHOP `rate`).
netNoNetwork protocol — written to the dmxoutCHOP `interface` par.artnet
hostNoTarget IP for Art-Net / sACN (dmxoutCHOP `netaddress`). Null = leave default.
nameNoBase name for the container COMP.fixture_rig
fixturesYesMoving-head fixtures. Each becomes a DMX movingHead8 block + a 3D previz head+beam.
universeNoDMX universe written to the dmxoutCHOP.
pan_rangeNoPhysical pan sweep in degrees the fixture spans across DMX 0-255 (previz rotation).
beam_angleNoHalf-angle of the previz beam cone (degrees) — narrow = spot, wide = wash.
tilt_rangeNoPhysical tilt sweep in degrees the fixture spans across DMX 0-255 (previz rotation).
beam_lengthNoLength of the previz beam cone from the head (metres).
parent_pathNoCOMP to create the fixture rig container in (default '/project1')./project1
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes far beyond the annotations by detailing the internal structure created: a Constant CHOP, dmxoutCHOP, Geometry COMP with a tube-cone beam, and a Render TOP. It explains the expression-driven rotation mapping (pan→ry, tilt→rx) and how DMX values map to degrees. These specifics align with readOnlyHint=false (write operation) and openWorldHint=true (creates multiple nodes) without any contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-structured: it is front-loaded with the main purpose, then details the per-fixture construction, then closes with a comparison to the sibling and a usage example. Every sentence adds operational detail, though it is a single long paragraph that could benefit from light segmentation for readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter tool with nested fixture objects, the description provides a comprehensive mental model of the resulting network, including the dmxoutCHOP and previz components. It gives a concrete usage example (op('rig_out')['fix1/pan']) that helps agents understand how to interact with the outputs. The main gap is not explicitly stating what the function returns (e.g., the path to the created rig), but given the openWorldHint and detailed creation steps, this is a minor omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3. The description adds value by showing how parameters connect to implementation, e.g., 'padded and merged into a dmxoutCHOP (interface, universe, netaddress, rate)' corresponds to net/universe/host/fps, and '0-255 mapped across pan_range/tilt_range degrees' directly references pan_range and tilt_range. It also references the 'id' field via '<id>/…', adding relational context beyond individual parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Build a moving-head lighting rig with BOTH a DMX/Art-Net output chain AND a 3D visual previsualization,' clearly stating the verb and resource. It also explicitly differentiates from the sibling create_dmx_fixture_pipeline by noting it adds 'the live 3D preview on top of what create_dmx_fixture_pipeline (DMX-out only) does,' making the tool's unique role unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly references create_dmx_fixture_pipeline as the DMX-only alternative, telling users when to choose this tool (when 3D previz is needed). It also provides post-creation guidance: 'Bind individual channels later with bind_to_channel / animate_parameter on op('rig_out')['fix1/pan']', showing how to use the created rig. This combines an explicit alternative with concrete usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lucasmaher-hash/touch-designer-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server