touchdesigner-bridge-mcp

Un servidor MCP solo de datos que controla TouchDesigner con integración de Claude Desktop.

Documentación

touchdesigner-bridge-mcp

Impulsa TouchDesigner desde un chat de IA: una superficie de control solo-datos, priorizando la seguridad, para crear contenido de proyección mapping, sin ruta de código arbitrario.

Un servidor MCP (Model Context Protocol) nativo de Windows que permite a un cliente de chat de IA construir redes de operadores de TouchDesigner, a través de un catálogo fijo de herramientas tipadas y validadas por esquema, sin ruta estilo execute_python. El asistente ensambla y ajusta el grafo de operadores (TOPs, CHOPs, SOPs, COMPs, MATs, DATs, POPs) que produce video mapeado para una superficie física; — el humano en la máquina — disparas los cooks y renders y decides cuándo el puente está armado. Está construido para un solo trabajo: contenido de proyección mapping en superficies exteriores de edificios, desde renders de fachadas 3D y efectos de textura generativa hasta coreografía por secciones, keystone/edge-blend de proyectores, control DMX/show, y la entrega solo-cable a un servidor de medios (Pixera / disguise). Un binario se ejecuta junto a TouchDesigner y tu cliente de IA; eso, más una línea pegada en TouchDesigner, es toda la instalación.

Estado: v0.1.0 — un gateway MCP en Rust más un ejecutor Python dentro de TouchDesigner, modelado sobre el puente Houdini del autor. Objetivo: una instalación licenciada de TouchDesigner, build 2023.11k+ o 2025.30k+. El pipeline es AMD-primero — los operadores exclusivos de NVIDIA/CUDA están intencionalmente fuera de alcance porque no pueden probarse en el hardware objetivo. Windows-primero.


Inicio rápido

¿Nuevo en esto / no eres programador? No necesitas vivir en una terminal. Para ponerte en marcha: compila (u obtén) un programa, haz clic en un par de botones en su ventana, lanza TouchDesigner y pega una pequeña línea en su Textport, luego pega un bloque JSON en tu cliente de IA. Ese es todo el trabajo. Los Pasos 1–5 numerados a continuación detallan cada parte.

Lo que necesitarás a mano: un TouchDesigner licenciado (2023.11k+ o 2025.30k+), una PC con Windows, y un cliente de IA que hable MCP (Claude Desktop, etc.). Una carpeta en tu disco se convierte en el directorio de trabajo que la IA puede leer y escribir — la eliges en el Paso 2.

Tres movimientos para una configuración funcional (detalle completo en Pasos 1–5):

  1. Obtén el gateway — el único programa que conecta tu IA a TouchDesigner. Ya sea descarga el touchdesigner-bridge-mcp.exe precompilado desde Releases (sin codificar), o compílalo desde el código fuente (cargo build --release --manifest-path gateway/Cargo.toml, necesita el toolchain de Rust). Es un solo archivo que es tanto una pequeña GUI como el servidor MCP headless.
  2. Configura y arma — ejecuta el gateway (abre una GUI), establece tu directorio de trabajo y haz clic en Aplicar, luego en TouchDesigner pega una línea de armado en el Textport (Alt+T) para armar el ejecutor.
  3. Conecta tu cliente de IA — pega un pequeño bloque JSON en su configuración apuntando al binario del gateway, reinicia completamente el cliente, luego ejecuta la verificación del Paso 5 para confirmar que la IA puede ver tu escena de TouchDesigner.

Ruta rápida: python scripts/setup.py compila el gateway e imprime tu configuración de Claude Desktop completada y tu comando de armado para Textport con rutas reales para esta máquina.


Por qué es diferente

La mayoría de los servidores MCP de TouchDesigner/Blender/Houdini controlan la aplicación enviando una herramienta estilo execute_python — ejecución de código arbitrario por diseño. Este es el inverso:

  • Solo-datos por construcción. El asistente solo puede llamar a un registro fijo de 544 herramientas tipadas y validadas. Deliberadamente no hay herramienta de código arbitrario, no hay ruta de script crudo, y no hay sumidero de código de forma libre — simplemente no existen en el catálogo, por lo que el límite no puede ser sorteado. El conjunto de cosas que el servidor puede hacer es la lista enumerada de herramientas. Un canario en tiempo de ejecución (assert_no_rce_endpoints) se niega a armarse si algún handler siquiera parece un endpoint de ejecución de código, y una valla en tiempo de compilación (catalog_never_exposes_rce_tools) falla la compilación si una herramienta que lleva código llega al catálogo.
  • Una herramienta de crear-y-configurar por operador. Cada tipo de operador de TouchDesigner tiene su propia herramienta tipada (ej. blurTOP, noiseCHOP, gridSOP) que crea el nodo y establece sus parámetros en una sola llamada. Los rangos se limitan, los parámetros de menú se fijan a su conjunto de tokens, y las rutas de archivo se confinan al directorio de trabajo antes de escribir nada. Solo valores — nunca expresiones o código.
  • Tú disparas el trabajo pesado. El puente construye y cablea grafos de render, grabación y envío de red; la salida es solo-cable por diseño — el op de exportación se deja con record/active apagados, y tú (o tu servidor de medios) lo disparas. El asistente nunca activa un render, un bake de archivo, o un envío en vivo por su cuenta.
  • Un solo directorio de trabajo. Cada lectura y escritura de archivo está confinada por realpath a una sola carpeta de proyecto que tú eliges. Nada fuera de ella es alcanzable, incluso a través de un symlink o junction.
  • Los carriles de código validados son la excepción, no una vía de escape. Las únicas rutas que admiten código son dos carriles estrechos, apagados por defecto, con consentimiento (un carril GLSL en sandbox de GPU y un carril experimental de expresiones de parámetros), cada uno validado antes de cualquier escritura y cada uno apagado a menos que un humano lo habilite explícitamente. La IA no puede habilitar su propio carril. Ver Seguridad.

Aprende TouchDesigner con una IA

TouchDesigner es profundo, y el momento de red en blanco es donde la mayoría se rinde. Este puente es una forma guiada y de bajo riesgo de realmente aprenderlo — describes lo que quieres, la IA lo construye en tu sesión en vivo, y observas cómo la red de operadores toma forma.

  • Las herramientas tipadas son el andamiaje de aprendizaje. Cada capacidad es una operación fija, tipada y validada, por lo que la IA solo puede alcanzar operadores reales de TouchDesigner — no puede salirse de lo que el software hace ni inventar un paso que no existe. La lista de herramientas refleja cómo está organizado TouchDesigner (las familias TOP/CHOP/SOP/COMP/MAT/DAT/POP), por lo que la superficie que limita a la IA también te enseña cómo está estructurada la aplicación.
  • Lo observas, no lo ejecutas a ciegas. Cada operación se transmite al registro de auditoría en vivo de la GUI del gateway, por lo que ves a la IA trabajar paso a paso en una sesión de TouchDesigner en ejecución — la red se construye frente a ti, nodo por nodo.
  • Los errores son visibles y baratos. La superficie tipada e inspeccionable hace que cualquier nodo incorrecto o parámetro mal juzgado sea fácil de ver, deshacer y corregir. Nada de lo que hace ejecuta código arbitrario ni toca archivos fuera de tu carpeta de proyecto, por lo que un mal paso es algo que detectas y del que aprendes, no un desastre.
  • La capa de recetas es un tutor integrado. recipe_reference lleva 66 recetas de flujos de trabajo mapeadas a herramientas con pasos ordenados, el hito que plantar en cada etapa, y la lectura barata para verificarlo — ejemplos trabajados de cómo se construye contenido real de fachadas, no una caja negra.
  • Aprende a escribir código, de forma segura. Cuando el arte necesita un shader de GPU o un parámetro autocomputado, la IA superficializa la oportunidad y la enseña — nunca recurre a código crudo por su cuenta. glsl_reference enseña shaders GLSL, expr_reference la superficie de expresiones de parámetros, y code_reference explica qué carril lleva qué y el apretón de manos de consentimiento. El código entra solo a través de un carril consentido y validado (set_glsl / set_expr, apagado por defecto) o tus propias manos — los pasos de receta marcan estos puntos con una señal glsl_opportunity / expr_opportunity.

Cobertura honesta — qué está en alcance, y qué no. Sin inflar:

  • Operadores: el catálogo expone 509 herramientas de operadores — una porción casi completa del conjunto de operadores de TouchDesigner en el equipo objetivo (TOP 106 / CHOP 137 / SOP 79 / COMP 30 / MAT 10 / DAT 51 / POP 96). Los operadores exclusivos de NVIDIA/CUDA están intencionalmente fuera de alcance (no probables en el objetivo AMD-primero).
  • Código: dos carriles validados — shaders GLSL (set_glsl) y expresiones de parámetros Python de una línea (set_expr) — vienen APAGADOS por defecto detrás de consentimiento explícito; las herramientas *_reference los enseñan y proponen texto. El Python de DAT/callback es solo entrega por pegado — propuesto y enseñado, nunca ejecutado por el puente.
  • Flujos de trabajo: 66 recetas mapeadas a herramientas en 10 dominios de proyección mapping. El carril central de fachadas (rig por secciones, video en superficies, coreografía, enmascarado, entrada en tiempo real, alineación, entrega de salida) está probado en vivo; varias recetas (blend multiproyector, y partes de los carriles generativo / nube de puntos / cámara) están construidas y verificadas mecánicamente pero aún no barridas exhaustivamente en vivo — marcadas aquí en lugar de sobredeclaradas.
  • Deliberadamente fuera de alcance: cualquier ruta de código arbitrario (no hay ninguna, por diseño), y dominios de TouchDesigner fuera de la creación de contenido de proyección mapping.

Qué puedes hacer con ello

Una vez que el gateway está en ejecución y TouchDesigner está armado, puedes decir cosas como estas directamente en tu cliente de chat de IA (las rutas son relativas al único directorio de trabajo que configuras):

  • "Renderiza este edificio .obj a través de una cámara ortográfica sobre un plate oscuro a 4K."
  • "Construye un campo generativo de ruido y retroalimentación y úsalo como contenido de fachada."
  • "Importa section_00.obj … section_07.obj y proyecta este clip en cada superficie de fachada."
  • "Anima un barrido de luz de abajo hacia arriba revelando cada sección a lo largo de la línea de tiempo."
  • "Carga esta nube de puntos de drone e instancia sprites en los puntos escaneados."
  • "Añade un keystone de 4 esquinas y cablea una salida de archivo HAP — yo presionaré grabar."
  • "Divide el compuesto final entre dos proyectores superpuestos con una costura difuminada."
  • "Controla fixtures Art-Net desde un CHOP en sincronía con la proyección (déjalo solo-cable)."
  • "Cablea una entrada OSC para impulsar la emisión por secciones en tiempo real."
  • "Configura un show de cues basado en temporizador con GO, looping y sincronización de timecode LTC."
  • "Distorsiona el compuesto para seguir una superficie curva con un remap de cuadrícula de control."
  • "¿Qué operadores hay en la escena ahora mismo, y cuánta memoria está usando TouchDesigner?"

Cómo funciona

  AI / MCP client  ──stdio──▶  touchdesigner-bridge-mcp  (one binary: GUI + headless MCP gateway)
                                        │  loopback HTTP  (127.0.0.1:9980, X-TDMCP-Token)
                                        ▼
                               a data-only executor armed inside your live TouchDesigner session

Dos procesos componen el puente, y se encuentran a través de un solo archivo, ~/.touchdesigner-bridge-mcp/arm.json:

  • El gateway (gateway/, un binario Rust) — el único punto de entrada de la IA y toda la instalación del lado del cliente. Es a la vez una pequeña GUI (establece el directorio de trabajo, observa un registro de auditoría en vivo de cada llamada) y el servidor MCP headless con el que tu cliente de IA habla a través de stdio. Cuál de los dos se convierte se elige al lanzarlo mediante la variable de entorno TDMCP_GW_HEADLESS. Posee el esquema tipado, la validación de entrada (clamp / enum / clave-requerida / confinamiento-de-ruta), y reduce cada herramienta de operador a un create_op + set_par genérico antes de retransmitirlo al ejecutor a través de HTTP en loopback. Este es el único punto de estrangulamiento de seguridad en la entrada.
  • El ejecutor (td_executor/, Python) — un pequeño registro de handlers solo-datos armado dentro de una sesión de TouchDesigner en ejecución mediante arm.py. Aplica solicitudes validadas al grafo de operadores en el hilo principal de TouchDesigner. Usa solo la biblioteca estándar de Python y el módulo td integrado de TouchDesigner — no se incluyen ni redistribuyen paquetes de terceros, nada que pip install.

Debido a que el gateway expone 509 herramientas de operadores tipadas pero reduce cada una a los mismos dos verbos del ejecutor (create_op + set_par), toda la superficie se canaliza a través de un guardián de parámetros validado. Ver ARCHITECTURE.md.


Requisitos

  1. TouchDesigner — una instalación con licencia, compilación 2023.11k+ o 2025.30k+. El ejecutor corre dentro del Python embebido propio de TouchDesigner.
  2. Un toolchain de Rust (estable) — solo si compilas la puerta de enlace tú mismo; omítelo si descargas el .exe precompilado desde Releases. rustup.rs proporciona cargo.
  3. Python 3.10+ — solo para ejecutar el helper opcional scripts/setup.py (y la suite de pruebas del ejecutor). El ejecutor en sí corre en el Python embebido de TouchDesigner, no en este.
  4. Un cliente MCP — Claude Desktop, o cualquier cliente que pueda lanzar un servidor MCP stdio.
  5. Windows — la plataforma principal. El pipeline objetivo es AMD-first; los operadores exclusivos de NVIDIA/CUDA están intencionalmente fuera de alcance.

Paso 1 — Obtén la puerta de enlace

¿Prefieres no programar? Descarga el touchdesigner-bridge-mcp.exe precompilado desde Releases y salta directamente al Paso 2 — es el mismo binario único que produce la compilación. ¿Prefieres compilar desde el código fuente (o no hay binario precompilado para tu configuración aún)? Compílalo desde el código fuente:

cargo build --release --manifest-path gateway/Cargo.toml
# or, from gateway/:
cargo build --release

Esto produce un archivo:

gateway/target/release/touchdesigner-bridge-mcp.exe      (Windows)

La puerta de enlace es tanto la GUI como el servidor MCP headless. El modo en que se ejecuta se selecciona al inicio mediante una variable de entorno, TDMCP_GW_HEADLESSsin definir abre la ventana de la GUI; 1 ejecuta el servidor stdio headless. (Normalmente no la configurarás a mano: hacer doble clic en el archivo abre la GUI, y el bloque de configuración del Paso 3 establece el indicador headless para tu cliente de IA.)

gateway/src/tools.rs se genera a partir de reference/catalog.json, nunca se edita a mano.


Paso 2 — Configura mediante la GUI

El directorio de trabajo es la única carpeta desde la que la herramienta puede leer y escribir — cada operación de archivo del ejecutor está confinada dentro de ella. Deliberadamente no es el árbol de código fuente.

Ejecuta el binario de la puerta de enlace sin argumentos para abrir la GUI, luego:

  1. Abre el panel Working dir, ingresa (o pega) una carpeta existente y haz clic en Apply. Esto actualiza la raíz de confinamiento en vivo para cada llamada futura y fusiona-escribe working_dir en ~/.touchdesigner-bridge-mcp/arm.json.
  2. Deja la GUI ejecutándose — su panel Status muestra una píldora "Armed" y la compilación en vivo de TouchDesigner una vez que el ejecutor (Paso 4) sea alcanzable, y su registro de auditoría en vivo te permite observar cada llamada.

Cambiar el directorio de trabajo más tarde es solo Apply de nuevo — sin reinicio, sin re-armado.

No se requiere paso de firewall. El Web Server DAT dentro de TouchDesigner se vincula a 127.0.0.1 solamente — nada escucha fuera de la máquina, por lo que no hay regla de entrada que agregar.


Paso 3 — Regístrate con tu cliente MCP

Apunta tu cliente (p. ej., Claude Desktop — edita %APPDATA%\Claude\claude_desktop_config.json) al binario de la puerta de enlace en modo headless. Copia la plantilla en claude_desktop_config.example.json y reemplaza ambos marcadores de posición con tu ruta de clonación (barras diagonales, incluso en Windows):

{
  "mcpServers": {
    "touchdesigner": {
      "command": "C:/path/to/touchdesigner-bridge-mcp/gateway/target/release/touchdesigner-bridge-mcp.exe",
      "env": {
        "TDMCP_GW_HEADLESS": "1",
        "TDMCP_REPO": "C:/path/to/touchdesigner-bridge-mcp"
      }
    }
  }
}

Ambas variables de entorno son esenciales:

  • TDMCP_GW_HEADLESS=1 — requerida, o el cliente abriría una ventana de GUI y el protocolo de enlace MCP nunca se completaría.
  • TDMCP_REPO — la ruta de clonación, para que la puerta de enlace encuentre sus datos de referencia incluidos (reference/recipes.json, reference/catalog.json) de manera determinista.

Cierra y vuelve a abrir completamente el cliente después de editar la configuración.


Paso 4 — Arma el ejecutor dentro de TouchDesigner

Abre TouchDesigner, abre el Textport (Alt+T) y pega el comando de armado, sustituyendo tu ruta de clonación:

import os; os.environ['TDMCP_REPO']=r'C:/path/to/touchdesigner-bridge-mcp'; exec(open(os.path.join(os.environ['TDMCP_REPO'],'arm.py')).read())

No tienes que escribirlo a mano — la GUI muestra esta línea exacta con un botón Copy arm command, y python scripts/setup.py también la imprime.

Lo que hace el armado (arm.py):

  • Verifica los archivos del ejecutor en disco contra td_executor/INTEGRITY.json antes de importarlos (evidencia de manipulación con cierre ante fallo).
  • Rechaza armar si algún manejador parece un endpoint de ejecución de código crudo (el canario de solo datos).
  • Genera un token de sesión CSPRNG de 128 bits y escribe token / port / working_dir (y conserva los indicadores de consentimiento) en arm.json.
  • Ensambla un componente /mcp_bridge — un Web Server DAT en loopback 127.0.0.1:9980 más un DAT de callbacks delgado que carga el paquete td_executor en disco — y agrega interruptores de consentimiento en la GUI (Allow Expr Lane / Allow GLSL Lane) que persisten en arm.json.

Re-arma en cualquier momento para recargar en caliente las ediciones del ejecutor en disco (primero purga la caché de módulos). Elimina el puente con op('/mcp_bridge').destroy(). Para hacer que el armado sea persistente por proyecto, consulta td_package/README.md.


Paso 5 — Verifica tu configuración

  1. Salud del ejecutor — con TouchDesigner armado, abre en un navegador o curl:

    http://127.0.0.1:9980/health
    

    El panel Status de la GUI también muestra la píldora "Armed" y la compilación en vivo de TouchDesigner una vez que el ejecutor sea alcanzable.

  2. Las herramientas aparecen en el cliente — en un nuevo chat del cliente, pide al asistente que ejecute scene_info. Una respuesta exitosa (la escena actual, la compilación de TouchDesigner) confirma que todo el camino está en vivo: cliente → puerta de enlace → loopback → ejecutor → TouchDesigner.

Si ambos responden, estás conectado. Consulta docs/INSTALL.md para el recorrido completo, incluida la habilitación de los carriles de código y la resolución de problemas.


Herramientas disponibles

544 herramientas en total509 herramientas de operadores en 7 familias de TouchDesigner más 35 herramientas de utilidad, listadas en su totalidad a continuación (también en docs/TOOL_CATALOG.md). Cada herramienta es un manejador validado; no existe una ruta de código de forma libre. Para el esquema completo de parámetros tipados de cualquier operador, pregunta a la herramienta operator_reference en vivo durante la sesión (optype=<name>).

Cada herramienta de operador crea y configura un tipo de operador en una sola llamada, y también acepta cuatro argumentos de colocación reservados: op_name, parent_path (predeterminado /), pos_x, pos_y. Las tablas a continuación son el catálogo actual exacto, generado a partir de reference/catalog.json.

TOP — imagen / textura (raster GPU) (106)

HerramientaParámetrosDescripción
addTOP26Compone dos imágenes de entrada sumando sus valores de píxel, saturando los canales que se desbordan; una mezcla aditiva simple que se usa a menudo para aclarar o combinar pases de luz.
analyzeTOP19Reduce una imagen a un solo valor, fila o columna tomando una estadística como mínimo, máximo o promedio entre los píxeles.
antialiasTOP21Suaviza los bordes irregulares y escalonados de una imagen con un filtro de antialiasing posterior al proceso.
blobtrackTOP37Detecta manchas brillantes en una imagen e informa sus posiciones y tamaños, un rastreador óptico ligero para instalaciones interactivas.
blurTOP23Aplica un desenfoque gaussiano o de caja; el parámetro de ancho del filtro establece cuántos píxeles se promedian juntos.
cacheTOP26Almacena un búfer móvil de fotogramas recientes en la GPU para que los fotogramas anteriores puedan reproducirse o muestrearse mediante un Cache Select.
cacheselectTOP16Lee un fotograma elegido del búfer almacenado de un Cache TOP por índice.
channelmixTOP19Reconstruye cada canal de salida como una mezcla ponderada de los canales de entrada, útil para intercambios de canales y matrices de color personalizadas.
choptoTOP19Convierte canales CHOP en una imagen, escribiendo valores de muestra en píxeles para que los datos numéricos puedan visualizarse o alimentar shaders.
chromakeyTOP29Recorta un color de fondo elegido (pantalla verde/azul) para producir un mate alfa para composición.
circleTOP42Dibuja un círculo o elipse relleno o delineado directamente como imagen.
compositeTOP34Superpone muchas entradas con una operación de mezcla seleccionable, el equivalente multi-entrada de los TOP Over/Add de dos entradas.
constantTOP23Genera una imagen plana de un solo color sólido y alfa en la resolución elegida.
convolveTOP20Filtra la imagen con un núcleo de convolución definido por el usuario proporcionado como una pequeña matriz, para efectos personalizados de nitidez/desenfoque/bordes.
cornerpinTOP36Deforma la imagen arrastrando sus cuatro esquinas a posiciones arbitrarias, el warp de keystone/quad estándar para alineación de proyección.
cropTOP23Extrae una subregión rectangular de la imagen, cambiando la salida a ese recorte.
crossTOP27Hace una disolución cruzada entre dos entradas mediante una única cantidad de mezcla.
cubemapTOP15Ensambla o reorganiza las seis caras de un cubemap para mapeo de entorno y reflejos.
depthTOP23Extrae el búfer de profundidad de un Render TOP para que la distancia de la escena pueda usarse para niebla, profundidad de campo o enmascaramiento.
differenceTOP26Genera la diferencia absoluta por píxel entre dos entradas, útil para detección de cambios.
directdisplayoutTOP20Envía la imagen a una pantalla conectada directamente, omitiendo el compositor del escritorio para salida de baja latencia.
directxinTOP15Recibe una textura GPU compartida de otra aplicación mediante superficies compartidas de DirectX.
directxoutTOP16Publica la imagen como una textura DirectX compartida para que otra aplicación la lea.
displaceTOP25Desplaza la posición de búsqueda de cada píxel usando una segunda imagen como mapa de desplazamiento, deformando la imagen.
edgeTOP25Detecta bordes midiendo el contraste local, produciendo una imagen de contorno.
embossTOP21Produce un aspecto de relieve elevado y en relieve sombreando a partir de gradientes de intensidad local.
feedbackTOP16Alimenta un resultado posterior de vuelta al gráfico un fotograma después, el bloque de construcción para estelas, acumulación y bucles de reacción-difusión.
fitTOP27Redimensiona y ajusta la entrada a la resolución de salida con un modo de ajuste/estiramiento elegido.
flipTOP18Voltea o refleja la imagen horizontal y/o verticalmente.
glslTOP59Ejecuta un shader de fragmentos GLSL personalizado sobre los píxeles de salida, con el código fuente del shader proporcionado a través de un Text DAT referenciado en lugar de un valor de código en línea.
glslmultiTOP59Un TOP de shader de fragmentos GLSL que expone múltiples entradas de imagen para efectos de múltiples texturas.
hsvadjustTOP24Desplaza el tono y escala la saturación y el valor, la corrección de color de referencia para tinte y viveza.
hsvtorgbTOP14Interpreta los canales de entrada como HSV y los convierte a RGB.
inTOP16La toma de entrada de un componente TOP, exponiendo una imagen externa dentro de la subred.
insideTOP26Mantiene la primera entrada solo donde el mate de la segunda entrada es opaco (composición fuente-dentro).
kinectazureTOP46Captura flujos de imagen de profundidad, color e infrarrojos de un sensor Azure Kinect.
layermixTOP34Mezcla capas apiladas con opacidad por capa y modos de mezcla.
layoutTOP36Coloca múltiples entradas en una sola imagen de cuadrícula, dimensionada por filas y columnas.
lensdistortTOP38Añade o elimina distorsión de lente de barril/cojín.
levelTOP45Ajusta brillo, contraste, gamma, niveles de negro/blanco y opacidad, el control de tono de trabajo pesado.
lookupTOP25Reasigna cada píxel a través de una tabla de búsqueda proporcionada como segunda imagen, impulsando gradaciones de color y mapeo de gradientes.
lumablurTOP21Desenfoca por una cantidad que varía con la luminancia local, de modo que las regiones brillantes u oscuras se extienden más.
lumalevelTOP32Ajusta niveles basados en luminancia, útil para aislar luces o sombras.
mathTOP37Realiza aritmética por píxel (suma, multiplicación, diferencia y más) entre entradas y constantes.
matteTOP16Aplica una entrada como el mate alfa de otra para recortar una forma.
mirrorTOP20Refleja la imagen sobre un eje elegido para construir simetría caleidoscópica.
monochromeTOP18Colapsa el color a un solo canal de escala de grises usando una ponderación de luminancia elegida.
moviefileinTOP63Carga y reproduce un archivo de película o imagen fija, con parámetros para la ruta del archivo, velocidad de reproducción y recorte.
moviefileoutTOP70Graba el flujo de imagen entrante en un archivo de película o secuencia de imágenes; este puente solo lo conecta, el usuario activa la grabación real.
multiplyTOP26Multiplica los valores de píxel de sus entradas, una mezcla de modulación/oscurecimiento.
ndiinTOP24Recibe video a través de la red como fuente NDI.
ndioutTOP26Publica la imagen en la red como flujo NDI.
noiseTOP41Genera imágenes de ruido procedural (Perlin, simplex y otros) con transformación y armónicos animables.
normalmapTOP20Deriva un mapa normal en espacio tangente de una imagen de altura o escala de grises para iluminación de detalle de superficie.
notchTOP29Reproduce y controla un bloque de efectos Notch (.dfxdll), exponiendo sus parámetros expuestos.
nullTOP14Un marcador de paso utilizado como punto de toma estable al final de una cadena de imágenes.
opencolorioTOP40Aplica una transformación de espacio de color OpenColorIO para flujos de trabajo con gestión de color.
opviewerTOP17Renderiza el visor de nodos de otro operador en una imagen para que cualquier operador pueda verse como un TOP.
orbbecTOP31Captura flujos de imagen de profundidad y color de una cámara de profundidad Orbbec.
orbbecselectTOP19Selecciona y extrae un flujo de imagen, como profundidad o color, de un TOP Orbbec.
outTOP17La toma de salida de un componente TOP, exportando una imagen fuera de la subred.
outsideTOP26Mantiene la primera entrada solo donde el mate de la segunda entrada es transparente (composición fuente-fuera).
overTOP26Compone la primera entrada sobre la segunda usando mezcla alfa-over estándar.
packTOP15Empaqueta datos de píxel en un diseño o formato de bits específico para transporte o lectura de GPU.
photoshopinTOP21Se vincula en vivo a un documento de Photoshop, trayendo sus capas como imagen.
pointfileinTOP56Carga datos de archivos de nube de puntos en una textura donde cada píxel codifica la posición o atributo de un punto.
pointtransformTOP61Transforma datos de puntos 3D almacenados en una textura, aplicando traslación, rotación, escala o una matriz de alineación a cada punto.
prefiltermapTOP15Pre-convoluciona un mapa de entorno en los niveles mip que un material PBR necesita para reflejos brillantes.
projectionTOP18Convierte entre diseños de proyección como equirectangular, cubemap y ojo de pez.
rampTOP32Genera gradientes lineales, radiales o circulares a partir de una rampa de color editable.
realsenseTOP40Captura flujos de imagen de profundidad, color e infrarrojos de una cámara de profundidad Intel RealSense.
rectangleTOP39Dibuja un rectángulo relleno o delineado con tamaño, posición y redondeo de esquinas ajustables.
remapTOP24Deforma la primera entrada buscando coordenadas almacenadas en los píxeles de una segunda entrada.
renderTOP67Renderiza geometría 3D desde una cámara con luces y materiales en una imagen, el corazón del carril 3D a 2D.
renderpassTOP56Añade un pase de render extra (como una capa o búfer separado) a un Render TOP.
renderselectTOP20Selecciona un búfer o pase de salida de un Render TOP de múltiples salidas.
rendersimpleTOP31Un render de un solo nodo que agrupa cámara, luz y geometría para vistas previas 3D rápidas.
renderstreaminTOP18Recibe fotogramas de un host disguise RenderStream, trayendo una imagen renderizada externamente a través de la red.
renderstreamoutTOP19Envía la imagen a un host disguise RenderStream como flujo de salida renderizado.
reorderTOP22Reorganiza, duplica o rellena los canales RGBA de las entradas.
resolutionTOP15Remuestrea la imagen a una nueva resolución usando un filtro elegido.
scalabledisplayTOP20Aplica una calibración de warp-and-blend de Scalable Display Technologies para configuraciones de múltiples proyectores.
screenTOP26Compone dos entradas con el modo de mezcla Screen para un efecto de aclarado.
screengrabTOP27Captura el escritorio o una región de pantalla en una imagen.
sharedmeminTOP18Lee una imagen de un bloque de memoria compartida escrito por otro proceso.
sharedmemoutTOP20Escribe la imagen en un bloque de memoria compartida para que otro proceso la lea.
slopeTOP24Calcula el gradiente local (pendiente) de la imagen, a menudo un precursor de mapas normales o sombreado de bordes.
spectrumTOP18Transforma la imagen hacia y desde su espectro de frecuencia mediante FFT para filtrado en el dominio de la frecuencia.
st2110inTOP31Recibe video sin comprimir sobre IP siguiendo el estándar SMPTE ST 2110.
st2110outTOP47Transmite video sin comprimir sobre IP siguiendo el estándar SMPTE ST 2110.
substanceTOP19Renderiza un material procedural Substance (.sbsar), exponiendo sus parámetros publicados.
subtractTOP26Resta los píxeles de la segunda entrada de la primera.
switchTOP17Pasa una de varias entradas elegidas por un índice, para conmutación A/B y secuenciación.
syphonspoutinTOP16Recibe una textura GPU compartida mediante Syphon (macOS) o Spout (Windows).
syphonspoutoutTOP16Publica la imagen como textura GPU compartida mediante Syphon (macOS) o Spout (Windows).
textTOP78Renderiza texto en una imagen con control sobre fuente, tamaño, alineación y color.
tileTOP36Coloca en mosaico y repite la entrada a través de la salida, con conteos de repetición ajustables, desplazamiento, superposición y volteo para patrones sin costuras.
touchinTOP20Recibe una imagen de otra instancia de TouchDesigner a través de la red.
touchoutTOP20Envía la imagen a otra instancia de TouchDesigner a través de la red.
transformTOP30Traduce, rota, escala y coloca en mosaico la imagen dentro de su marco.
underTOP26Compone la segunda entrada sobre la primera (el reverso de Over).
videodeviceinTOP55Captura video en vivo de una cámara o tarjeta de captura.
videodeviceoutTOP35Envía la imagen a un dispositivo de video por hardware SDI/HDMI u otro.
videostreaminTOP31Recibe un flujo de video comprimido como RTSP, RTMP o SRT.
viosoTOP21Aplica una calibración de warp-and-blend de proyección VIOSO para la alineación de múltiples proyectores.
webrenderTOP34Renderiza una página web o URL en una imagen usando un navegador integrado.

CHOP — canales / señales / temporización (137)

HerramientaParámetrosDescripción
abletonlinkCHOP28Sincroniza tempo, fase y pulso con pares en la red mediante Ableton Link.
analyzeCHOP14Reduce canales a una única estadística por canal, como promedio, máximo o longitud.
angleCHOP13Convierte entre representaciones de ángulo, por ejemplo grados, radianes, cuaterniones y vectores de dirección.
attributeCHOP11Etiqueta canales con atributos como orden de rotación o tipo de cuaternión que los operadores posteriores respetan.
audiobandeqCHOP26Un ecualizador gráfico multibanda que realza o corta bandas de frecuencia fijas de una señal de audio.
audiobinauralCHOP14Espacializa audio en una mezcla binaural (3D para auriculares) a partir de posiciones de fuente y oyente.
audiodeviceinCHOP40Captura muestras de audio de un dispositivo de entrada, como un micrófono o una interfaz.
audiodeviceoutCHOP41Reproduce canales como audio hacia un dispositivo de salida.
audiodynamicsCHOP25Aplica dinámicas de compresión, limitación y puerta a una señal de audio.
audiofileinCHOP31Lee muestras de audio de un archivo para reproducción o análisis.
audiofileoutCHOP18Escribe canales de audio en un archivo de sonido.
audiofilterCHOP16Filtra una señal de audio con respuesta de paso bajo, paso alto, paso banda o rechazo de banda y una frecuencia de corte ajustable.
audiomovieCHOP19Extrae la pista de audio que acompaña a una película reproducida por un TOP Movie File In.
audiondiCHOP11Envía o recibe audio integrado en una transmisión NDI.
audiooscillatorCHOP20Genera tonos y formas de onda a frecuencia de audio a partir de una entrada de frecuencia.
audioparaeqCHOP26Un ecualizador paramétrico con frecuencia central, ganancia y Q ajustables por banda.
audioplayCHOP37Reproduce un archivo de sonido bajo demanda, a menudo activado por un evento.
audiorenderCHOP48Renderiza una escena de audio espacial a partir de fuentes de sonido y un oyente en canales de salida.
audiospectrumCHOP15Calcula el espectro de frecuencia de una señal de audio mediante FFT para visualización o reactividad.
audiostreaminCHOP21Recibe audio transmitido desde la red.
audiostreamoutCHOP16Transmite canales de audio hacia la red.
audiovstCHOP27Aloja un complemento de audio VST y expone sus parámetros.
audiowebrenderCHOP11Captura el audio producido por un TOP Web Render.
beatCHOP34Ejecuta un reloj musical bloqueado a un tempo, emitiendo rampas de pulso, conteos y disparadores de pulso.
blacktraxCHOP22Recibe datos de posición y orientación en tiempo real de un sistema de seguimiento BlackTrax.
blendCHOP12Mezcla múltiples conjuntos de canales de entrada usando canales de ponderación, para mezcla de poses o valores ponderados.
blobtrackCHOP25Reporta posiciones y tamaños de blobs rastreados como canales.
clipCHOP24Reproduce clips de canales grabados con control sobre velocidad y rango.
clipblenderCHOP38Mezcla y secuencia clips de animación en un flujo de movimiento continuo.
clockCHOP36Emite componentes de tiempo de reloj de pared, como horas, minutos, segundos y fotograma.
compositeCHOP27Superpone y combina canales de múltiples entradas, alineándolos en el tiempo.
constantCHOP22Produce canales que mantienen valores constantes que escribes.
copyCHOP17Repite o copia los canales de la primera entrada una vez por muestra de una segunda entrada.
countCHOP25Cuenta cruces de umbral o disparadores en su entrada y emite el total acumulado.
crossCHOP10Hace una transición cruzada entre dos conjuntos de canales según una cantidad de mezcla.
cycleCHOP20Repite un canal un número de veces, opcionalmente fusionando las costuras en un bucle sin fisuras.
dattoCHOP31Lee una tabla DAT y convierte sus filas o columnas en canales.
delayCHOP12Retrasa canales por un desplazamiento de tiempo fijo.
deleteCHOP32Elimina canales seleccionados o recorta muestras por patrón de nombre o rango.
dmxinCHOP31Recibe datos de control de iluminación (DMX sobre Art-Net o sACN) como canales.
dmxoutCHOP34Envía canales como datos de control de iluminación DMX.
envelopeCHOP17Sigue la envolvente de amplitud móvil (pico o RMS) de una señal.
eventCHOP33Convierte eventos discretos en canales con duraciones y formas.
expressionCHOP13Aplica una expresión matemática por canal; ten en cuenta que el valor de expresión que lleva código se omite de esta superficie solo de datos, dejando su alcance y parámetros de nombres.
extendCHOP12Establece cómo se comporta cada canal antes de su primera y después de su última muestra (mantener, ciclo, espejo o predeterminado).
fanCHOP14Expande un solo canal a muchos, o combina muchos canales en uno, por índice.
feedbackCHOP12Alimenta su propia salida anterior de vuelta para procesamiento recursivo de canales con retraso de fotograma.
fileinCHOP20Lee datos de canales de un archivo o URL.
fileoutCHOP12Añade o escribe canales en un archivo.
filterCHOP26Suaviza canales con paso bajo a lo largo del tiempo para eliminar vibraciones, con un ancho de filtro ajustable.
freedinCHOP15Recibe datos de seguimiento de cámara mediante el protocolo FreeD como canales de paneo, inclinación, zoom y posición.
functionCHOP19Aplica una función matemática (trigonométrica, logarítmica, potencia, etc.) a cada canal.
gestureCHOP21Graba un movimiento y lo reproduce como un canal de gesto reutilizable.
handleCHOP15Resuelve cinemática inversa basada en manijas para rigs de personajes.
hogCHOP13Consume deliberadamente tiempo de cocción para perfilar y probar el rendimiento bajo estrés.
hokuyoCHOP19Lee muestras de distancia de un escáner láser de rango Hokuyo.
holdCHOP12Muestrea la primera entrada y mantiene ese valor cada vez que se dispara una segunda entrada de activación.
inCHOP14La toma de entrada de un componente CHOP.
infoCHOP16Expone la información numérica de otro operador (tiempo de cocción, conteos de muestras y estado) como canales.
interpolateCHOP12Interpola suavemente entre conjuntos de canales de entrada sucesivos o fotogramas clave.
inversecurveCHOP17Resuelve una curva de cinemática inversa para un curvado de cadena suave.
inversekinCHOP17Resuelve cinemática inversa de dos huesos desde una posición objetivo.
joinCHOP27Une canales de extremo a extremo en el tiempo para construir una secuencia más larga.
joystickCHOP31Lee ejes y botones de un joystick o controlador de juego.
keyboardinCHOP18Reporta el estado presionado de teclas del teclado como canales.
keyframeCHOP14Mantiene una animación de fotogramas clave editable y la evalúa en canales.
kinectazureCHOP23Rastrea articulaciones corporales esqueléticas de un sensor Azure Kinect, emitiendo canales de posición y orientación por articulación.
lagCHOP22Añade inercia, retraso y límites de velocidad de cambio para que los canales se aproximen suavemente a nuevos valores.
laserCHOP42Prepara datos de trayectoria para salida de proyección láser.
laserdeviceCHOP23Controla un DAC de proyector láser con canales láser preparados.
leuzerod4CHOP25Lee datos de distancia de un escáner láser Leuze ROD4.
lfoCHOP20Un oscilador de baja frecuencia que genera ondas seno, rampa, cuadrada y pulso para animación.
limitCHOP24Limita los valores de canal a un rango y opcionalmente los cuantiza a un paso.
logicCHOP16Realiza lógica booleana y comparaciones entre canales, emitiendo resultados de encendido/apagado.
lookupCHOP17Usa la primera entrada como índice en la tabla de búsqueda de la segunda entrada.
ltcinCHOP16Decodifica código de tiempo lineal SMPTE de audio en canales de tiempo.
ltcoutCHOP29Codifica canales de tiempo como audio de código de tiempo lineal SMPTE.
mathCHOP22Realiza aritmética y reasignación de rango en canales (sumar, multiplicar, rangos desde/hasta).
mergeCHOP11Combina los canales de varias entradas en una sola salida.
midiinCHOP64Trae notas MIDI y controladores como canales.
midiinmapCHOP19Mapea mensajes MIDI entrantes a canales nombrados mediante una tabla de mapeo.
midioutCHOP32Envía canales como notas MIDI y controladores.
mosysCHOP16Recibe datos de seguimiento de cámara de un sistema Mo-Sys como canales de posición, orientación y lente.
mouseinCHOP24Reporta la posición del mouse y el estado de los botones como canales.
mouseoutCHOP15Controla la posición del mouse del sistema desde canales.
ncamCHOP17Recibe datos de seguimiento de cámara de un sistema Ncam como canales de posición, orientación y lente.
noiseCHOP41Genera canales de ruido procedural coherente a lo largo del tiempo.
nullCHOP13Una toma de paso directo, el punto final estable recomendado para exportaciones y referencias.
objectCHOP42Emite la transformación o relación (posición, rotación, distancia) entre dos objetos 3D.
optitrackinCHOP19Recibe datos de cuerpo rígido y marcadores de un sistema de captura de movimiento OptiTrack.
oscinCHOP27Recibe mensajes OSC y mapea sus valores a canales.
oscoutCHOP22Envía valores de canal como mensajes OSC.
outCHOP12La toma de salida de un componente CHOP.
overrideCHOP13Deja pasar la entrada que cambió más recientemente, permitiendo que varios controladores compartan una salida.
panelCHOP14Expone los valores de interacción de un componente de panel (estado, clic, rollover) como canales.
pangolinCHOP20Controla el software láser Pangolin desde canales.
pantiltCHOP15Calcula ángulos de paneo e inclinación para apuntar un dispositivo a un objetivo.
parameterCHOP18Lee los valores evaluados de los parámetros de un operador en canales.
patternCHOP32Genera un patrón con forma a través de muestras (rampa, gaussiana, seno y más).
performCHOP36Expone estadísticas de rendimiento en tiempo real, como tiempo de fotograma y conteos de cocción, como canales.
phaserCHOP13Produce una señal de animación con desplazamiento de fase, cambiando la fase del canal a lo largo del tiempo.
pipeinCHOP25Recibe canales a través de una tubería TCP desde otro proceso.
pipeoutCHOP21Envía canales a través de una tubería TCP a otro proceso; su parámetro que lleva script se omite de esta superficie solo de datos.
poptoCHOP25Lee atributos de puntos POP en canales.
posistagenetCHOP19Recibe posiciones de seguimiento de escenario PosiStageNet como canales.
pulseCHOP33Emite picos de pulso a un intervalo o conteo establecido.
recordCHOP16Graba canales entrantes en un búfer que se puede reproducir.
renameCHOP9Renombra canales usando patrones de nombre desde/hasta.
renderpickCHOP48Selecciona geometría 3D bajo coordenadas dadas en un render y devuelve la posición del impacto e información como canales.
renderstreaminCHOP18Recibe datos de control de una sesión RenderStream de disguise.
reorderCHOP18Reordena los canales dentro de la transmisión.
replaceCHOP11Reemplaza canales en la primera entrada con canales de nombre coincidente de la segunda.
resampleCHOP22Remuestrea canales a una nueva tasa de muestreo o rango de tiempo.
selectCHOP16Referencia canales por nombre desde otro CHOP en cualquier parte del proyecto.
serialCHOP17Lee y escribe un dispositivo serial (RS-232/USB) como canales.
shiftCHOP17Desplaza un canal hacia adelante o hacia atrás en el tiempo.
shuffleCHOP12Reforma la disposición entre canales y muestras (operaciones similares a transposición).
soptoCHOP24Lee atributos de puntos o primitivas SOP en canales.
sortCHOP16Ordena canales o sus muestras por valor o nombre.
speedCHOP22Integra un canal de velocidad en posición, o escala el flujo del tiempo.
st2110deviceCHOP31Expone datos de audio y auxiliares de un dispositivo de video IP ST 2110 como canales.
stretchCHOP18Estira o comprime canales a una nueva longitud mientras preserva su forma.
stypeinCHOP16Recibe datos de seguimiento de cámara de un sistema Stype como canales de posición, orientación y lente.
switchCHOP12Selecciona una de varias entradas por índice.
syncinCHOP16Recibe sincronización de temporización de un CHOP Sync Out a través de la red para mantener múltiples máquinas bloqueadas por fotograma.
syncoutCHOP20Coordina la sincronización de fotogramas entre múltiples máquinas.
tabletCHOP40Lee presión, inclinación y posición del lápiz de una tableta gráfica.
timecodeCHOP40Representa un valor de código de tiempo como canales de hora/minuto/segundo/fotograma.
timelineCHOP25Genera la posición actual de la línea de tiempo en fotogramas y segundos.
timerCHOP73Un temporizador programable con segmentos, ciclos y pulsos de finalización para secuenciación.
toptoCHOP39Muestrea píxeles de un TOP en canales.
touchinCHOP23Recibe canales de otra instancia de TouchDesigner a través de la red.
touchoutCHOP18Envía canales a otra instancia de TouchDesigner a través de la red.
trailCHOP19Muestra un gráfico de historial de desplazamiento de sus canales de entrada para monitoreo.
triggerCHOP46Genera una envolvente de ataque-decaída-sostenimiento-liberación cada vez que la entrada cruza un umbral.
trimCHOP16Recorta canales a un tiempo de inicio y fin.
waveCHOP30Genera formas de onda periódicas definidas por forma y período; su parámetro que lleva expresiones se omite de esta superficie solo de datos.

SOP — geometría (superficies) (79)

HerramientaParámetrosDescripción
addSOP17Crea puntos y polígonos individuales, o conecta puntos existentes en nuevas primitivas.
alembicSOP11Carga geometría desde un archivo de caché Alembic (.abc).
alignSOP17Alinea geometrías de entrada entre sí mediante caja delimitadora o transformación.
armSOP34Construye o edita un brazo/cadena articulada de geometría.
attributeSOP13Crea, renombra, elimina o edita atributos de puntos, vértices, primitivas y detalles.
attributecreateSOP4Añade nuevos atributos a la geometría e inicializa sus valores.
basisSOP30Edita la base paramétrica (vector de nudos y orden) de curvas y superficies NURBS.
blendSOP9Mezcla posiciones de puntos entre entradas topológicamente coincidentes por peso, para interpolación de formas.
bonegroupSOP3Crea grupos de puntos basados en regiones de captura de huesos esqueléticos.
booleanSOP6Calcula unión, intersección o diferencia booleana entre mallas sólidas.
boxSOP18Genera una caja o cubo con tamaño y divisiones ajustables.
bridgeSOP15Construye una superficie de piel que conecta bucles de bordes o perfiles.
cacheSOP9Mantiene un buffer de fotogramas de geometría en memoria para reproducción.
capSOP16Tapa los extremos abiertos de tubos y superficies con caras planas o redondeadas.
captureSOP9Asigna pesos de captura que vinculan puntos de geometría a un esqueleto para skinning.
captureregionSOP9Define la región de influencia de captura de un hueso.
carveSOP20Corta, rebanada o extrae porciones de curvas y superficies a lo largo de sus coordenadas paramétricas.
choptoSOP10Crea o impulsa geometría desde canales CHOP, por ejemplo animando puntos a partir de datos de canal.
circleSOP16Genera un círculo o arco como curva o polígono.
claySOP24Deforma una superficie empujando y tirando de sus puntos de control como arcilla de modelado.
clipSOP8Recorta geometría contra un plano, manteniendo un lado o dividiendo en el corte.
convertSOP17Convierte geometría entre tipos como polígono, malla, NURBS y Bezier.
copySOP35Copia geometría sobre puntos de plantilla o con una pila de transformaciones, el SOP central de instanciación/estampado.
creepSOP5Desliza y deforma geometría para que se arrastre a lo largo de la superficie de otra.
curveclaySOP13Esculpe curvas tirando de sus puntos de control.
curvesectSOP11Encuentra intersecciones entre curvas y superficies, generando los puntos de cruce.
dattoSOP15Construye geometría (puntos y primitivas) a partir de las filas de una tabla DAT.
deformSOP6Deforma geometría capturada para que siga su esqueleto (el paso de deformación por skinning).
deleteSOP21Elimina puntos o primitivas seleccionados por grupo, número o volumen delimitador; su expresión de filtro por elemento se omite en esta superficie solo de datos.
divideSOP14Subdivide, triangula o divide en ladrillos polígonos para cambiar su teselación.
extrudeSOP21Extruye caras o bordes para añadir profundidad y biselado.
facetSOP14Controla normales y facetado, unificando puntos y afilando bordes para sombreado plano o suave.
fileinSOP5Carga geometría desde un archivo como OBJ.
filletSOP16Crea superficies o curvas de filete redondeadas entre dos entradas.
fitSOP17Ajusta una curva o superficie NURBS a través de un conjunto de puntos.
forceSOP8Define un campo de fuerza al que responden sistemas de partículas y metaballs.
fractalSOP9Desplaza puntos con ruido fractal para rugosizar una superficie.
gridSOP18Genera una cuadrícula plana de puntos o polígonos con filas y columnas ajustables.
groupSOP46Crea grupos de puntos o primitivas con nombre por patrón, número o región delimitadora; su expresión de filtro por elemento se omite en esta superficie solo de datos.
holeSOP6Convierte caras encerradas en agujeros dentro de su cara circundante.
inSOP3La toma de entrada de un componente SOP.
inversecurveSOP2Calcula una solución de curva inversa para geometría encadenada.
isosurfaceSOP6Construye una superficie en un valor constante de una función 3D implícita.
joinSOP12Une múltiples curvas o superficies en primitivas continuas únicas.
jointSOP12Crea un esqueleto de articulaciones y huesos para rigging.
latticeSOP6Deforma geometría moviendo los puntos de una jaula de lattice circundante.
limitSOP39Coloca geometría (esferas, cajas o plantillas) en puntos de datos o límites de valores.
lineSOP5Crea una polilínea recta entre extremos con un número elegido de puntos.
linethickSOP9Da grosor a polilíneas, convirtiéndolas en cintas o tubos.
lodSOP9Cambia entre versiones de nivel de detalle de geometría según la distancia de visualización.
lsystemSOP35Cultiva plantas procedimentales y fractales a partir de un conjunto de reglas L-system.
magnetSOP13Deforma geometría dentro de una región de caída usando un imán con forma de metaball.
materialSOP2Asigna un material a primitivas de geometría.
mergeSOP2Fusiona varias geometrías en una.
metaballSOP9Crea metaballs que se mezclan en superficies suaves y abultadas.
modelSOP1Mantiene geometría de modelo editable a mano.
noiseSOP20Desplaza puntos con ruido coherente animado.
nullSOP1Una toma de paso, el punto final estable recomendado de una cadena de geometría.
objectmergeSOP3Trae geometría de otros SOPs por ruta, aplicando opcionalmente sus transformaciones de objeto.
outSOP4La toma de salida de un componente SOP.
particleSOP39Un sistema de partículas CPU heredado impulsado por fuerzas y colisiones.
pointSOP43Edita posiciones y atributos de puntos directamente, incluyendo la creación de atributos estándar.
polyloftSOP13Lofta superficies poligonales a través de una serie de curvas de sección transversal.
polypatchSOP12Construye un parche spline suave a partir de una malla de control poligonal.
polyreduceSOP16Reduce el recuento de polígonos preservando la forma general.
polysplineSOP11Ajusta splines suaves a través de bordes de polígonos para redondearlos.
polystitchSOP7Cose juntas costuras y grietas entre superficies poligonales.
primitiveSOP34Edita atributos y transformaciones a nivel de primitiva.
profileSOP14Extrae y edita curvas de perfil que se encuentran en superficies.
projectSOP21Proyecta curvas sobre una superficie para crear curvas de perfil.
railsSOP16Barre curvas de sección transversal a lo largo de una o dos curvas guía.
raySOP16Proyecta puntos sobre una superficie objetivo a lo largo de una dirección de rayo, un shrink-wrap.
rectangleSOP16Crea una curva o polígono rectangular.
refineSOP18Refina curvas y superficies añadiendo puntos o elevando su orden sin cambiar la forma.
resampleSOP11Remuestrea curvas en puntos o segmentos espaciados uniformemente.
skinSOP12Construye una superficie de piel a través de un conjunto de curvas de perfil.
sphereSOP23Genera una esfera como polígonos, malla o NURBS.
textSOP30Crea geometría de texto 3D a partir de una fuente y una cadena.
transformSOP27Traslada, rota y escala geometría.

COMP — componentes / 3D / contenedores (30)

HerramientaParámetrosDescripción
actorCOMP153Un actor de cuerpo rígido o blando que participa en una simulación de física Bullet.
ambientlightCOMP86Añade luz ambiental uniforme a una escena 3D.
animationCOMP43Un componente que mantiene y edita canales de animación de fotogramas clave.
annotateCOMP55Una caja de comentarios redimensionable para anotar y organizar la red.
baseCOMP22Un contenedor de propósito general sin panel, usado para agrupar y modularizar operadores.
blendCOMP138Mezcla las transformaciones de varios componentes de objeto por peso, un padre ponderado.
boneCOMP140Un hueso individual dentro de una jerarquía esquelética para rigging de personajes.
bulletsolverCOMP137El solucionador de dinámica Bullet que avanza una simulación de física de cuerpos rígidos.
buttonCOMP132Un widget de panel de botón clicable que emite un valor de estado.
cameraCOMP84Una cámara 3D que define la vista y proyección usadas para renderizar una escena.
camerablendCOMP100Mezcla suavemente entre varias cámaras.
containerCOMP122Un contenedor de panel que organiza otros paneles para construir interfaces de usuario.
engineCOMP43Ejecuta un componente .tox exportado en un proceso separado vía TouchEngine para aislamiento y escalado.
environmentlightCOMP92Proporciona iluminación ambiental basada en imágenes para renderizado físicamente basado.
fbxCOMP161Importa una escena FBX, trayendo su geometría, materiales y jerarquía.
fieldCOMP136Un widget de campo de entrada de texto para entrada de usuario.
geometryCOMP124Coloca geometría SOP en la escena 3D con transformación, material y banderas de renderizado, el nodo de objeto que un Render TOP dibuja.
geotextCOMP163Renderiza texto 3D como geometría de escena.
handleCOMP134Un manipulador interactivo en el viewport 3D.
lightCOMP117Una fuente de luz 3D (puntual, cónica o distante) que ilumina una escena renderizada.
listCOMP130Un widget de panel de lista o cuadrícula scriptable para filas de elementos.
nullCOMP124Una transformación de objeto de paso utilizada como padre estable o toma en la jerarquía de objetos.
opviewerCOMP127Incrusta el visor de otro operador dentro de un panel.
parameterCOMP137Un componente que presenta parámetros personalizados como un panel de interfaz de usuario.
replicatorCOMP41Crea y mantiene una copia de un operador plantilla por fila de una tabla; su parámetro que lleva script se omite en esta superficie solo de datos.
sliderCOMP139Un widget de panel deslizante unidimensional o bidimensional.
textCOMP175Un widget de panel de visualización de texto.
timeCOMP33Define una línea de tiempo local independiente (velocidad de fotogramas y rango) para una subred.
usdCOMP158Importa una escena Universal Scene Description (USD).
windowCOMP53Define una ventana de salida o pantalla completa en un monitor elegido.

MAT — materiales / sombreado (10)

HerramientaParámetrosDescripción
constantMAT48Un material sin iluminación que sombrea superficies con un solo color plano y alfa.
depthMAT34Sombrea superficies por su profundidad para uso en pases de profundidad y efectos.
glslMAT78Un material totalmente personalizado impulsado por shaders GLSL de vértice y píxel, con el código fuente del shader suministrado a través de DATs referenciados.
inMAT36La toma de entrada de un componente de material.
lineMAT109Un material para renderizar líneas y wireframes con control de ancho y color.
nullMAT34Una toma de material de paso.
outMAT37La toma de salida de un componente de material.
pbrMAT185Un material físicamente basado que usa metalness, rugosidad y mapas de textura para iluminación realista.
phongMAT213Un material clásico sombreado Phong con difuso, especular y emisión; su parámetro de expresión de multi-textura GLSL se omite en esta superficie solo de datos.
pointspriteMAT55Renderiza puntos como sprites texturizados orientados a la cámara.

DAT — datos / tablas / referencias (51)

HerramientaParámetrosDescripción
artnetDAT9Recibe universos DMX Art-Net en una tabla.
audiodevicesDAT10Lista los dispositivos de entrada y salida de audio disponibles.
choptoDAT9Escribe canales CHOP en una tabla de muestras.
clipDAT13Almacena metadatos de clips en forma de tabla.
convertDAT9Convierte entre representaciones de tabla y texto como CSV, TSV y texto libre.
dmxmapDAT13Define un mapeo de canales DMX a ranuras nombradas.
errorDAT15Recopila los errores y advertencias reportados por los operadores en el proyecto.
etherdreamDAT8Controla un DAC láser Ether Dream.
evaluateDAT30Evalúa una expresión para cada celda de una tabla; sus parámetros que contienen expresiones se omiten de esta superficie solo de datos, dejando los controles sin código.
examineDAT21Inspecciona variables y objetos para depuración; su parámetro de expresión se omite de esta superficie solo de datos.
fifoDAT11Una tabla primero en entrar, primero en salir que descarta las filas más antiguas a medida que llegan nuevas.
fileinDAT9Lee texto o una tabla desde un archivo o URL.
fileoutDAT8Escribe el contenido de un DAT en un archivo.
folderDAT38Lista los archivos y carpetas de un directorio como una tabla.
inDAT7La toma de entrada de un componente DAT.
infoDAT8Reporta los metadatos e información de otro operador como una tabla.
insertDAT13Inserta filas o columnas en una tabla; su parámetro de expresión de reemplazo se omite de esta superficie solo de datos.
jsonDAT12Analiza JSON y extrae valores por ruta (el filtro JSONPath se mantiene como datos); su parámetro de expresión Python se omite de esta superficie solo de datos.
keyboardinDAT17Registra eventos de teclas en una tabla.
mediafileinfoDAT10Reporta metadatos (códec, resolución, duración) sobre un archivo multimedia.
mergeDAT10Fusiona tablas o texto de varias entradas, por filas o columnas.
midieventDAT21Registra eventos MIDI entrantes como filas de tabla.
midiinDAT22Registra mensajes MIDI entrantes en una tabla.
monitorsDAT9Lista los monitores conectados y sus propiedades.
mqttclientDAT21Un cliente MQTT que publica y se suscribe a temas.
multitouchinDAT23Reporta eventos de contacto multitáctil como una tabla.
ndiDAT8Lista las fuentes de video NDI disponibles en la red.
nullDAT5Una toma de paso para tablas.
opfindDAT65Busca en la red y lista operadores que coinciden con criterios de nombre, tipo o propiedad.
oscinDAT22Recibe mensajes OSC como filas de tabla.
oscoutDAT22Envía filas de tabla como mensajes OSC.
outDAT8La toma de salida de un componente DAT.
parameterDAT45Expone los parámetros de un operador como una tabla editable de nombres y valores.
performDAT22Reporta datos de rendimiento cuadro por cuadro como una tabla.
poptoDAT23Escribe atributos POP en una tabla.
renderpickDAT38Reporta resultados de selección 3D (geometría y posición de impacto) como una tabla.
reorderDAT11Reordena las filas o columnas de una tabla.
serialDAT20Lee y escribe texto en un dispositivo serie.
serialdevicesDAT9Lista los puertos serie disponibles.
socketioDAT15Un cliente Socket.IO para mensajería web en tiempo real.
soptoDAT10Escribe atributos SOP en una tabla.
tableDAT18Una cuadrícula estática y editable de celdas; sus parámetros de expresión de celda y relleno se omiten de esta superficie solo de datos.
tcpipDAT19Un cliente o servidor TCP/IP que intercambia mensajes de texto.
textDAT10Almacena texto de formato libre, a menudo usado para guardar código fuente de shaders o scripts referenciado por otros operadores.
udpinDAT19Recibe datagramas UDP como filas de tabla.
videodevicesDAT10Lista los dispositivos de captura de video disponibles.
webclientDAT24Realiza solicitudes HTTP y captura las respuestas.
webrtcDAT14Maneja señalización WebRTC y mensajería de canal de datos.
webserverDAT15Aloja un servidor HTTP y WebSocket para clientes externos.
websocketDAT16Un cliente o servidor WebSocket para mensajería bidireccional.
xmlDAT23Analiza XML o HTML en una tabla navegable.

POP — puntos / partículas (GPU) (96)

HerramientaParámetrosDescripción
accumulatePOP13Acumula o integra atributos de puntos a lo largo de los fotogramas.
alembicoutPOP28Escribe geometría de puntos en un caché de Alembic.
analyzePOP25Reduce atributos de puntos a estadísticas resumidas.
attributePOP30Crea, edita o elimina atributos de puntos.
attributecombinePOP12Combina atributos coincidentes de múltiples entradas de puntos.
attributeconvertPOP11Convierte el tipo o la precisión numérica de un atributo.
blendPOP18Mezcla atributos de puntos entre entradas según un peso.
boxPOP23Genera puntos dispuestos en forma de caja.
cachePOP14Almacena en búfer fotogramas de datos de puntos para su reproducción.
cacheblendPOP14Mezcla entre fotogramas almacenados en caché de datos de puntos.
cacheselectPOP9Selecciona un fotograma específico almacenado en caché de datos de puntos.
choptoPOP24Crea puntos a partir de datos de canales CHOP.
circlePOP22Genera puntos dispuestos en un círculo.
connectivityPOP11Etiqueta puntos según el componente conectado al que pertenecen.
convertPOP6Convierte geometría de puntos entre representaciones.
copyPOP46Copia puntos sobre otros puntos o con transformaciones, para instanciación.
curvePOP36Genera una curva descrita por puntos.
dattoPOP47Construye puntos a partir de las filas de un DAT.
deletePOP36Elimina puntos seleccionados por grupo o condición.
dimensionPOP8Mide o establece las dimensiones delimitadoras del conjunto de puntos.
dmxfixturePOP25Mapea puntos a luminarias de iluminación DMX.
dmxoutPOP31Envía datos de puntos como DMX.
extrudePOP17Extruye geometría de puntos para añadir profundidad.
facetPOP18Ajusta normales y facetado de geometría de puntos.
feedbackPOP11Realimenta la salida de puntos para procesamiento recursivo con retardo de fotogramas.
fieldPOP47Crea o muestrea un campo espacial sobre puntos.
fileinPOP12Carga puntos desde un archivo.
fileoutPOP23Escribe puntos en un archivo.
forceradialPOP34Aplica una fuerza radial (atracción/repulsión) a los puntos.
glslPOP62Ejecuta un programa de cómputo GLSL sobre puntos, con el código fuente del programa suministrado a través de un DAT referenciado.
glsladvancedPOP119Un operador de puntos GLSL de múltiples búferes para flujos de trabajo de cómputo avanzados, con fuente de DATs referenciados.
glslcopyPOP57Usa un programa GLSL para impulsar la copia o instanciación de puntos.
glslselectPOP7Selecciona puntos usando un programa GLSL.
gridPOP26Genera puntos dispuestos en una cuadrícula.
groupPOP42Agrupa puntos por condición o región.
histogramPOP14Calcula un histograma de los valores de un atributo.
importselectPOP28Selecciona e importa un subconjunto de datos de puntos.
inPOP7La toma de entrada de un componente POP.
limitPOP23Limita atributos de puntos a un rango.
linePOP31Genera puntos dispuestos en una línea.
linebreakPOP20Divide polilíneas en segmentos separados.
linedividePOP34Divide polilíneas en más segmentos.
linemetricsPOP59Mide la longitud de línea y métricas relacionadas por punto.
lineresamplePOP18Remuestrea polilíneas en puntos espaciados uniformemente.
linesmoothPOP30Suaviza polilíneas para reducir variaciones bruscas.
lookupattributePOP23Busca valores de atributos usando un atributo de índice.
lookupchannelPOP24Muestrea un canal CHOP por punto como búsqueda.
lookuptexturePOP28Muestrea una textura (TOP) por punto para leer colores o datos en atributos.
mathPOP26Realiza aritmética y remapeo de rango en atributos de puntos.
mathcombinePOP52Combina atributos con una operación matemática.
mathmixPOP25Mezcla atributos mediante un factor de fusión.
mergePOP11Fusiona varios conjuntos de puntos en uno.
neighborPOP25Encuentra puntos vecinos dentro de un radio o recuento.
noisePOP49Aplica ruido coherente a posiciones o atributos de puntos.
normalPOP27Calcula normales de puntos.
normalizePOP22Normaliza atributos vectoriales o reescala valores a un rango.
nullPOP5Una toma de paso para cadenas de puntos.
outPOP8La toma de salida de un componente POP.
particlePOP41Una simulación de partículas GPU que avanza puntos bajo fuerzas y reglas.
patternPOP35Genera un patrón de valores con forma a través de puntos.
phaserPOP23Aplica un desplazamiento basado en fase que anima valores a través de puntos.
planePOP19Genera puntos dispuestos en un plano.
pointPOP11Edita posiciones y atributos de puntos directamente.
pointfileinPOP33Carga un archivo de nube de puntos (como PLY) en puntos, el punto de entrada para datos escaneados.
pointgeneratorPOP26Genera un número especificado de puntos para sembrar un sistema.
polygonizePOP22Construye geometría de superficie poligonal a partir de puntos.
primitivePOP21Edita atributos a nivel de primitiva de geometría de puntos.
projectionPOP22Proyecta puntos usando un mapeo de proyección.
proximityPOP21Calcula relaciones de proximidad y vecino más cercano entre puntos.
quantizePOP19Ajusta atributos de puntos a una cuadrícula o tamaño de paso.
randomPOP36Asigna valores aleatorios a atributos de puntos.
rayPOP37Proyecta puntos sobre una superficie objetivo a lo largo de rayos.
rectanglePOP23Genera puntos dispuestos como un rectángulo.
rerangePOP19Remapea un atributo de un rango de valores a otro.
revolvePOP12Revoluciona un perfil de puntos alrededor de un eje para formar una superficie.
selectPOP9Referencia puntos de otro POP por ruta.
skinPOP9Crea una piel de superficie a través de curvas de puntos.
skindeformPOP18Deforma puntos para seguir un esqueleto (skinning).
soptoPOP10Convierte geometría SOP en puntos.
sortPOP27Ordena puntos por valor, posición o atributo.
spherePOP33Genera puntos dispuestos en una esfera.
sprinklePOP16Dispersa puntos a través de una superficie o volumen.
subdividePOP9Subdivide geometría de puntos para mayor resolución.
switchPOP14Selecciona una de varias entradas de puntos por índice.
textPOP37Genera puntos que describen texto.
texturemapPOP32Asigna o calcula coordenadas de textura para puntos.
topologyPOP61Construye o edita la conectividad/topología de geometría de puntos.
toptoPOP45Crea puntos desde un TOP, convirtiendo píxeles en puntos posicionados.
torusPOP24Genera puntos dispuestos en un toro.
tracePOP30Traza las formas de una imagen en puntos o curvas.
trailPOP28Registra las estelas de movimiento de puntos a lo largo del tiempo.
transformPOP48Traslada, rota y escala puntos.
triangulatePOP16Triangula puntos en una malla (estilo Delaunay).
trigPOP17Aplica funciones trigonométricas a atributos de puntos.
tubePOP24Genera puntos dispuestos como un tubo.
twistPOP19Aplica deformaciones de torsión, curvatura o estrechamiento a puntos.

Herramientas de utilidad — el plano de datos, la capa de control y el plano de control (35)

  • Leer la escena: scene_info, read_network, find_errors, inspect, top_info, probe_optype, mem.
  • Construir y conectar: connect, set_par, set_par_many, set_flags, set_pos, delete_op, bind_chop, batch (ejecuta muchas operaciones en un solo viaje de ida y vuelta; no otorga ninguna capacidad que una llamada directa no tenga, y no puede anidarse).
  • Importar: import_scan, import_segmented_model (construye un rig completo por sección sec*/mat* a partir de OBJs por parte en una sola llamada).
  • Entregar (solo cableado): save_top (escribe la imagen de un TOP en el directorio de trabajo), capture_ui, write_csv, pulse, show.
  • Consultar información: td_capabilities (índice de inicio de la superficie + límite), help, operator_reference (esquema tipado completo de cualquier operador), recipe_reference (las recetas de flujo de trabajo).
  • Aprender a escribir código: glsl_reference (shaders GLSL), expr_reference (expresiones de parámetros), code_reference (qué carril lleva qué + el protocolo de consentimiento) — profesores de solo lectura que proponen texto de código para los carriles validados o pegado manual; nunca ejecutan código.
  • Carriles de código (desactivados por defecto, con consentimiento): set_glsl / validate_glsl, set_expr / validate_expr.
  • Control de dispositivos (desactivado por defecto, con consentimiento): device_send — envía un comando a un proyector a través de la lista de permitidos cerrada PJLink Class-1; desactivado a menos que un humano habilite explícitamente allow_device_control.
  • Mantenimiento: dev_reload.

Referencias

Varias superficies de descubrimiento respaldan el catálogo de herramientas. td_capabilities es el índice de inicio — llámalo primero para orientarte sobre la superficie, el límite y dónde consultar información.

  • Catálogo de herramientasdocs/TOOL_CATALOG.md, generado desde reference/catalog.json (el recuento autoritativo de cada operación tipada, en aproximadamente 17,000 parámetros tipados en las familias de operadores). Este es el límite de seguridad: si no está en el catálogo, el servidor no puede hacerlo.
  • Referencia de operadores — la herramienta MCP operator_reference responde "¿qué parámetros toma el operador X?" a partir de la verdad de campo sondeada en vivo (nombre, tipo, rango/tokens por parámetro).
  • help — los hechos de un operador (familia, número de entradas, nombres de parámetros) más un enlace profundo a la documentación oficial de Derivative. No se incluye prosa de Derivative; las descripciones de operadores enviadas son originales.
  • recipe_reference — la capa de control: 66 recetas de flujo de trabajo mapeadas a herramientas que llevan pasos ordenados y convenciones (ver más abajo).
  • Profesores de código — guías de solo lectura para las superficies de código de TD: glsl_reference (shaders GLSL), expr_reference (expresiones de parámetros), code_reference (qué carril + el protocolo de consentimiento). Ellos proponen texto de código para los carriles validados o pegado manual; nunca ejecutan código.

Documentación


Recetas de mapeo de proyección

recipe_reference clasifica tu tarea y devuelve una forma probada y mapeada a herramientas de construirla — una secuencia ordenada de herramientas reales, los parámetros que realmente mueven el resultado, un nulo de referencia OUT_ para plantar en cada paso, y la lectura barata para verificarlo. TouchDesigner ofrece muchos enfoques válidos, así que una receta es un ejemplo trabajado para adaptar, nunca un evangelio. Las 66 recetas abarcan estos dominios:

  • Carril de renderizado 3D (facade_3d_render) — un edificio .obj/.abc/.fbx/.usd en un COMP de Geometría, enmarcado por una cámara, sombreado con un MAT, renderizado a un Render TOP sobre un plato oscuro.
  • FX de textura generativa (generative_texture_fx) — el carril de contenido de fachada principal: ruido → rampa → tono → transformación → composición → estela de retroalimentación, una red TOP puramente evolutiva.
  • Contenido de nube de puntos (point_cloud_content) — ingerir un escaneo terminado de dron/fotogrametría (datos de posición en un TOP) e instanciar sprites o mallas sobre los puntos.
  • Cámara / encuadre (camera_match_facade) — hacer coincidir la cámara virtual con la fachada real (mapa plano ortográfico o coincidencia de lente en perspectiva).
  • Rig y coreografía por sección (per_section_material_rig, height_sweep_choreography, per_section_color_choreography, facade_cue_choreography) — un material por sección arquitectónica, controlado solo por datos mediante exportación CHOP (un barrido de luz viajero, color por sección o un show con cues) — sin expresiones, sin código.
  • Mapeo de video (segmented_facade_video_projection, segmented_facade_video_content, facade_mask_atlas) — llevar video real a cada sección registrada por UV mediante emitmap, con una máscara en escala de grises que mantiene las ventanas en negro.
  • Deformación libre / de malla (mesh_freeform_warp) — el análogo solo de datos de un mapeador de deformación de malla: un campo UV remapTOP con un desplazamiento de cuadrícula de control dobla el contenido sobre una superficie curva.
  • Mapeo y alineación de proyectores (projector_calibrated_3d, projection_align_and_output, multiprojector_edge_blend) — un frustum de proyector calibrado, una corrección keystone de 4 esquinas y una costura con fusión de bordes entre proyectores superpuestos.
  • Control de show y DMX (realtime_input_driver, show_control_timecode, dmx_artnet_output) — una entrada OSC/audio/DMX/MIDI en vivo que controla la fachada, un transporte de temporizador/timecode que ejecuta el show con cues, y salida DMX / Art-Net / sACN para luces y accesorios.
  • Salida / entrega (output_handoff) — exponer el contenido terminado a un servidor de medios (Pixera / disguise) o hornear un archivo HAP 4K — solo por cable, con record/active apagados para que el operador los active.
  • Mapeo 2D de múltiples superficies (multi_quad_mapper) — el kantanMapper solo de datos: N fuentes, cada una en su propio quad deformado por esquinas, compuesto sobre negro — mapear un video diferente en cada ventana / superficie plana / cara de letrero.
  • Ingesta de calibración de proyectores (camera_calibration_intake) — construir el COMP de Cámara objetivo + rig de renderizado para que la calibración en sitio de camSchnappr / OpenCV / topografía (pose + matriz de proyección) se conecte directamente.
  • Profundidad de múltiples proyectores (multiprojector_blacklevel_mask, projector_stack_converge) — elevación del nivel de negro para que la costura de fusión desaparezca en contenido oscuro, y apilamiento/convergencia de proyectores para brillo y redundancia (distinto de la fusión de bordes).
  • Enmascarado de derrame / basura (output_spill_garbage_mask) — retención en espacio de pantalla que recorta el contenido a la silueta de la superficie (mantener la luz fuera del suelo / cielo / vecinos) más un suavizado de marco de proyector.
  • Patrones de prueba y rig-and-focus (test_pattern_generator) — cuadrículas de alineación solo de datos, cruces, barras de color, campos de enfoque/1:1 píxeles, etiquetas por proyector, marcadores de convergencia y superposición a resolución nativa.
  • Reproducción de medios y composición (media_clip_player, layer_compositor) — reproducción robusta de clips 4K + lista de reproducción sin interrupciones, y una pila de capas estilo servidor de medios (opacidad/fusión/transformación por capa) con transiciones.
  • Alimentación en vivo y salida directa (live_media_server_feed, direct_projector_output) — entrega en vivo Spout / NDI / Touch / RenderStream, y una ventana de presentación directa a proyector / carril de frente de casa Direct-Display.
  • Inmersivo / domo / curvo (dome_fisheye_master, curved_screen_warp_blend) — domo ojo de pez/equirectangular y masters 360 (reproyección de cubemap) y una deformación cilíndrica + fusión para una sola pantalla curva ancha.
  • Contenido interactivo (vision_interactive_mask, audio_reactive_content) — una cámara en vivo que controla una máscara de presencia/movimiento, y visuales generativos construidos desde la música (FFT / energía de banda / onset) — solo datos.
  • Texto y titulación (text_title_content) — tipografía solo de datos: títulos de show, tercios inferiores, créditos rodantes, y un contador/reloj en vivo sin código mediante un puente timerCHOP → choptoDAT → textTOP (sin expresiones).
  • Partículas y 3D cinético (particle_system_content, instanced_kinetic_content) — un sistema de partículas POP GPU en vivo (brasas / chispas / nieve / flujo) y arreglos de instancias animadas / escenas de gráficos en movimiento cinéticos.
  • Bucles sin costuras (seamless_loop_authoring) — hornear un bucle generativo sin costuras (fase periódica o fundido cruzado cabeza/cola), solo por cable a un archivo de película.
  • Superficie rastreada / en movimiento (tracked_surface_content) — proyectar sobre un accesorio o intérprete en movimiento: un CHOP de rastreo (BlackTrax / PosiStageNet / OptiTrack) controla una transformación de gemelo digital sin código.
  • Pared LED / mapa de píxeles (led_wall_pixelmap_feed) — tallar un lienzo en mosaicos por panel a la resolución total exacta que ingiere un procesador LED Novastar / Brompton / Linsn.
  • Sala inmersiva (immersive_room_mapping) — una sala completamente envolvente de múltiples paredes + piso/techo, una cámara calibrada por superficie abanicada desde una escena 3D compartida (modo anamórfico de piso / perspectiva forzada).
  • Superficies translúcidas (sheer_surface_mapping) — preparación de contenido para scrim / gasa / HoloGauze / niebla / pantalla de agua con aplastamiento de negro obligatorio, un espejo de proyección trasera y una retención segura para actores.
  • Ingesta de señales (signal_ingest_remap) — capturar una fuente SDI / HDMI / NDI / ST-2110 / Syphon-Spout en vivo y re-mapearla sobre superficies — el gemelo de ingesta de los carriles de salida.
  • Entrega de color y uniformidad (color_grade_lut_delivery, projector_color_uniformity) — un pipeline de color de entrega LUT / OCIO, y coincidencia de punto blanco / gamma en un arreglo de múltiples proyectores.
  • Salida multi-zona (multizone_independent_outputs) — N zonas de salida independientes, cada una con su propio contenido, resolución y destino (distinto de una ventana única con fusión de bordes).
  • Automatización de show y seguridad (scheduled_playback_dayparting, timecode_chase_slave, emergency_blackout_and_standby, confidence_monitor_foldback) — segmentación por hora del día sin supervisión, seguimiento de timecode externo LTC/SMPTE, DBO / standby instantáneo, y taps de confianza / foldback para el operador.
  • Gráficos para eventos en vivo (corporate_stage_graphics) — un paquete IMAG + tercios inferiores + diapositiva de retención + contador para un escenario de conferencia / keynote.
  • Control del operador y operaciones de show (operator_control_panel, show_health_watchdog) — construir la superficie de control en pantalla/TouchOSC del operador, y un vigilante de salud del sistema (fps / fotogramas perdidos / temp GPU) con una superposición de alarma.
  • LED de esquina 3D a ojo desnudo (anamorphic_corner_led_3d) — 3D de perspectiva forzada en una pared LED de esquina de 90° mediante una sola cámara hero fuera de eje, dividida en las dos caras.
  • Lidar y contorno (lidar_presence_interaction, line_contour_mapping) — piso/pared interactivo desde un escáner láser 2D, y líneas de luz animadas de borde/contorno que trazan la arquitectura real de un edificio.
  • Audio de show (show_audio_playback) — reproducción de banda sonora + enrutamiento de altavoces multicanal/espacial + bloqueo de timecode A/V (el carril de salida de audio; cada otra receta de audio es solo de entrada).
  • Broadcast e IoT (st2110_ip_video_out, mqtt_iot_input) — entrega de video sobre IP SMPTE ST 2110 (PTP), y disparadores MQTT / de automatización de edificios que extienden la familia de controladores de entrada.
  • Pipeline de contenido (projector_plan_tables, uv_template_export, structured_light_calibration_patterns, notch_block_playback) — hojas de planificación de lente/alcance, una plantilla de registro UV para artistas de contenido, patrones de captura de código gris / desplazamiento de fase, y un andamiaje de reproducción de bloques Notch .dfx.

El trabajo de TouchDesigner es la creación de contenido; la deformación/fusión física sobre la superficie real se realiza aguas abajo por el servidor de medios. Ver ARCHITECTURE.md para cómo se conecta la capa de recetas.


Gotchas

Algunas trampas específicas de TouchDesigner que las recetas codifican:

  • Las herramientas de creación toman vectores tuplet; set_par toma componentes crudos. Una herramienta de creación expone color:[r,g,b] y tuplets resolution; pasar nombres de componentes crudos (colorr) o un envoltorio pars{} a una herramienta de creación los descarta silenciosamente. Usa set_par para colorr/tx crudos.
  • Un geometryCOMP nuevo incluye un hijo torus predeterminado que lleva los flags de render/display. Bórralo (con delete_op) y activa el flag de render de tu fileinSOP importado, o ambos competirán por ser renderizados.
  • El Render TOP referencia cámara / geometría / luces por parámetro, no conectándolos a sus entradas. Su salida es transparente — compónelo sobre un constantTOP oscuro para un pase de belleza legible.
  • La trampa de resolución 256/1280 es real. Los generadores (noiseTOP, rampTOP) heredan un predeterminado pequeño; establece outputresolution=custom + resolutionw/h para entrega 4K. Las builds no comerciales limitan la salida a 1280.
  • La exportación CHOP controla un parámetro solo con el visor del exportador activo y un cook forzado — el flag de Export solo no hace nada. bind_chop maneja esto; una exportación manual aún lo necesita.
  • import_segmented_model fuerza el File In SOP al modo CONSTANT para que se cargue el OBJ real, no la caja de muestra predeterminada de TouchDesigner; los modelos deben vivir bajo el directorio de trabajo.

Configuración

La mayor parte de la configuración ocurre en la GUI y se escribe en ~/.touchdesigner-bridge-mcp/arm.json, el único archivo que ambos procesos leen fresco por llamada. Solo la configuración del cliente MCP necesita variables de entorno.

ConfiguraciónDóndeDescripción
TDMCP_GW_HEADLESSenv (config del cliente)1 = ejecutar el binario como gateway MCP stdio sin cabeza; sin establecer = abrir la ventana de GUI.
TDMCP_REPOenv (config del cliente)La ruta de clonación, para que el gateway resuelva sus datos reference/ incluidos de manera determinista.
working_dirGUI → Directorio de trabajo → AplicarLa raíz de confinamiento. Cada lectura/escritura de archivo está confinada por realpath bajo ella. Leída fresca por llamada por ambas capas; Aplicar tiene efecto en vivo, sin reinicio.
token / portarm.json (acuñado en arm)El token de sesión CSPRNG y el puerto de loopback (predeterminado 9980). Nunca escribes ni ves el token.
allow_expr / allow_glslAlternancia de consentimiento GUI → arm.jsonFlags de consentimiento para los dos carriles de código (predeterminado apagado).
allow_highresarm.jsonOmitir el techo de magnitud de renderizado impuesto (predeterminado apagado).
min_action_interval_msarm.jsonEl acelerador de llamadas destructivas.

Un re-armado simple preserva los flags de consentimiento y el directorio de trabajo — nunca restablece silenciosamente la jaula o cambia un carril.


Seguridad

El modelo de seguridad es el límite mismo, no un sandbox. Modelo de amenazas completo, límites honestos y contacto de divulgación en SECURITY.md.

  • Solo datos por construcción. No existe ninguna herramienta execute_python / eval / run / de shell. Un canario en tiempo de ejecución (assert_no_rce_endpoints), una guardia de tipo de operación en tiempo de ejecución (check_optype_allowed, que deniega los operadores script / execute / cplusplus y evaluateDAT), y una valla en tiempo de compilación (catalog_never_exposes_rce_tools) lo hacen cumplir.
  • Guardia de parámetros en capas. Debido a que la superficie tipada se reduce a un set_par genérico, el límite real es el check_par_allowed del ejecutor sobre la superficie de ~17,000 parámetros de TouchDesigner: una denegación universal de nombres de parámetros de puntero de código (callbacks / *script / datexpr), una lista de denegación de sumideros de código revisada con generalización de regex de índice de bloque de secuencia, y una lista blanca de cierre ante fallos para que los parámetros desconocidos o más nuevos sean rechazados en lugar de dejarse pasar. Esto es una lista de denegación sobre una superficie de terceros de código cerrado: una revisión independiente de equipo rojo no encontró una evasión de RCE funcional, pero es un riesgo residual, no un límite probado como completo — declarado claramente en SECURITY.md.
  • Bucle de retorno + token de acuñación automática. El Web Server DAT se vincula solo a 127.0.0.1; el armado acuña un token CSPRNG de 128 bits presentado como X-TDMCP-Token y comparado con secrets.compare_digest. Las solicitudes de origen cruzado (no bucle de retorno Origin/Host) se rechazan en cada endpoint, cerrando la clase de CSRF de bucle de retorno / re-vinculación de DNS. Los límites de cuerpo protegen contra DoS de memoria.
  • Directorio de trabajo confinado a realpath. Cada operación de archivo resuelve y vuelve a verificar contra una raíz, con escapes de enlaces simbólicos/junctions cerrados. El directorio de configuración (token + consentimiento) y la raíz de confianza del ejecutor (td_executor/*.py, INTEGRITY.json, arm.py) están fuera de límites incluso dentro del directorio de trabajo, y las herramientas de escritura aplican listas blancas de extensiones.
  • Fijación de integridad. INTEGRITY.json fija con hash cada .py del ejecutor; el armado y dev_reload verifican antes de importar y fallan de forma cerrada ante cualquier discrepancia o manejador no fijado. Techo honesto: esto es evidencia de manipulación, no un límite contra un atacante que ya puede escribir en el directorio de instalación — los permisos de archivos del sistema operativo son la raíz de confianza.
  • La salida es solo por cable. Los gráficos de grabación/envío en vivo se construyen con record/active apagados; tú los disparas.
  • Los dos carriles de código validados están desactivados por defecto y sujetos a consentimiento. glsl_v1 (set_glsl/validate_glsl, en sandbox de GPU — el peor caso es un tiempo de espera recuperable del controlador) y expr_v1 (set_expr/validate_expr, una lista blanca positiva de AST, enviado EXPERIMENTAL porque una brecha de validador aquí sería código de host). Ambos validan antes de escribir, son autoritativos para el ejecutor, auditados y de una sola ruta de escritura. La IA no puede cambiar su propio consentimiento — el componente /mcp_bridge y sus alternancias de GUI son rechazados por assert_writable en cada herramienta mutante, y las banderas viven en el directorio de configuración fuera de límites.
  • Techo de magnitud aplicado. El gobernador de asesoría es primero asesor, pero un techo duro rechaza magnitudes catastróficas que matan al controlador (resolución por dimensión > 16384 px, recuentos de instancias/partículas > 5,000,000, pases de render > 256), solo anulable por la bandera allow_highres con puerta humana — así que la entrega legítima de 4K/8K pasa, pero un set_par descontrolado no puede colgar el controlador de pantalla.
  • Postura prevista: bucle de retorno, un solo usuario confiable, máquina confiable. El transporte está destinado a permanecer en el host local. Trata a la IA como entrada semi-confiada.

Lee SECURITY.md antes de ejecutar esto en cualquier lugar que no sea una sola máquina confiable.


Solución de problemas

Tabla completa en docs/INSTALL.md. Lista rápida:

  • El panel Estado de la GUI muestra Armado con tu compilación de TouchDesigner, y http://127.0.0.1:9980/health responde.
  • La configuración del cliente MCP apunta al touchdesigner-bridge-mcp.exe compilado con TDMCP_GW_HEADLESS establecido en 1 (sin él, el binario lanza su GUI y el apretón de manos nunca se completa).
  • TDMCP_REPO apunta al clon (la carpeta que contiene reference/recipes.json), o las búsquedas de referencia/receta fallan.
  • El cliente se reinició por completo después de editar su configuración.
  • Las rutas de archivo que pasas a las herramientas viven dentro del directorio de trabajo configurado.
  • Si el armado informa "verificación previa de integridad FALLÓ, negándose a armar", un archivo del ejecutor cambió sin regenerar el manifiesto — ejecuta python scripts/gen_integrity_manifest.py.
  • Si una llamada de carril Expr/GLSL es rechazada, esos carriles están desactivados por defecto — activa la alternancia de consentimiento en /mcp_bridge (persiste en arm.json).

Licencia

Este proyecto está bajo doble licencia:

El puente no incluye binarios o datos de terceros — el ejecutor usa solo la biblioteca estándar de Python y el módulo td integrado de TouchDesigner, y las descripciones de operadores enviadas son originales.


Soporte

Si esto te ahorró tiempo y lo usas de forma no comercial, una propina siempre es apreciada — ko-fi.com/eviscerations. Es voluntaria y no otorga licencia; el uso comercial está cubierto por COMMERCIAL-LICENSE.md.


Desarrollo y pruebas

Las pruebas del ejecutor no necesitan ninguna licencia de TouchDesigner — se ejecutan contra una escena TD falsa (td_executor/tests/_tdmock.py) — así que los invariantes de seguridad son comprobables en cualquier máquina. Ejecuta las cuatro verificaciones antes de abrir un cambio:

# 1. Executor unit tests — offline, no TouchDesigner required.
python td_executor/tests/run_tests.py

# 2. Gateway tests — includes the build-time boundary fences (catalog_never_exposes_rce_tools,
#    code_named_params_are_the_known_reviewed_set, reserved placement args, unique names).
cargo test --manifest-path gateway/Cargo.toml

# 3. Registry consistency — the gateway catalog and the executor endpoint set agree.
python scripts/audit_registry_consistency.py

# 4. Recipe validation — every recipe maps to real, shipped tools.
python scripts/validate_recipes.py

Después de cualquier edición del ejecutor, regenera el manifiesto de integridad o el próximo armado/recarga fallará de forma cerrada:

python scripts/gen_integrity_manifest.py            # write/refresh the manifest
python scripts/gen_integrity_manifest.py --check    # CI mode: nonzero if stale

Consulta CONTRIBUTING.md para el ciclo completo de compilación / prueba / armado y los ciclos de vida de recarga.


Contribuciones

Las solicitudes de extracción son bienvenidas — consulta CONTRIBUTING.md. Este proyecto es una superficie de control solo de datos, y ese límite es el punto de todo el diseño, así que la regla más importante para cualquier cambio es: no agregues una ruta que permita a la IA ejecutar código arbitrario. Lee SECURITY.md y ARCHITECTURE.md antes de hacer cambios no triviales, y anota cualquier cambio de postura de seguridad en CHANGELOG.md.