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; tú — 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):
- Obtén el gateway — el único programa que conecta tu IA a TouchDesigner. Ya sea descarga el
touchdesigner-bridge-mcp.exeprecompilado 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. - 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. - 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.pycompila 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/activeapagados, 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
realpatha 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_referencelleva 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_referenceenseña shaders GLSL,expr_referencela superficie de expresiones de parámetros, ycode_referenceexplica 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ñalglsl_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*_referencelos 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
.obja 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.objy 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 entornoTDMCP_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 uncreate_op+set_pargené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 mediantearm.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ódulotdintegrado de TouchDesigner — no se incluyen ni redistribuyen paquetes de terceros, nada quepip 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
- TouchDesigner — una instalación con licencia, compilación 2023.11k+ o 2025.30k+. El ejecutor corre dentro del Python embebido propio de TouchDesigner.
- Un toolchain de Rust (estable) — solo si compilas la puerta de enlace tú mismo; omítelo si descargas el
.exeprecompilado desde Releases. rustup.rs proporcionacargo. - 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. - Un cliente MCP — Claude Desktop, o cualquier cliente que pueda lanzar un servidor MCP stdio.
- 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_HEADLESS — sin 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:
- 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_diren~/.touchdesigner-bridge-mcp/arm.json. - 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.1solamente — 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.jsonantes 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) enarm.json. - Ensambla un componente
/mcp_bridge— un Web Server DAT en loopback127.0.0.1:9980más un DAT de callbacks delgado que carga el paquetetd_executoren disco — y agrega interruptores de consentimiento en la GUI (Allow Expr Lane / Allow GLSL Lane) que persisten enarm.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
-
Salud del ejecutor — con TouchDesigner armado, abre en un navegador o curl:
http://127.0.0.1:9980/healthEl 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.
-
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 total — 509 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)
| Herramienta | Parámetros | Descripción |
|---|---|---|
addTOP | 26 | Compone 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. |
analyzeTOP | 19 | Reduce una imagen a un solo valor, fila o columna tomando una estadística como mínimo, máximo o promedio entre los píxeles. |
antialiasTOP | 21 | Suaviza los bordes irregulares y escalonados de una imagen con un filtro de antialiasing posterior al proceso. |
blobtrackTOP | 37 | Detecta manchas brillantes en una imagen e informa sus posiciones y tamaños, un rastreador óptico ligero para instalaciones interactivas. |
blurTOP | 23 | Aplica un desenfoque gaussiano o de caja; el parámetro de ancho del filtro establece cuántos píxeles se promedian juntos. |
cacheTOP | 26 | Almacena un búfer móvil de fotogramas recientes en la GPU para que los fotogramas anteriores puedan reproducirse o muestrearse mediante un Cache Select. |
cacheselectTOP | 16 | Lee un fotograma elegido del búfer almacenado de un Cache TOP por índice. |
channelmixTOP | 19 | Reconstruye cada canal de salida como una mezcla ponderada de los canales de entrada, útil para intercambios de canales y matrices de color personalizadas. |
choptoTOP | 19 | Convierte canales CHOP en una imagen, escribiendo valores de muestra en píxeles para que los datos numéricos puedan visualizarse o alimentar shaders. |
chromakeyTOP | 29 | Recorta un color de fondo elegido (pantalla verde/azul) para producir un mate alfa para composición. |
circleTOP | 42 | Dibuja un círculo o elipse relleno o delineado directamente como imagen. |
compositeTOP | 34 | Superpone muchas entradas con una operación de mezcla seleccionable, el equivalente multi-entrada de los TOP Over/Add de dos entradas. |
constantTOP | 23 | Genera una imagen plana de un solo color sólido y alfa en la resolución elegida. |
convolveTOP | 20 | Filtra 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. |
cornerpinTOP | 36 | Deforma la imagen arrastrando sus cuatro esquinas a posiciones arbitrarias, el warp de keystone/quad estándar para alineación de proyección. |
cropTOP | 23 | Extrae una subregión rectangular de la imagen, cambiando la salida a ese recorte. |
crossTOP | 27 | Hace una disolución cruzada entre dos entradas mediante una única cantidad de mezcla. |
cubemapTOP | 15 | Ensambla o reorganiza las seis caras de un cubemap para mapeo de entorno y reflejos. |
depthTOP | 23 | Extrae 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. |
differenceTOP | 26 | Genera la diferencia absoluta por píxel entre dos entradas, útil para detección de cambios. |
directdisplayoutTOP | 20 | Envía la imagen a una pantalla conectada directamente, omitiendo el compositor del escritorio para salida de baja latencia. |
directxinTOP | 15 | Recibe una textura GPU compartida de otra aplicación mediante superficies compartidas de DirectX. |
directxoutTOP | 16 | Publica la imagen como una textura DirectX compartida para que otra aplicación la lea. |
displaceTOP | 25 | Desplaza la posición de búsqueda de cada píxel usando una segunda imagen como mapa de desplazamiento, deformando la imagen. |
edgeTOP | 25 | Detecta bordes midiendo el contraste local, produciendo una imagen de contorno. |
embossTOP | 21 | Produce un aspecto de relieve elevado y en relieve sombreando a partir de gradientes de intensidad local. |
feedbackTOP | 16 | Alimenta 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. |
fitTOP | 27 | Redimensiona y ajusta la entrada a la resolución de salida con un modo de ajuste/estiramiento elegido. |
flipTOP | 18 | Voltea o refleja la imagen horizontal y/o verticalmente. |
glslTOP | 59 | Ejecuta 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. |
glslmultiTOP | 59 | Un TOP de shader de fragmentos GLSL que expone múltiples entradas de imagen para efectos de múltiples texturas. |
hsvadjustTOP | 24 | Desplaza el tono y escala la saturación y el valor, la corrección de color de referencia para tinte y viveza. |
hsvtorgbTOP | 14 | Interpreta los canales de entrada como HSV y los convierte a RGB. |
inTOP | 16 | La toma de entrada de un componente TOP, exponiendo una imagen externa dentro de la subred. |
insideTOP | 26 | Mantiene la primera entrada solo donde el mate de la segunda entrada es opaco (composición fuente-dentro). |
kinectazureTOP | 46 | Captura flujos de imagen de profundidad, color e infrarrojos de un sensor Azure Kinect. |
layermixTOP | 34 | Mezcla capas apiladas con opacidad por capa y modos de mezcla. |
layoutTOP | 36 | Coloca múltiples entradas en una sola imagen de cuadrícula, dimensionada por filas y columnas. |
lensdistortTOP | 38 | Añade o elimina distorsión de lente de barril/cojín. |
levelTOP | 45 | Ajusta brillo, contraste, gamma, niveles de negro/blanco y opacidad, el control de tono de trabajo pesado. |
lookupTOP | 25 | Reasigna cada píxel a través de una tabla de búsqueda proporcionada como segunda imagen, impulsando gradaciones de color y mapeo de gradientes. |
lumablurTOP | 21 | Desenfoca por una cantidad que varía con la luminancia local, de modo que las regiones brillantes u oscuras se extienden más. |
lumalevelTOP | 32 | Ajusta niveles basados en luminancia, útil para aislar luces o sombras. |
mathTOP | 37 | Realiza aritmética por píxel (suma, multiplicación, diferencia y más) entre entradas y constantes. |
matteTOP | 16 | Aplica una entrada como el mate alfa de otra para recortar una forma. |
mirrorTOP | 20 | Refleja la imagen sobre un eje elegido para construir simetría caleidoscópica. |
monochromeTOP | 18 | Colapsa el color a un solo canal de escala de grises usando una ponderación de luminancia elegida. |
moviefileinTOP | 63 | Carga y reproduce un archivo de película o imagen fija, con parámetros para la ruta del archivo, velocidad de reproducción y recorte. |
moviefileoutTOP | 70 | Graba 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. |
multiplyTOP | 26 | Multiplica los valores de píxel de sus entradas, una mezcla de modulación/oscurecimiento. |
ndiinTOP | 24 | Recibe video a través de la red como fuente NDI. |
ndioutTOP | 26 | Publica la imagen en la red como flujo NDI. |
noiseTOP | 41 | Genera imágenes de ruido procedural (Perlin, simplex y otros) con transformación y armónicos animables. |
normalmapTOP | 20 | Deriva un mapa normal en espacio tangente de una imagen de altura o escala de grises para iluminación de detalle de superficie. |
notchTOP | 29 | Reproduce y controla un bloque de efectos Notch (.dfxdll), exponiendo sus parámetros expuestos. |
nullTOP | 14 | Un marcador de paso utilizado como punto de toma estable al final de una cadena de imágenes. |
opencolorioTOP | 40 | Aplica una transformación de espacio de color OpenColorIO para flujos de trabajo con gestión de color. |
opviewerTOP | 17 | Renderiza el visor de nodos de otro operador en una imagen para que cualquier operador pueda verse como un TOP. |
orbbecTOP | 31 | Captura flujos de imagen de profundidad y color de una cámara de profundidad Orbbec. |
orbbecselectTOP | 19 | Selecciona y extrae un flujo de imagen, como profundidad o color, de un TOP Orbbec. |
outTOP | 17 | La toma de salida de un componente TOP, exportando una imagen fuera de la subred. |
outsideTOP | 26 | Mantiene la primera entrada solo donde el mate de la segunda entrada es transparente (composición fuente-fuera). |
overTOP | 26 | Compone la primera entrada sobre la segunda usando mezcla alfa-over estándar. |
packTOP | 15 | Empaqueta datos de píxel en un diseño o formato de bits específico para transporte o lectura de GPU. |
photoshopinTOP | 21 | Se vincula en vivo a un documento de Photoshop, trayendo sus capas como imagen. |
pointfileinTOP | 56 | Carga datos de archivos de nube de puntos en una textura donde cada píxel codifica la posición o atributo de un punto. |
pointtransformTOP | 61 | Transforma datos de puntos 3D almacenados en una textura, aplicando traslación, rotación, escala o una matriz de alineación a cada punto. |
prefiltermapTOP | 15 | Pre-convoluciona un mapa de entorno en los niveles mip que un material PBR necesita para reflejos brillantes. |
projectionTOP | 18 | Convierte entre diseños de proyección como equirectangular, cubemap y ojo de pez. |
rampTOP | 32 | Genera gradientes lineales, radiales o circulares a partir de una rampa de color editable. |
realsenseTOP | 40 | Captura flujos de imagen de profundidad, color e infrarrojos de una cámara de profundidad Intel RealSense. |
rectangleTOP | 39 | Dibuja un rectángulo relleno o delineado con tamaño, posición y redondeo de esquinas ajustables. |
remapTOP | 24 | Deforma la primera entrada buscando coordenadas almacenadas en los píxeles de una segunda entrada. |
renderTOP | 67 | Renderiza geometría 3D desde una cámara con luces y materiales en una imagen, el corazón del carril 3D a 2D. |
renderpassTOP | 56 | Añade un pase de render extra (como una capa o búfer separado) a un Render TOP. |
renderselectTOP | 20 | Selecciona un búfer o pase de salida de un Render TOP de múltiples salidas. |
rendersimpleTOP | 31 | Un render de un solo nodo que agrupa cámara, luz y geometría para vistas previas 3D rápidas. |
renderstreaminTOP | 18 | Recibe fotogramas de un host disguise RenderStream, trayendo una imagen renderizada externamente a través de la red. |
renderstreamoutTOP | 19 | Envía la imagen a un host disguise RenderStream como flujo de salida renderizado. |
reorderTOP | 22 | Reorganiza, duplica o rellena los canales RGBA de las entradas. |
resolutionTOP | 15 | Remuestrea la imagen a una nueva resolución usando un filtro elegido. |
scalabledisplayTOP | 20 | Aplica una calibración de warp-and-blend de Scalable Display Technologies para configuraciones de múltiples proyectores. |
screenTOP | 26 | Compone dos entradas con el modo de mezcla Screen para un efecto de aclarado. |
screengrabTOP | 27 | Captura el escritorio o una región de pantalla en una imagen. |
sharedmeminTOP | 18 | Lee una imagen de un bloque de memoria compartida escrito por otro proceso. |
sharedmemoutTOP | 20 | Escribe la imagen en un bloque de memoria compartida para que otro proceso la lea. |
slopeTOP | 24 | Calcula el gradiente local (pendiente) de la imagen, a menudo un precursor de mapas normales o sombreado de bordes. |
spectrumTOP | 18 | Transforma la imagen hacia y desde su espectro de frecuencia mediante FFT para filtrado en el dominio de la frecuencia. |
st2110inTOP | 31 | Recibe video sin comprimir sobre IP siguiendo el estándar SMPTE ST 2110. |
st2110outTOP | 47 | Transmite video sin comprimir sobre IP siguiendo el estándar SMPTE ST 2110. |
substanceTOP | 19 | Renderiza un material procedural Substance (.sbsar), exponiendo sus parámetros publicados. |
subtractTOP | 26 | Resta los píxeles de la segunda entrada de la primera. |
switchTOP | 17 | Pasa una de varias entradas elegidas por un índice, para conmutación A/B y secuenciación. |
syphonspoutinTOP | 16 | Recibe una textura GPU compartida mediante Syphon (macOS) o Spout (Windows). |
syphonspoutoutTOP | 16 | Publica la imagen como textura GPU compartida mediante Syphon (macOS) o Spout (Windows). |
textTOP | 78 | Renderiza texto en una imagen con control sobre fuente, tamaño, alineación y color. |
tileTOP | 36 | Coloca 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. |
touchinTOP | 20 | Recibe una imagen de otra instancia de TouchDesigner a través de la red. |
touchoutTOP | 20 | Envía la imagen a otra instancia de TouchDesigner a través de la red. |
transformTOP | 30 | Traduce, rota, escala y coloca en mosaico la imagen dentro de su marco. |
underTOP | 26 | Compone la segunda entrada sobre la primera (el reverso de Over). |
videodeviceinTOP | 55 | Captura video en vivo de una cámara o tarjeta de captura. |
videodeviceoutTOP | 35 | Envía la imagen a un dispositivo de video por hardware SDI/HDMI u otro. |
videostreaminTOP | 31 | Recibe un flujo de video comprimido como RTSP, RTMP o SRT. |
viosoTOP | 21 | Aplica una calibración de warp-and-blend de proyección VIOSO para la alineación de múltiples proyectores. |
webrenderTOP | 34 | Renderiza una página web o URL en una imagen usando un navegador integrado. |
CHOP — canales / señales / temporización (137)
| Herramienta | Parámetros | Descripción |
|---|---|---|
abletonlinkCHOP | 28 | Sincroniza tempo, fase y pulso con pares en la red mediante Ableton Link. |
analyzeCHOP | 14 | Reduce canales a una única estadística por canal, como promedio, máximo o longitud. |
angleCHOP | 13 | Convierte entre representaciones de ángulo, por ejemplo grados, radianes, cuaterniones y vectores de dirección. |
attributeCHOP | 11 | Etiqueta canales con atributos como orden de rotación o tipo de cuaternión que los operadores posteriores respetan. |
audiobandeqCHOP | 26 | Un ecualizador gráfico multibanda que realza o corta bandas de frecuencia fijas de una señal de audio. |
audiobinauralCHOP | 14 | Espacializa audio en una mezcla binaural (3D para auriculares) a partir de posiciones de fuente y oyente. |
audiodeviceinCHOP | 40 | Captura muestras de audio de un dispositivo de entrada, como un micrófono o una interfaz. |
audiodeviceoutCHOP | 41 | Reproduce canales como audio hacia un dispositivo de salida. |
audiodynamicsCHOP | 25 | Aplica dinámicas de compresión, limitación y puerta a una señal de audio. |
audiofileinCHOP | 31 | Lee muestras de audio de un archivo para reproducción o análisis. |
audiofileoutCHOP | 18 | Escribe canales de audio en un archivo de sonido. |
audiofilterCHOP | 16 | Filtra una señal de audio con respuesta de paso bajo, paso alto, paso banda o rechazo de banda y una frecuencia de corte ajustable. |
audiomovieCHOP | 19 | Extrae la pista de audio que acompaña a una película reproducida por un TOP Movie File In. |
audiondiCHOP | 11 | Envía o recibe audio integrado en una transmisión NDI. |
audiooscillatorCHOP | 20 | Genera tonos y formas de onda a frecuencia de audio a partir de una entrada de frecuencia. |
audioparaeqCHOP | 26 | Un ecualizador paramétrico con frecuencia central, ganancia y Q ajustables por banda. |
audioplayCHOP | 37 | Reproduce un archivo de sonido bajo demanda, a menudo activado por un evento. |
audiorenderCHOP | 48 | Renderiza una escena de audio espacial a partir de fuentes de sonido y un oyente en canales de salida. |
audiospectrumCHOP | 15 | Calcula el espectro de frecuencia de una señal de audio mediante FFT para visualización o reactividad. |
audiostreaminCHOP | 21 | Recibe audio transmitido desde la red. |
audiostreamoutCHOP | 16 | Transmite canales de audio hacia la red. |
audiovstCHOP | 27 | Aloja un complemento de audio VST y expone sus parámetros. |
audiowebrenderCHOP | 11 | Captura el audio producido por un TOP Web Render. |
beatCHOP | 34 | Ejecuta un reloj musical bloqueado a un tempo, emitiendo rampas de pulso, conteos y disparadores de pulso. |
blacktraxCHOP | 22 | Recibe datos de posición y orientación en tiempo real de un sistema de seguimiento BlackTrax. |
blendCHOP | 12 | Mezcla múltiples conjuntos de canales de entrada usando canales de ponderación, para mezcla de poses o valores ponderados. |
blobtrackCHOP | 25 | Reporta posiciones y tamaños de blobs rastreados como canales. |
clipCHOP | 24 | Reproduce clips de canales grabados con control sobre velocidad y rango. |
clipblenderCHOP | 38 | Mezcla y secuencia clips de animación en un flujo de movimiento continuo. |
clockCHOP | 36 | Emite componentes de tiempo de reloj de pared, como horas, minutos, segundos y fotograma. |
compositeCHOP | 27 | Superpone y combina canales de múltiples entradas, alineándolos en el tiempo. |
constantCHOP | 22 | Produce canales que mantienen valores constantes que escribes. |
copyCHOP | 17 | Repite o copia los canales de la primera entrada una vez por muestra de una segunda entrada. |
countCHOP | 25 | Cuenta cruces de umbral o disparadores en su entrada y emite el total acumulado. |
crossCHOP | 10 | Hace una transición cruzada entre dos conjuntos de canales según una cantidad de mezcla. |
cycleCHOP | 20 | Repite un canal un número de veces, opcionalmente fusionando las costuras en un bucle sin fisuras. |
dattoCHOP | 31 | Lee una tabla DAT y convierte sus filas o columnas en canales. |
delayCHOP | 12 | Retrasa canales por un desplazamiento de tiempo fijo. |
deleteCHOP | 32 | Elimina canales seleccionados o recorta muestras por patrón de nombre o rango. |
dmxinCHOP | 31 | Recibe datos de control de iluminación (DMX sobre Art-Net o sACN) como canales. |
dmxoutCHOP | 34 | Envía canales como datos de control de iluminación DMX. |
envelopeCHOP | 17 | Sigue la envolvente de amplitud móvil (pico o RMS) de una señal. |
eventCHOP | 33 | Convierte eventos discretos en canales con duraciones y formas. |
expressionCHOP | 13 | Aplica 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. |
extendCHOP | 12 | Establece cómo se comporta cada canal antes de su primera y después de su última muestra (mantener, ciclo, espejo o predeterminado). |
fanCHOP | 14 | Expande un solo canal a muchos, o combina muchos canales en uno, por índice. |
feedbackCHOP | 12 | Alimenta su propia salida anterior de vuelta para procesamiento recursivo de canales con retraso de fotograma. |
fileinCHOP | 20 | Lee datos de canales de un archivo o URL. |
fileoutCHOP | 12 | Añade o escribe canales en un archivo. |
filterCHOP | 26 | Suaviza canales con paso bajo a lo largo del tiempo para eliminar vibraciones, con un ancho de filtro ajustable. |
freedinCHOP | 15 | Recibe datos de seguimiento de cámara mediante el protocolo FreeD como canales de paneo, inclinación, zoom y posición. |
functionCHOP | 19 | Aplica una función matemática (trigonométrica, logarítmica, potencia, etc.) a cada canal. |
gestureCHOP | 21 | Graba un movimiento y lo reproduce como un canal de gesto reutilizable. |
handleCHOP | 15 | Resuelve cinemática inversa basada en manijas para rigs de personajes. |
hogCHOP | 13 | Consume deliberadamente tiempo de cocción para perfilar y probar el rendimiento bajo estrés. |
hokuyoCHOP | 19 | Lee muestras de distancia de un escáner láser de rango Hokuyo. |
holdCHOP | 12 | Muestrea la primera entrada y mantiene ese valor cada vez que se dispara una segunda entrada de activación. |
inCHOP | 14 | La toma de entrada de un componente CHOP. |
infoCHOP | 16 | Expone la información numérica de otro operador (tiempo de cocción, conteos de muestras y estado) como canales. |
interpolateCHOP | 12 | Interpola suavemente entre conjuntos de canales de entrada sucesivos o fotogramas clave. |
inversecurveCHOP | 17 | Resuelve una curva de cinemática inversa para un curvado de cadena suave. |
inversekinCHOP | 17 | Resuelve cinemática inversa de dos huesos desde una posición objetivo. |
joinCHOP | 27 | Une canales de extremo a extremo en el tiempo para construir una secuencia más larga. |
joystickCHOP | 31 | Lee ejes y botones de un joystick o controlador de juego. |
keyboardinCHOP | 18 | Reporta el estado presionado de teclas del teclado como canales. |
keyframeCHOP | 14 | Mantiene una animación de fotogramas clave editable y la evalúa en canales. |
kinectazureCHOP | 23 | Rastrea articulaciones corporales esqueléticas de un sensor Azure Kinect, emitiendo canales de posición y orientación por articulación. |
lagCHOP | 22 | Añade inercia, retraso y límites de velocidad de cambio para que los canales se aproximen suavemente a nuevos valores. |
laserCHOP | 42 | Prepara datos de trayectoria para salida de proyección láser. |
laserdeviceCHOP | 23 | Controla un DAC de proyector láser con canales láser preparados. |
leuzerod4CHOP | 25 | Lee datos de distancia de un escáner láser Leuze ROD4. |
lfoCHOP | 20 | Un oscilador de baja frecuencia que genera ondas seno, rampa, cuadrada y pulso para animación. |
limitCHOP | 24 | Limita los valores de canal a un rango y opcionalmente los cuantiza a un paso. |
logicCHOP | 16 | Realiza lógica booleana y comparaciones entre canales, emitiendo resultados de encendido/apagado. |
lookupCHOP | 17 | Usa la primera entrada como índice en la tabla de búsqueda de la segunda entrada. |
ltcinCHOP | 16 | Decodifica código de tiempo lineal SMPTE de audio en canales de tiempo. |
ltcoutCHOP | 29 | Codifica canales de tiempo como audio de código de tiempo lineal SMPTE. |
mathCHOP | 22 | Realiza aritmética y reasignación de rango en canales (sumar, multiplicar, rangos desde/hasta). |
mergeCHOP | 11 | Combina los canales de varias entradas en una sola salida. |
midiinCHOP | 64 | Trae notas MIDI y controladores como canales. |
midiinmapCHOP | 19 | Mapea mensajes MIDI entrantes a canales nombrados mediante una tabla de mapeo. |
midioutCHOP | 32 | Envía canales como notas MIDI y controladores. |
mosysCHOP | 16 | Recibe datos de seguimiento de cámara de un sistema Mo-Sys como canales de posición, orientación y lente. |
mouseinCHOP | 24 | Reporta la posición del mouse y el estado de los botones como canales. |
mouseoutCHOP | 15 | Controla la posición del mouse del sistema desde canales. |
ncamCHOP | 17 | Recibe datos de seguimiento de cámara de un sistema Ncam como canales de posición, orientación y lente. |
noiseCHOP | 41 | Genera canales de ruido procedural coherente a lo largo del tiempo. |
nullCHOP | 13 | Una toma de paso directo, el punto final estable recomendado para exportaciones y referencias. |
objectCHOP | 42 | Emite la transformación o relación (posición, rotación, distancia) entre dos objetos 3D. |
optitrackinCHOP | 19 | Recibe datos de cuerpo rígido y marcadores de un sistema de captura de movimiento OptiTrack. |
oscinCHOP | 27 | Recibe mensajes OSC y mapea sus valores a canales. |
oscoutCHOP | 22 | Envía valores de canal como mensajes OSC. |
outCHOP | 12 | La toma de salida de un componente CHOP. |
overrideCHOP | 13 | Deja pasar la entrada que cambió más recientemente, permitiendo que varios controladores compartan una salida. |
panelCHOP | 14 | Expone los valores de interacción de un componente de panel (estado, clic, rollover) como canales. |
pangolinCHOP | 20 | Controla el software láser Pangolin desde canales. |
pantiltCHOP | 15 | Calcula ángulos de paneo e inclinación para apuntar un dispositivo a un objetivo. |
parameterCHOP | 18 | Lee los valores evaluados de los parámetros de un operador en canales. |
patternCHOP | 32 | Genera un patrón con forma a través de muestras (rampa, gaussiana, seno y más). |
performCHOP | 36 | Expone estadísticas de rendimiento en tiempo real, como tiempo de fotograma y conteos de cocción, como canales. |
phaserCHOP | 13 | Produce una señal de animación con desplazamiento de fase, cambiando la fase del canal a lo largo del tiempo. |
pipeinCHOP | 25 | Recibe canales a través de una tubería TCP desde otro proceso. |
pipeoutCHOP | 21 | Enví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. |
poptoCHOP | 25 | Lee atributos de puntos POP en canales. |
posistagenetCHOP | 19 | Recibe posiciones de seguimiento de escenario PosiStageNet como canales. |
pulseCHOP | 33 | Emite picos de pulso a un intervalo o conteo establecido. |
recordCHOP | 16 | Graba canales entrantes en un búfer que se puede reproducir. |
renameCHOP | 9 | Renombra canales usando patrones de nombre desde/hasta. |
renderpickCHOP | 48 | Selecciona geometría 3D bajo coordenadas dadas en un render y devuelve la posición del impacto e información como canales. |
renderstreaminCHOP | 18 | Recibe datos de control de una sesión RenderStream de disguise. |
reorderCHOP | 18 | Reordena los canales dentro de la transmisión. |
replaceCHOP | 11 | Reemplaza canales en la primera entrada con canales de nombre coincidente de la segunda. |
resampleCHOP | 22 | Remuestrea canales a una nueva tasa de muestreo o rango de tiempo. |
selectCHOP | 16 | Referencia canales por nombre desde otro CHOP en cualquier parte del proyecto. |
serialCHOP | 17 | Lee y escribe un dispositivo serial (RS-232/USB) como canales. |
shiftCHOP | 17 | Desplaza un canal hacia adelante o hacia atrás en el tiempo. |
shuffleCHOP | 12 | Reforma la disposición entre canales y muestras (operaciones similares a transposición). |
soptoCHOP | 24 | Lee atributos de puntos o primitivas SOP en canales. |
sortCHOP | 16 | Ordena canales o sus muestras por valor o nombre. |
speedCHOP | 22 | Integra un canal de velocidad en posición, o escala el flujo del tiempo. |
st2110deviceCHOP | 31 | Expone datos de audio y auxiliares de un dispositivo de video IP ST 2110 como canales. |
stretchCHOP | 18 | Estira o comprime canales a una nueva longitud mientras preserva su forma. |
stypeinCHOP | 16 | Recibe datos de seguimiento de cámara de un sistema Stype como canales de posición, orientación y lente. |
switchCHOP | 12 | Selecciona una de varias entradas por índice. |
syncinCHOP | 16 | Recibe 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. |
syncoutCHOP | 20 | Coordina la sincronización de fotogramas entre múltiples máquinas. |
tabletCHOP | 40 | Lee presión, inclinación y posición del lápiz de una tableta gráfica. |
timecodeCHOP | 40 | Representa un valor de código de tiempo como canales de hora/minuto/segundo/fotograma. |
timelineCHOP | 25 | Genera la posición actual de la línea de tiempo en fotogramas y segundos. |
timerCHOP | 73 | Un temporizador programable con segmentos, ciclos y pulsos de finalización para secuenciación. |
toptoCHOP | 39 | Muestrea píxeles de un TOP en canales. |
touchinCHOP | 23 | Recibe canales de otra instancia de TouchDesigner a través de la red. |
touchoutCHOP | 18 | Envía canales a otra instancia de TouchDesigner a través de la red. |
trailCHOP | 19 | Muestra un gráfico de historial de desplazamiento de sus canales de entrada para monitoreo. |
triggerCHOP | 46 | Genera una envolvente de ataque-decaída-sostenimiento-liberación cada vez que la entrada cruza un umbral. |
trimCHOP | 16 | Recorta canales a un tiempo de inicio y fin. |
waveCHOP | 30 | Genera 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)
| Herramienta | Parámetros | Descripción |
|---|---|---|
addSOP | 17 | Crea puntos y polígonos individuales, o conecta puntos existentes en nuevas primitivas. |
alembicSOP | 11 | Carga geometría desde un archivo de caché Alembic (.abc). |
alignSOP | 17 | Alinea geometrías de entrada entre sí mediante caja delimitadora o transformación. |
armSOP | 34 | Construye o edita un brazo/cadena articulada de geometría. |
attributeSOP | 13 | Crea, renombra, elimina o edita atributos de puntos, vértices, primitivas y detalles. |
attributecreateSOP | 4 | Añade nuevos atributos a la geometría e inicializa sus valores. |
basisSOP | 30 | Edita la base paramétrica (vector de nudos y orden) de curvas y superficies NURBS. |
blendSOP | 9 | Mezcla posiciones de puntos entre entradas topológicamente coincidentes por peso, para interpolación de formas. |
bonegroupSOP | 3 | Crea grupos de puntos basados en regiones de captura de huesos esqueléticos. |
booleanSOP | 6 | Calcula unión, intersección o diferencia booleana entre mallas sólidas. |
boxSOP | 18 | Genera una caja o cubo con tamaño y divisiones ajustables. |
bridgeSOP | 15 | Construye una superficie de piel que conecta bucles de bordes o perfiles. |
cacheSOP | 9 | Mantiene un buffer de fotogramas de geometría en memoria para reproducción. |
capSOP | 16 | Tapa los extremos abiertos de tubos y superficies con caras planas o redondeadas. |
captureSOP | 9 | Asigna pesos de captura que vinculan puntos de geometría a un esqueleto para skinning. |
captureregionSOP | 9 | Define la región de influencia de captura de un hueso. |
carveSOP | 20 | Corta, rebanada o extrae porciones de curvas y superficies a lo largo de sus coordenadas paramétricas. |
choptoSOP | 10 | Crea o impulsa geometría desde canales CHOP, por ejemplo animando puntos a partir de datos de canal. |
circleSOP | 16 | Genera un círculo o arco como curva o polígono. |
claySOP | 24 | Deforma una superficie empujando y tirando de sus puntos de control como arcilla de modelado. |
clipSOP | 8 | Recorta geometría contra un plano, manteniendo un lado o dividiendo en el corte. |
convertSOP | 17 | Convierte geometría entre tipos como polígono, malla, NURBS y Bezier. |
copySOP | 35 | Copia geometría sobre puntos de plantilla o con una pila de transformaciones, el SOP central de instanciación/estampado. |
creepSOP | 5 | Desliza y deforma geometría para que se arrastre a lo largo de la superficie de otra. |
curveclaySOP | 13 | Esculpe curvas tirando de sus puntos de control. |
curvesectSOP | 11 | Encuentra intersecciones entre curvas y superficies, generando los puntos de cruce. |
dattoSOP | 15 | Construye geometría (puntos y primitivas) a partir de las filas de una tabla DAT. |
deformSOP | 6 | Deforma geometría capturada para que siga su esqueleto (el paso de deformación por skinning). |
deleteSOP | 21 | Elimina 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. |
divideSOP | 14 | Subdivide, triangula o divide en ladrillos polígonos para cambiar su teselación. |
extrudeSOP | 21 | Extruye caras o bordes para añadir profundidad y biselado. |
facetSOP | 14 | Controla normales y facetado, unificando puntos y afilando bordes para sombreado plano o suave. |
fileinSOP | 5 | Carga geometría desde un archivo como OBJ. |
filletSOP | 16 | Crea superficies o curvas de filete redondeadas entre dos entradas. |
fitSOP | 17 | Ajusta una curva o superficie NURBS a través de un conjunto de puntos. |
forceSOP | 8 | Define un campo de fuerza al que responden sistemas de partículas y metaballs. |
fractalSOP | 9 | Desplaza puntos con ruido fractal para rugosizar una superficie. |
gridSOP | 18 | Genera una cuadrícula plana de puntos o polígonos con filas y columnas ajustables. |
groupSOP | 46 | Crea 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. |
holeSOP | 6 | Convierte caras encerradas en agujeros dentro de su cara circundante. |
inSOP | 3 | La toma de entrada de un componente SOP. |
inversecurveSOP | 2 | Calcula una solución de curva inversa para geometría encadenada. |
isosurfaceSOP | 6 | Construye una superficie en un valor constante de una función 3D implícita. |
joinSOP | 12 | Une múltiples curvas o superficies en primitivas continuas únicas. |
jointSOP | 12 | Crea un esqueleto de articulaciones y huesos para rigging. |
latticeSOP | 6 | Deforma geometría moviendo los puntos de una jaula de lattice circundante. |
limitSOP | 39 | Coloca geometría (esferas, cajas o plantillas) en puntos de datos o límites de valores. |
lineSOP | 5 | Crea una polilínea recta entre extremos con un número elegido de puntos. |
linethickSOP | 9 | Da grosor a polilíneas, convirtiéndolas en cintas o tubos. |
lodSOP | 9 | Cambia entre versiones de nivel de detalle de geometría según la distancia de visualización. |
lsystemSOP | 35 | Cultiva plantas procedimentales y fractales a partir de un conjunto de reglas L-system. |
magnetSOP | 13 | Deforma geometría dentro de una región de caída usando un imán con forma de metaball. |
materialSOP | 2 | Asigna un material a primitivas de geometría. |
mergeSOP | 2 | Fusiona varias geometrías en una. |
metaballSOP | 9 | Crea metaballs que se mezclan en superficies suaves y abultadas. |
modelSOP | 1 | Mantiene geometría de modelo editable a mano. |
noiseSOP | 20 | Desplaza puntos con ruido coherente animado. |
nullSOP | 1 | Una toma de paso, el punto final estable recomendado de una cadena de geometría. |
objectmergeSOP | 3 | Trae geometría de otros SOPs por ruta, aplicando opcionalmente sus transformaciones de objeto. |
outSOP | 4 | La toma de salida de un componente SOP. |
particleSOP | 39 | Un sistema de partículas CPU heredado impulsado por fuerzas y colisiones. |
pointSOP | 43 | Edita posiciones y atributos de puntos directamente, incluyendo la creación de atributos estándar. |
polyloftSOP | 13 | Lofta superficies poligonales a través de una serie de curvas de sección transversal. |
polypatchSOP | 12 | Construye un parche spline suave a partir de una malla de control poligonal. |
polyreduceSOP | 16 | Reduce el recuento de polígonos preservando la forma general. |
polysplineSOP | 11 | Ajusta splines suaves a través de bordes de polígonos para redondearlos. |
polystitchSOP | 7 | Cose juntas costuras y grietas entre superficies poligonales. |
primitiveSOP | 34 | Edita atributos y transformaciones a nivel de primitiva. |
profileSOP | 14 | Extrae y edita curvas de perfil que se encuentran en superficies. |
projectSOP | 21 | Proyecta curvas sobre una superficie para crear curvas de perfil. |
railsSOP | 16 | Barre curvas de sección transversal a lo largo de una o dos curvas guía. |
raySOP | 16 | Proyecta puntos sobre una superficie objetivo a lo largo de una dirección de rayo, un shrink-wrap. |
rectangleSOP | 16 | Crea una curva o polígono rectangular. |
refineSOP | 18 | Refina curvas y superficies añadiendo puntos o elevando su orden sin cambiar la forma. |
resampleSOP | 11 | Remuestrea curvas en puntos o segmentos espaciados uniformemente. |
skinSOP | 12 | Construye una superficie de piel a través de un conjunto de curvas de perfil. |
sphereSOP | 23 | Genera una esfera como polígonos, malla o NURBS. |
textSOP | 30 | Crea geometría de texto 3D a partir de una fuente y una cadena. |
transformSOP | 27 | Traslada, rota y escala geometría. |
COMP — componentes / 3D / contenedores (30)
| Herramienta | Parámetros | Descripción |
|---|---|---|
actorCOMP | 153 | Un actor de cuerpo rígido o blando que participa en una simulación de física Bullet. |
ambientlightCOMP | 86 | Añade luz ambiental uniforme a una escena 3D. |
animationCOMP | 43 | Un componente que mantiene y edita canales de animación de fotogramas clave. |
annotateCOMP | 55 | Una caja de comentarios redimensionable para anotar y organizar la red. |
baseCOMP | 22 | Un contenedor de propósito general sin panel, usado para agrupar y modularizar operadores. |
blendCOMP | 138 | Mezcla las transformaciones de varios componentes de objeto por peso, un padre ponderado. |
boneCOMP | 140 | Un hueso individual dentro de una jerarquía esquelética para rigging de personajes. |
bulletsolverCOMP | 137 | El solucionador de dinámica Bullet que avanza una simulación de física de cuerpos rígidos. |
buttonCOMP | 132 | Un widget de panel de botón clicable que emite un valor de estado. |
cameraCOMP | 84 | Una cámara 3D que define la vista y proyección usadas para renderizar una escena. |
camerablendCOMP | 100 | Mezcla suavemente entre varias cámaras. |
containerCOMP | 122 | Un contenedor de panel que organiza otros paneles para construir interfaces de usuario. |
engineCOMP | 43 | Ejecuta un componente .tox exportado en un proceso separado vía TouchEngine para aislamiento y escalado. |
environmentlightCOMP | 92 | Proporciona iluminación ambiental basada en imágenes para renderizado físicamente basado. |
fbxCOMP | 161 | Importa una escena FBX, trayendo su geometría, materiales y jerarquía. |
fieldCOMP | 136 | Un widget de campo de entrada de texto para entrada de usuario. |
geometryCOMP | 124 | Coloca geometría SOP en la escena 3D con transformación, material y banderas de renderizado, el nodo de objeto que un Render TOP dibuja. |
geotextCOMP | 163 | Renderiza texto 3D como geometría de escena. |
handleCOMP | 134 | Un manipulador interactivo en el viewport 3D. |
lightCOMP | 117 | Una fuente de luz 3D (puntual, cónica o distante) que ilumina una escena renderizada. |
listCOMP | 130 | Un widget de panel de lista o cuadrícula scriptable para filas de elementos. |
nullCOMP | 124 | Una transformación de objeto de paso utilizada como padre estable o toma en la jerarquía de objetos. |
opviewerCOMP | 127 | Incrusta el visor de otro operador dentro de un panel. |
parameterCOMP | 137 | Un componente que presenta parámetros personalizados como un panel de interfaz de usuario. |
replicatorCOMP | 41 | Crea 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. |
sliderCOMP | 139 | Un widget de panel deslizante unidimensional o bidimensional. |
textCOMP | 175 | Un widget de panel de visualización de texto. |
timeCOMP | 33 | Define una línea de tiempo local independiente (velocidad de fotogramas y rango) para una subred. |
usdCOMP | 158 | Importa una escena Universal Scene Description (USD). |
windowCOMP | 53 | Define una ventana de salida o pantalla completa en un monitor elegido. |
MAT — materiales / sombreado (10)
| Herramienta | Parámetros | Descripción |
|---|---|---|
constantMAT | 48 | Un material sin iluminación que sombrea superficies con un solo color plano y alfa. |
depthMAT | 34 | Sombrea superficies por su profundidad para uso en pases de profundidad y efectos. |
glslMAT | 78 | Un 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. |
inMAT | 36 | La toma de entrada de un componente de material. |
lineMAT | 109 | Un material para renderizar líneas y wireframes con control de ancho y color. |
nullMAT | 34 | Una toma de material de paso. |
outMAT | 37 | La toma de salida de un componente de material. |
pbrMAT | 185 | Un material físicamente basado que usa metalness, rugosidad y mapas de textura para iluminación realista. |
phongMAT | 213 | Un 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. |
pointspriteMAT | 55 | Renderiza puntos como sprites texturizados orientados a la cámara. |
DAT — datos / tablas / referencias (51)
| Herramienta | Parámetros | Descripción |
|---|---|---|
artnetDAT | 9 | Recibe universos DMX Art-Net en una tabla. |
audiodevicesDAT | 10 | Lista los dispositivos de entrada y salida de audio disponibles. |
choptoDAT | 9 | Escribe canales CHOP en una tabla de muestras. |
clipDAT | 13 | Almacena metadatos de clips en forma de tabla. |
convertDAT | 9 | Convierte entre representaciones de tabla y texto como CSV, TSV y texto libre. |
dmxmapDAT | 13 | Define un mapeo de canales DMX a ranuras nombradas. |
errorDAT | 15 | Recopila los errores y advertencias reportados por los operadores en el proyecto. |
etherdreamDAT | 8 | Controla un DAC láser Ether Dream. |
evaluateDAT | 30 | Evalú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. |
examineDAT | 21 | Inspecciona variables y objetos para depuración; su parámetro de expresión se omite de esta superficie solo de datos. |
fifoDAT | 11 | Una tabla primero en entrar, primero en salir que descarta las filas más antiguas a medida que llegan nuevas. |
fileinDAT | 9 | Lee texto o una tabla desde un archivo o URL. |
fileoutDAT | 8 | Escribe el contenido de un DAT en un archivo. |
folderDAT | 38 | Lista los archivos y carpetas de un directorio como una tabla. |
inDAT | 7 | La toma de entrada de un componente DAT. |
infoDAT | 8 | Reporta los metadatos e información de otro operador como una tabla. |
insertDAT | 13 | Inserta filas o columnas en una tabla; su parámetro de expresión de reemplazo se omite de esta superficie solo de datos. |
jsonDAT | 12 | Analiza 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. |
keyboardinDAT | 17 | Registra eventos de teclas en una tabla. |
mediafileinfoDAT | 10 | Reporta metadatos (códec, resolución, duración) sobre un archivo multimedia. |
mergeDAT | 10 | Fusiona tablas o texto de varias entradas, por filas o columnas. |
midieventDAT | 21 | Registra eventos MIDI entrantes como filas de tabla. |
midiinDAT | 22 | Registra mensajes MIDI entrantes en una tabla. |
monitorsDAT | 9 | Lista los monitores conectados y sus propiedades. |
mqttclientDAT | 21 | Un cliente MQTT que publica y se suscribe a temas. |
multitouchinDAT | 23 | Reporta eventos de contacto multitáctil como una tabla. |
ndiDAT | 8 | Lista las fuentes de video NDI disponibles en la red. |
nullDAT | 5 | Una toma de paso para tablas. |
opfindDAT | 65 | Busca en la red y lista operadores que coinciden con criterios de nombre, tipo o propiedad. |
oscinDAT | 22 | Recibe mensajes OSC como filas de tabla. |
oscoutDAT | 22 | Envía filas de tabla como mensajes OSC. |
outDAT | 8 | La toma de salida de un componente DAT. |
parameterDAT | 45 | Expone los parámetros de un operador como una tabla editable de nombres y valores. |
performDAT | 22 | Reporta datos de rendimiento cuadro por cuadro como una tabla. |
poptoDAT | 23 | Escribe atributos POP en una tabla. |
renderpickDAT | 38 | Reporta resultados de selección 3D (geometría y posición de impacto) como una tabla. |
reorderDAT | 11 | Reordena las filas o columnas de una tabla. |
serialDAT | 20 | Lee y escribe texto en un dispositivo serie. |
serialdevicesDAT | 9 | Lista los puertos serie disponibles. |
socketioDAT | 15 | Un cliente Socket.IO para mensajería web en tiempo real. |
soptoDAT | 10 | Escribe atributos SOP en una tabla. |
tableDAT | 18 | Una 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. |
tcpipDAT | 19 | Un cliente o servidor TCP/IP que intercambia mensajes de texto. |
textDAT | 10 | Almacena texto de formato libre, a menudo usado para guardar código fuente de shaders o scripts referenciado por otros operadores. |
udpinDAT | 19 | Recibe datagramas UDP como filas de tabla. |
videodevicesDAT | 10 | Lista los dispositivos de captura de video disponibles. |
webclientDAT | 24 | Realiza solicitudes HTTP y captura las respuestas. |
webrtcDAT | 14 | Maneja señalización WebRTC y mensajería de canal de datos. |
webserverDAT | 15 | Aloja un servidor HTTP y WebSocket para clientes externos. |
websocketDAT | 16 | Un cliente o servidor WebSocket para mensajería bidireccional. |
xmlDAT | 23 | Analiza XML o HTML en una tabla navegable. |
POP — puntos / partículas (GPU) (96)
| Herramienta | Parámetros | Descripción |
|---|---|---|
accumulatePOP | 13 | Acumula o integra atributos de puntos a lo largo de los fotogramas. |
alembicoutPOP | 28 | Escribe geometría de puntos en un caché de Alembic. |
analyzePOP | 25 | Reduce atributos de puntos a estadísticas resumidas. |
attributePOP | 30 | Crea, edita o elimina atributos de puntos. |
attributecombinePOP | 12 | Combina atributos coincidentes de múltiples entradas de puntos. |
attributeconvertPOP | 11 | Convierte el tipo o la precisión numérica de un atributo. |
blendPOP | 18 | Mezcla atributos de puntos entre entradas según un peso. |
boxPOP | 23 | Genera puntos dispuestos en forma de caja. |
cachePOP | 14 | Almacena en búfer fotogramas de datos de puntos para su reproducción. |
cacheblendPOP | 14 | Mezcla entre fotogramas almacenados en caché de datos de puntos. |
cacheselectPOP | 9 | Selecciona un fotograma específico almacenado en caché de datos de puntos. |
choptoPOP | 24 | Crea puntos a partir de datos de canales CHOP. |
circlePOP | 22 | Genera puntos dispuestos en un círculo. |
connectivityPOP | 11 | Etiqueta puntos según el componente conectado al que pertenecen. |
convertPOP | 6 | Convierte geometría de puntos entre representaciones. |
copyPOP | 46 | Copia puntos sobre otros puntos o con transformaciones, para instanciación. |
curvePOP | 36 | Genera una curva descrita por puntos. |
dattoPOP | 47 | Construye puntos a partir de las filas de un DAT. |
deletePOP | 36 | Elimina puntos seleccionados por grupo o condición. |
dimensionPOP | 8 | Mide o establece las dimensiones delimitadoras del conjunto de puntos. |
dmxfixturePOP | 25 | Mapea puntos a luminarias de iluminación DMX. |
dmxoutPOP | 31 | Envía datos de puntos como DMX. |
extrudePOP | 17 | Extruye geometría de puntos para añadir profundidad. |
facetPOP | 18 | Ajusta normales y facetado de geometría de puntos. |
feedbackPOP | 11 | Realimenta la salida de puntos para procesamiento recursivo con retardo de fotogramas. |
fieldPOP | 47 | Crea o muestrea un campo espacial sobre puntos. |
fileinPOP | 12 | Carga puntos desde un archivo. |
fileoutPOP | 23 | Escribe puntos en un archivo. |
forceradialPOP | 34 | Aplica una fuerza radial (atracción/repulsión) a los puntos. |
glslPOP | 62 | Ejecuta un programa de cómputo GLSL sobre puntos, con el código fuente del programa suministrado a través de un DAT referenciado. |
glsladvancedPOP | 119 | Un operador de puntos GLSL de múltiples búferes para flujos de trabajo de cómputo avanzados, con fuente de DATs referenciados. |
glslcopyPOP | 57 | Usa un programa GLSL para impulsar la copia o instanciación de puntos. |
glslselectPOP | 7 | Selecciona puntos usando un programa GLSL. |
gridPOP | 26 | Genera puntos dispuestos en una cuadrícula. |
groupPOP | 42 | Agrupa puntos por condición o región. |
histogramPOP | 14 | Calcula un histograma de los valores de un atributo. |
importselectPOP | 28 | Selecciona e importa un subconjunto de datos de puntos. |
inPOP | 7 | La toma de entrada de un componente POP. |
limitPOP | 23 | Limita atributos de puntos a un rango. |
linePOP | 31 | Genera puntos dispuestos en una línea. |
linebreakPOP | 20 | Divide polilíneas en segmentos separados. |
linedividePOP | 34 | Divide polilíneas en más segmentos. |
linemetricsPOP | 59 | Mide la longitud de línea y métricas relacionadas por punto. |
lineresamplePOP | 18 | Remuestrea polilíneas en puntos espaciados uniformemente. |
linesmoothPOP | 30 | Suaviza polilíneas para reducir variaciones bruscas. |
lookupattributePOP | 23 | Busca valores de atributos usando un atributo de índice. |
lookupchannelPOP | 24 | Muestrea un canal CHOP por punto como búsqueda. |
lookuptexturePOP | 28 | Muestrea una textura (TOP) por punto para leer colores o datos en atributos. |
mathPOP | 26 | Realiza aritmética y remapeo de rango en atributos de puntos. |
mathcombinePOP | 52 | Combina atributos con una operación matemática. |
mathmixPOP | 25 | Mezcla atributos mediante un factor de fusión. |
mergePOP | 11 | Fusiona varios conjuntos de puntos en uno. |
neighborPOP | 25 | Encuentra puntos vecinos dentro de un radio o recuento. |
noisePOP | 49 | Aplica ruido coherente a posiciones o atributos de puntos. |
normalPOP | 27 | Calcula normales de puntos. |
normalizePOP | 22 | Normaliza atributos vectoriales o reescala valores a un rango. |
nullPOP | 5 | Una toma de paso para cadenas de puntos. |
outPOP | 8 | La toma de salida de un componente POP. |
particlePOP | 41 | Una simulación de partículas GPU que avanza puntos bajo fuerzas y reglas. |
patternPOP | 35 | Genera un patrón de valores con forma a través de puntos. |
phaserPOP | 23 | Aplica un desplazamiento basado en fase que anima valores a través de puntos. |
planePOP | 19 | Genera puntos dispuestos en un plano. |
pointPOP | 11 | Edita posiciones y atributos de puntos directamente. |
pointfileinPOP | 33 | Carga un archivo de nube de puntos (como PLY) en puntos, el punto de entrada para datos escaneados. |
pointgeneratorPOP | 26 | Genera un número especificado de puntos para sembrar un sistema. |
polygonizePOP | 22 | Construye geometría de superficie poligonal a partir de puntos. |
primitivePOP | 21 | Edita atributos a nivel de primitiva de geometría de puntos. |
projectionPOP | 22 | Proyecta puntos usando un mapeo de proyección. |
proximityPOP | 21 | Calcula relaciones de proximidad y vecino más cercano entre puntos. |
quantizePOP | 19 | Ajusta atributos de puntos a una cuadrícula o tamaño de paso. |
randomPOP | 36 | Asigna valores aleatorios a atributos de puntos. |
rayPOP | 37 | Proyecta puntos sobre una superficie objetivo a lo largo de rayos. |
rectanglePOP | 23 | Genera puntos dispuestos como un rectángulo. |
rerangePOP | 19 | Remapea un atributo de un rango de valores a otro. |
revolvePOP | 12 | Revoluciona un perfil de puntos alrededor de un eje para formar una superficie. |
selectPOP | 9 | Referencia puntos de otro POP por ruta. |
skinPOP | 9 | Crea una piel de superficie a través de curvas de puntos. |
skindeformPOP | 18 | Deforma puntos para seguir un esqueleto (skinning). |
soptoPOP | 10 | Convierte geometría SOP en puntos. |
sortPOP | 27 | Ordena puntos por valor, posición o atributo. |
spherePOP | 33 | Genera puntos dispuestos en una esfera. |
sprinklePOP | 16 | Dispersa puntos a través de una superficie o volumen. |
subdividePOP | 9 | Subdivide geometría de puntos para mayor resolución. |
switchPOP | 14 | Selecciona una de varias entradas de puntos por índice. |
textPOP | 37 | Genera puntos que describen texto. |
texturemapPOP | 32 | Asigna o calcula coordenadas de textura para puntos. |
topologyPOP | 61 | Construye o edita la conectividad/topología de geometría de puntos. |
toptoPOP | 45 | Crea puntos desde un TOP, convirtiendo píxeles en puntos posicionados. |
torusPOP | 24 | Genera puntos dispuestos en un toro. |
tracePOP | 30 | Traza las formas de una imagen en puntos o curvas. |
trailPOP | 28 | Registra las estelas de movimiento de puntos a lo largo del tiempo. |
transformPOP | 48 | Traslada, rota y escala puntos. |
triangulatePOP | 16 | Triangula puntos en una malla (estilo Delaunay). |
trigPOP | 17 | Aplica funciones trigonométricas a atributos de puntos. |
tubePOP | 24 | Genera puntos dispuestos como un tubo. |
twistPOP | 19 | Aplica 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ónsec*/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ícitamenteallow_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 herramientas — docs/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_referenceresponde "¿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
- docs/INSTALL.md — configuración completa, armado y configuración del cliente MCP.
- docs/GUIDE.md — el manual más profundo de cómo usar: el modelo mental, el bucle de trabajo y las convenciones que lo hacen funcionar.
- docs/HOWTO.md — recetas cortas de tareas "¿cómo hago…?" hacia la biblioteca de flujos de trabajo.
- docs/RUNBOOK.md — operación diaria: armado, directorio de trabajo, banderas de consentimiento, el modelo de recarga.
- docs/TROUBLESHOOTING.md — síntoma → causa → solución para los modos de fallo comunes.
- docs/TESTING.md — cómo ejecutar las capas de prueba del ejecutor, la puerta de enlace y la consistencia.
- docs/TOOL_CATALOG.md — el catálogo completo por herramienta.
- ARCHITECTURE.md · SECURITY.md · CONTRIBUTING.md · CHANGELOG.md.
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/.usden 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 medianteemitmap, 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 UVremapTOPcon 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, conrecord/activeapagados 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 puentetimerCHOP → 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_partoma componentes crudos. Una herramienta de creación exponecolor:[r,g,b] y tupletsresolution; pasar nombres de componentes crudos (colorr) o un envoltoriopars{}a una herramienta de creación los descarta silenciosamente. Usaset_parparacolorr/txcrudos. - Un
geometryCOMPnuevo incluye un hijo torus predeterminado que lleva los flags de render/display. Bórralo (condelete_op) y activa el flag de render de tufileinSOPimportado, 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
constantTOPoscuro para un pase de belleza legible. - La trampa de resolución 256/1280 es real. Los generadores (
noiseTOP,rampTOP) heredan un predeterminado pequeño; estableceoutputresolution=custom+resolutionw/hpara 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_chopmaneja esto; una exportación manual aún lo necesita. import_segmented_modelfuerza 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ón | Dónde | Descripción |
|---|---|---|
TDMCP_GW_HEADLESS | env (config del cliente) | 1 = ejecutar el binario como gateway MCP stdio sin cabeza; sin establecer = abrir la ventana de GUI. |
TDMCP_REPO | env (config del cliente) | La ruta de clonación, para que el gateway resuelva sus datos reference/ incluidos de manera determinista. |
working_dir | GUI → Directorio de trabajo → Aplicar | La 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 / port | arm.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_glsl | Alternancia de consentimiento GUI → arm.json | Flags de consentimiento para los dos carriles de código (predeterminado apagado). |
allow_highres | arm.json | Omitir el techo de magnitud de renderizado impuesto (predeterminado apagado). |
min_action_interval_ms | arm.json | El 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 operadoresscript/execute/cplusplusyevaluateDAT), 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_pargenérico, el límite real es elcheck_par_alloweddel 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 comoX-TDMCP-Tokeny comparado consecrets.compare_digest. Las solicitudes de origen cruzado (no bucle de retornoOrigin/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.jsonfija con hash cada.pydel ejecutor; el armado ydev_reloadverifican 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/activeapagados; 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) yexpr_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_bridgey sus alternancias de GUI son rechazados porassert_writableen 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_highrescon puerta humana — así que la entrega legítima de 4K/8K pasa, pero unset_pardescontrolado 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/healthresponde. - La configuración del cliente MCP apunta al
touchdesigner-bridge-mcp.execompilado conTDMCP_GW_HEADLESSestablecido en1(sin él, el binario lanza su GUI y el apretón de manos nunca se completa). TDMCP_REPOapunta al clon (la carpeta que contienereference/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 enarm.json).
Licencia
Este proyecto está bajo doble licencia:
- Uso no comercial — personal, educativo, de investigación y evaluación — es gratuito bajo la Licencia No Comercial PolyForm 1.0.0.
- Uso comercial, empresarial y de producción requiere una licencia comercial paga separada — consulta COMMERCIAL-LICENSE.md para obtenerla.
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.