touchdesigner-bridge-mcp

Um servidor MCP somente de dados que controla o TouchDesigner com integração ao Claude Desktop

Documentação

touchdesigner-bridge-mcp

Dirija o TouchDesigner a partir de um chat de IA — uma superfície de controle somente-dados, com segurança em primeiro lugar, para criar conteúdo de projeção mapeada, sem caminho de código arbitrário.

Um servidor MCP (Model Context Protocol) nativo do Windows que permite que um cliente de chat de IA construa redes de operadores do TouchDesigner — por meio de um catálogo fixo de ferramentas tipadas e validadas por esquema, sem caminho estilo execute_python. O assistente monta e ajusta o grafo de operadores (TOPs, CHOPs, SOPs, COMPs, MATs, DATs, POPs) que produz o vídeo mapeado para uma superfície física; você — o humano na máquina — dispara os cooks e renders e decide quando a ponte está armada. Ela foi construída para um único trabalho: conteúdo de projeção mapeada em fachadas de edifícios externos, desde renders 3D de fachada e efeitos de textura generativos até coreografia por seção, keystone/edge-blend de projetores, controle DMX/show e a entrega somente-por-fio para um servidor de mídia (Pixera / disguise). Um único binário roda junto ao TouchDesigner e ao seu cliente de IA; isso, mais uma linha colada no TouchDesigner, é toda a instalação.

Status: v0.1.0 — um gateway MCP em Rust mais um executor Python dentro do TouchDesigner, modelado a partir da ponte Houdini do autor. Alvo: uma instalação licenciada do TouchDesigner, build 2023.11k+ ou 2025.30k+. O pipeline é prioritário para AMD — operadores exclusivos NVIDIA/CUDA estão intencionalmente fora do escopo porque não podem ser testados no hardware alvo. Prioridade para Windows.


Início rápido

Novo nisso / não é programador? Você não precisa viver no terminal. Para começar, basta: compilar (ou obter) um programa, clicar em alguns botões na janela dele, iniciar o TouchDesigner e colar uma pequena linha no Textport, e então colar um bloco JSON no seu cliente de IA. Esse é todo o trabalho. Os Passos 1–5 numerados abaixo detalham cada parte.

O que você precisará em mãos: um TouchDesigner licenciado (2023.11k+ ou 2025.30k+), um PC com Windows e um cliente de IA que fale MCP (Claude Desktop, etc.). Uma pasta no seu disco se torna o diretório de trabalho que a IA pode ler e escrever — você a escolhe no Passo 2.

Três movimentos para uma configuração funcional (detalhes completos nos Passos 1–5):

  1. Obtenha o gateway — o único programa que conecta sua IA ao TouchDesigner. Ou baixe o touchdesigner-bridge-mcp.exe pré-compilado dos Releases (sem programação), ou compile a partir do código-fonte (cargo build --release --manifest-path gateway/Cargo.toml, requer o toolchain Rust). É um único arquivo que é tanto uma pequena GUI quanto o servidor MCP headless.
  2. Configure e arme — execute o gateway (ele abre uma GUI), defina seu diretório de trabalho e clique em Aplicar, então no TouchDesigner cole uma linha de armamento no Textport (Alt+T) para armar o executor.
  3. Conecte seu cliente de IA — cole um pequeno bloco JSON na configuração dele apontando para o binário do gateway, reinicie completamente o cliente e execute a verificação do Passo 5 para confirmar que a IA consegue ver sua cena do TouchDesigner.

Caminho rápido: python scripts/setup.py compila o gateway e imprime sua configuração do Claude Desktop preenchida e seu comando de armamento do Textport com caminhos reais para esta máquina.


Por que é diferente

A maioria dos servidores MCP de TouchDesigner/Blender/Houdini controla o aplicativo enviando uma ferramenta estilo execute_python — execução de código arbitrário por design. Este é o inverso:

  • Somente-dados por construção. O assistente só pode chamar um registro fixo de 544 ferramentas tipadas e validadas. Deliberadamente não há ferramenta de código arbitrário, nenhum caminho de script bruto e nenhum destino de código de forma livre — eles simplesmente não existem no catálogo, então o limite não pode ser contornado. O conjunto de coisas que o servidor pode fazer é a lista enumerada de ferramentas. Um canário em tempo de execução (assert_no_rce_endpoints) se recusa a armar se qualquer handler sequer parecer um endpoint de execução de código, e uma barreira em tempo de compilação (catalog_never_exposes_rce_tools) falha o build se uma ferramenta que carrega código algum dia chegar ao catálogo.
  • Uma ferramenta de criar-e-configurar por operador. Cada tipo de operador do TouchDesigner tem sua própria ferramenta tipada (ex.: blurTOP, noiseCHOP, gridSOP) que cria o nó e define seus parâmetros em uma única chamada. Faixas são limitadas, parâmetros de menu são fixados ao seu conjunto de tokens e caminhos de arquivo são confinados ao diretório de trabalho antes que qualquer coisa seja escrita. Somente valores — nunca expressões ou código.
  • Você dispara o trabalho pesado. A ponte constrói e conecta grafos de render, gravação e envio de rede; a saída é somente-por-fio por design — o op de exportação é deixado com record/active desligados, e você (ou seu servidor de mídia) o dispara. O assistente nunca aciona um render, um bake de arquivo ou um envio ao vivo por conta própria.
  • Um único diretório de trabalho. Cada leitura e escrita de arquivo é confinada por realpath a uma única pasta de projeto que você escolhe. Nada fora dela é acessível, mesmo através de symlink ou junction.
  • Lanes de código validadas são a exceção, não uma porta de escape. Os únicos caminhos que admitem qualquer código são duas lanes estreitas, desligadas por padrão e com consentimento (uma lane GLSL em sandbox de GPU e uma lane experimental de expressão de parâmetro), cada uma validada antes de qualquer escrita e cada uma desligada a menos que um humano a habilite explicitamente. A IA não pode habilitar sua própria lane. Veja Segurança.

Aprenda TouchDesigner com uma IA

O TouchDesigner é profundo, e o momento da rede em branco é onde a maioria das pessoas desiste. Esta ponte é uma maneira guiada e de baixo risco de realmente aprendê-lo — você descreve o que quer, a IA constrói na sua sessão ao vivo, e você vê a rede de operadores tomar forma.

  • As ferramentas tipadas são o andaime de aprendizado. Cada capacidade é uma operação fixa, tipada e validada, então a IA só pode alcançar operadores reais do TouchDesigner — ela não pode sair do que o software faz ou inventar um passo que não existe. A lista de ferramentas espelha como o TouchDesigner é organizado (as famílias TOP/CHOP/SOP/ COMP/MAT/DAT/POP), então a superfície que limita a IA também ensina como o aplicativo é estruturado.
  • Você observa, não executa às cegas. Cada operação flui para o log de auditoria ao vivo da GUI do gateway, então você a IA trabalhar passo a passo em uma sessão do TouchDesigner em execução — a rede é construída diante de você, nó por nó.
  • Erros são visíveis e baratos. A superfície tipada e inspecionável torna qualquer nó errado ou parâmetro mal avaliado fácil de ver, desfazer e corrigir. Nada do que ela faz executa código arbitrário ou toca em arquivos fora da sua pasta de projeto, então um passo ruim é algo que você percebe e aprende, não um desastre.
  • A camada de receitas é um tutor embutido. recipe_reference carrega 66 receitas de fluxo de trabalho mapeadas por ferramenta com passos ordenados, o marco para plantar em cada estágio e a leitura barata para verificar — exemplos práticos de como conteúdo real de fachada é construído, não uma caixa preta.
  • Aprenda a escrever código, com segurança. Quando a arte precisa de um shader de GPU ou um parâmetro autocomputado, a IA apresenta a oportunidade e ensina — ela nunca busca código bruto por conta própria. glsl_reference ensina shaders GLSL, expr_reference a superfície de expressão de parâmetro e code_reference explica qual lane carrega o quê e o handshake de consentimento. O código entra apenas por uma lane consentida e validada (set_glsl / set_expr, desligada por padrão) ou pelas suas próprias mãos — os passos das receitas sinalizam esses pontos com uma dica glsl_opportunity / expr_opportunity.

Cobertura honesta — o que está no escopo e o que não está. Sem inflação:

  • Operadores: o catálogo expõe 509 ferramentas de operador — uma fatia quase completa do conjunto de operadores do TouchDesigner na máquina alvo (TOP 106 / CHOP 137 / SOP 79 / COMP 30 / MAT 10 / DAT 51 / POP 96). Operadores exclusivos NVIDIA/CUDA estão intencionalmente fora do escopo (não testáveis no alvo prioritário AMD).
  • Código: duas lanes validadas — shaders GLSL (set_glsl) e expressões de parâmetro Python de uma linha (set_expr) — vêm desligadas por padrão atrás de consentimento explícito; as ferramentas *_reference as ensinam e propõem texto. Python de DAT/callback é somente entrega por colagem — proposto e ensinado, nunca executado pela ponte.
  • Fluxos de trabalho: 66 receitas mapeadas por ferramenta em 10 domínios de projeção mapeada. A lane central de fachada (rig por seção, vídeo em superfícies, coreografia, mascaramento, entrada em tempo real, alinhamento, entrega de saída) é comprovada ao vivo; várias receitas (blend de múltiplos projetores e partes das lanes generativa / nuvem de pontos / câmera) são construídas e verificadas por mecanismo, mas ainda não exaustivamente testadas ao vivo — sinalizadas aqui em vez de superestimadas.
  • Deliberadamente fora do escopo: qualquer caminho de código arbitrário (não há nenhum, por design) e domínios do TouchDesigner fora da criação de conteúdo de projeção mapeada.

O que você pode fazer com ela

Uma vez que o gateway esteja em execução e o TouchDesigner esteja armado, você pode dizer coisas como estas diretamente no seu cliente de chat de IA (caminhos são relativos ao único diretório de trabalho que você configura):

  • "Renderize este edifício .obj através de uma câmera ortográfica em uma placa escura em 4K."
  • "Construa um campo generativo de ruído e feedback e use-o como conteúdo de fachada."
  • "Importe section_00.obj … section_07.obj e projete este clipe em cada superfície da fachada."
  • "Anime uma varredura de luz de baixo para cima revelando cada seção ao longo da timeline."
  • "Carregue esta nuvem de pontos de drone e instancie sprites nos pontos escaneados."
  • "Adicione um keystone de 4 cantos e conecte uma saída de arquivo HAP — eu pressiono record."
  • "Divida o composto final entre dois projetores sobrepostos com uma costura com blend."
  • "Acione fixtures Art-Net a partir de um CHOP em sincronia com a projeção (deixe somente-por-fio)."
  • "Conecte uma entrada OSC para acionar emissão por seção em tempo real."
  • "Configure um show de cues acionado por timer com GO, looping e sincronização de timecode LTC."
  • "Distorça o composto para seguir uma superfície curva com um remap de grade de controle."
  • "Quais operadores estão na cena agora e quanta memória o TouchDesigner está usando?"

Como 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

Dois processos compõem a ponte, e eles se encontram por meio de um único arquivo, ~/.touchdesigner-bridge-mcp/arm.json:

  • O gateway (gateway/, um binário Rust) — o único ponto de entrada da IA e toda a instalação do lado do cliente. Ele é tanto uma pequena GUI (defina o diretório de trabalho, veja um log de auditoria ao vivo de cada chamada) quanto o servidor MCP headless com o qual seu cliente de IA fala via stdio. Qual deles ele se torna é escolhido na inicialização pela variável de ambiente TDMCP_GW_HEADLESS. Ele possui o esquema tipado, a validação de entrada (clamp / enum / chave obrigatória / confinamento de caminho) e reduz cada ferramenta de operador a um create_op + set_par genérico antes de retransmiti-lo ao executor via HTTP em loopback. Este é o único ponto de estrangulamento de segurança na entrada.
  • O executor (td_executor/, Python) — um pequeno registro de handlers somente-dados armado dentro de uma sessão do TouchDesigner em execução por arm.py. Ele aplica solicitações validadas ao grafo de operadores na thread principal do TouchDesigner. Ele usa apenas a biblioteca padrão do Python e o módulo td embutido do próprio TouchDesigner — nenhum pacote de terceiros é empacotado ou redistribuído, nada para pip install.

Como o gateway expõe 509 ferramentas de operador tipadas, mas reduz cada uma delas aos mesmos dois verbos do executor (create_op + set_par), toda a superfície passa por um único guarda de parâmetros validado. Veja ARCHITECTURE.md.


Requisitos

  1. TouchDesigner — uma instalação licenciada, build 2023.11k+ ou 2025.30k+. O executor roda dentro do Python embutido do próprio TouchDesigner.
  2. Um toolchain Rust (estável) — apenas se você compilar o gateway manualmente; pule se você baixar o .exe pré-compilado das Releases. rustup.rs fornece o cargo.
  3. Python 3.10+ — apenas para executar o helper opcional scripts/setup.py (e a suíte de testes do executor). O executor em si roda no Python embutido do TouchDesigner, não neste.
  4. Um cliente MCP — Claude Desktop, ou qualquer cliente que possa iniciar um servidor MCP stdio.
  5. Windows — a plataforma principal. O pipeline alvo é prioritário para AMD; operadores exclusivos de NVIDIA/CUDA são intencionalmente fora do escopo.

Passo 1 — Obtenha o gateway

Prefere não programar? Baixe o touchdesigner-bridge-mcp.exe pré-compilado das Releases e vá direto para o Passo 2 — é o mesmo binário único que o build produz. Prefere compilar a partir do código-fonte (ou não há binário pré-compilado para sua configuração ainda)? Compile a partir do código-fonte:

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

Isso produz um arquivo:

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

O gateway é tanto a GUI quanto o servidor MCP headless. O modo em que ele roda é selecionado na inicialização por uma variável de ambiente, TDMCP_GW_HEADLESSnão definida abre a janela da GUI; 1 executa o servidor stdio headless. (Você normalmente não definirá isso manualmente: dar duplo clique no arquivo abre a GUI, e o bloco de configuração no Passo 3 define a flag headless para seu cliente de IA.)

O gateway/src/tools.rs é gerado a partir do reference/catalog.json, nunca editado manualmente.


Passo 2 — Configure via GUI

O diretório de trabalho é a única pasta da qual a ferramenta pode ler e na qual pode escrever — toda operação de arquivo do executor fica confinada dentro dele. Ele é deliberadamente não a árvore de código-fonte.

Execute o binário do gateway sem argumentos para abrir a GUI, então:

  1. Abra o painel Working dir, insira (ou cole) uma pasta existente e clique em Apply. Isso atualiza a raiz de confinamento ao vivo para toda chamada futura e faz merge-write do working_dir em ~/.touchdesigner-bridge-mcp/arm.json.
  2. Deixe a GUI em execução — o painel Status dela mostra uma pílula "Armed" e o build ao vivo do TouchDesigner assim que o executor (Passo 4) estiver acessível, e seu log de auditoria ao vivo permite que você observe cada chamada.

Alterar o diretório de trabalho depois é apenas Apply novamente — sem reiniciar, sem re-armar.

Nenhuma etapa de firewall é necessária. O Web Server DAT dentro do TouchDesigner vincula 127.0.0.1 apenas — nada escuta fora da máquina, então não há regra de entrada a adicionar.


Passo 3 — Registre com seu cliente MCP

Aponte seu cliente (ex.: Claude Desktop — edite %APPDATA%\Claude\claude_desktop_config.json) para o binário do gateway em modo headless. Copie o modelo em claude_desktop_config.example.json e substitua ambos os placeholders pelo caminho do seu clone (barras normais, mesmo no 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 as variáveis de ambiente são essenciais:

  • TDMCP_GW_HEADLESS=1 — obrigatória, ou o cliente abriria uma janela da GUI e o handshake do MCP nunca seria concluído.
  • TDMCP_REPO — o caminho do clone, para que o gateway encontre seus dados de referência incluídos (reference/recipes.json, reference/catalog.json) de forma determinística.

Feche e reabra completamente o cliente após editar a configuração.


Passo 4 — Arme o executor dentro do TouchDesigner

Abra o TouchDesigner, abra o Textport (Alt+T) e cole o comando de armar, substituindo o caminho do seu clone:

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())

Você não precisa digitar manualmente — a GUI mostra essa linha exata com um botão Copy arm command, e o python scripts/setup.py também a imprime.

O que armar faz (arm.py):

  • Verifica os arquivos do executor no disco contra td_executor/INTEGRITY.json antes de importá-los (evidência de adulteração com falha fechada).
  • Recusa armar se qualquer handler parecer um endpoint bruto de execução de código (o canário somente de dados).
  • Gera um token de sessão CSPRNG de 128 bits e grava token / port / working_dir (e preserva as flags de consentimento) em arm.json.
  • Monta um componente /mcp_bridge — um Web Server DAT em loopback 127.0.0.1:9980 mais um DAT de callbacks fino que carrega o pacote td_executor do disco — e adiciona alternâncias de consentimento na GUI (Allow Expr Lane / Allow GLSL Lane) que persistem em arm.json.

Re-arme a qualquer momento para recarregar a quente edições do executor no disco (ele limpa o cache de módulos primeiro). Remova a ponte com op('/mcp_bridge').destroy(). Para tornar o armar persistente por projeto, veja td_package/README.md.


Passo 5 — Verifique sua configuração

  1. Saúde do executor — com o TouchDesigner armado, abra em um navegador ou curl:

    http://127.0.0.1:9980/health
    

    O painel Status da GUI também mostra a pílula "Armed" e o build ao vivo do TouchDesigner assim que o executor estiver acessível.

  2. Ferramentas aparecem no cliente — em uma nova conversa do cliente, peça ao assistente para executar scene_info. Uma resposta bem-sucedida (a cena atual, o build do TouchDesigner) confirma que todo o caminho está ativo: cliente → gateway → loopback → executor → TouchDesigner.

Se ambos retornarem, você está conectado. Veja docs/INSTALL.md para o passo a passo completo, incluindo a ativação das pistas de código e solução de problemas.


Ferramentas disponíveis

544 ferramentas no total509 ferramentas de operador em 7 famílias do TouchDesigner mais 35 ferramentas utilitárias, listadas completamente abaixo (também em docs/TOOL_CATALOG.md). Cada ferramenta é um handler validado; nenhum caminho de código de forma livre existe. Para o esquema completo de parâmetros tipados de qualquer operador, pergunte à ferramenta operator_reference ao vivo na sessão (optype=<name>).

Cada ferramenta de operador cria e configura um tipo de operador em uma única chamada, e também aceita quatro argumentos reservados de posicionamento: op_name, parent_path (padrão /), pos_x, pos_y. As tabelas abaixo são o catálogo atual exato, gerado a partir de reference/catalog.json.

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

FerramentaParâmetrosDescrição
addTOP26Compõe duas imagens de entrada somando os valores de seus pixels, limitando canais que estouram; uma mistura aditiva simples frequentemente usada para clarear ou combinar passes de luz.
analyzeTOP19Reduz uma imagem a um único valor, linha ou coluna, calculando uma estatística como mínimo, máximo ou média entre os pixels.
antialiasTOP21Suaviza bordas irregulares e serrilhadas em uma imagem com um filtro de anti-aliasing pós-processamento.
blobtrackTOP37Detecta manchas brilhantes em uma imagem e relata suas posições e tamanhos, um rastreador óptico leve para instalações interativas.
blurTOP23Aplica um desfoque gaussiano ou de caixa; o parâmetro de largura do filtro define quantos pixels são calculados em média.
cacheTOP26Armazena um buffer contínuo de quadros recentes na GPU para que quadros anteriores possam ser reproduzidos ou amostrados por um Cache Select.
cacheselectTOP16Lê um quadro escolhido do buffer armazenado de um Cache TOP por índice.
channelmixTOP19Reconstrói cada canal de saída como uma mistura ponderada dos canais de entrada, útil para trocas de canais e matrizes de cores personalizadas.
choptoTOP19Converte canais CHOP em uma imagem, escrevendo valores de amostra em pixels para que dados numéricos possam ser visualizados ou alimentados a shaders.
chromakeyTOP29Remove uma cor de fundo escolhida (tela verde/azul) para produzir um matte alfa para composição.
circleTOP42Desenha um círculo ou elipse preenchido ou contornado diretamente como uma imagem.
compositeTOP34Camadas de múltiplas entradas juntas com uma operação de mistura selecionável, o equivalente multi-entrada dos TOPs Over/Add de duas entradas.
constantTOP23Gera uma imagem plana de uma cor sólida e alfa na resolução escolhida.
convolveTOP20Filtra a imagem com um kernel de convolução definido pelo usuário, fornecido como uma pequena matriz, para efeitos personalizados de nitidez/desfoque/bordas.
cornerpinTOP36Distorce a imagem arrastando seus quatro cantos para posições arbitrárias, o padrão keystone/quad-warp para alinhamento de projeção.
cropTOP23Extrai uma sub-região retangular da imagem, alterando a saída para esse recorte.
crossTOP27Faz uma transição cruzada entre duas entradas por um único valor de mistura.
cubemapTOP15Monta ou reorganiza as seis faces de um cubemap para mapeamento de ambiente e reflexos.
depthTOP23Extrai o buffer de profundidade de um Render TOP para que a distância da cena possa ser usada para névoa, profundidade de campo ou mascaramento.
differenceTOP26Gera a diferença absoluta por pixel entre duas entradas, útil para detecção de mudanças.
directdisplayoutTOP20Envia a imagem para um display diretamente conectado, ignorando o compositor da área de trabalho para saída de baixa latência.
directxinTOP15Recebe uma textura GPU compartilhada de outro aplicativo via superfícies compartilhadas DirectX.
directxoutTOP16Publica a imagem como uma textura DirectX compartilhada para outro aplicativo ler.
displaceTOP25Desloca a posição de busca de cada pixel usando uma segunda imagem como mapa de deslocamento, distorcendo a imagem.
edgeTOP25Detecta bordas medindo o contraste local, produzindo uma imagem de contorno.
embossTOP21Produz um efeito de relevo elevado e em relevo, sombreando a partir de gradientes de intensidade local.
feedbackTOP16Alimenta um resultado a jusante de volta ao gráfico um quadro depois, o bloco de construção para rastros, acumulação e loops de reação-difusão.
fitTOP27Redimensiona e ajusta a entrada à resolução de saída com um modo de ajuste/estiramento escolhido.
flipTOP18Inverte ou espelha a imagem horizontalmente e/ou verticalmente.
glslTOP59Executa um shader de fragmento GLSL personalizado sobre os pixels de saída, com o código-fonte do shader fornecido por meio de um Text DAT referenciado em vez de um valor de código inline.
glslmultiTOP59Um TOP de shader de fragmento GLSL que expõe múltiplas entradas de imagem para efeitos de múltiplas texturas.
hsvadjustTOP24Desloca a matiz e escala a saturação e o valor, o ajuste de cor padrão para tonalidade e vivacidade.
hsvtorgbTOP14Interpreta os canais de entrada como HSV e os converte para RGB.
inTOP16O ponto de entrada de um componente TOP, expondo uma imagem externa dentro da sub-rede.
insideTOP26Mantém a primeira entrada apenas onde o matte da segunda entrada é opaco (composição source-in).
kinectazureTOP46Captura fluxos de imagem de profundidade, cor e infravermelho de um sensor Azure Kinect.
layermixTOP34Mistura camadas empilhadas com opacidade e modos de mistura por camada.
layoutTOP36Organiza múltiplas entradas em uma única imagem de grade, dimensionada por linhas e colunas.
lensdistortTOP38Adiciona ou remove distorção de lente barril/almofada.
levelTOP45Ajusta brilho, contraste, gama, níveis de preto/branco e opacidade, o controle de tom versátil.
lookupTOP25Remapeia cada pixel por meio de uma tabela de consulta fornecida como uma segunda imagem, conduzindo gradações de cor e mapeamento de gradiente.
lumablurTOP21Desfoca por uma quantidade que varia com a luminância local, para que regiões claras ou escuras se espalhem mais.
lumalevelTOP32Ajusta níveis com base na luminância, útil para isolar realces ou sombras.
mathTOP37Realiza aritmética por pixel (adição, multiplicação, diferença e mais) entre entradas e constantes.
matteTOP16Aplica uma entrada como o matte alfa de outra para recortar uma forma.
mirrorTOP20Reflete a imagem em torno de um eixo escolhido para construir simetria caleidoscópica.
monochromeTOP18Colapsa a cor em um único canal de escala de cinza usando uma ponderação de luminância escolhida.
moviefileinTOP63Carrega e reproduz um arquivo de filme ou imagem estática, com parâmetros para o caminho do arquivo, taxa de reprodução e corte.
moviefileoutTOP70Grava o fluxo de imagem de entrada em um arquivo de filme ou sequência de imagens; esta ponte apenas conecta, o usuário aciona a gravação real.
multiplyTOP26Multiplica os valores de pixel de suas entradas, uma mistura de modulação/escurecimento.
ndiinTOP24Recebe vídeo pela rede como uma fonte NDI.
ndioutTOP26Publica a imagem na rede como um fluxo NDI.
noiseTOP41Gera imagens de ruído procedural (Perlin, simplex e outros) com transformação e harmônicos animáveis.
normalmapTOP20Deriva um mapa normal em espaço tangente a partir de uma imagem de altura ou escala de cinza para iluminação de detalhes de superfície.
notchTOP29Reproduz e controla um bloco de efeitos Notch (.dfxdll), expondo seus parâmetros expostos.
nullTOP14Um espaço reservado de passagem usado como um ponto de conexão estável no final de uma cadeia de imagens.
opencolorioTOP40Aplica uma transformação de espaço de cores OpenColorIO para pipelines com gerenciamento de cores.
opviewerTOP17Renderiza o visualizador de nó de outro operador em uma imagem para que qualquer operador possa ser visto como um TOP.
orbbecTOP31Captura fluxos de imagem de profundidade e cor de uma câmera de profundidade Orbbec.
orbbecselectTOP19Seleciona e extrai um fluxo de imagem, como profundidade ou cor, de um TOP Orbbec.
outTOP17O ponto de saída de um componente TOP, exportando uma imagem para fora da sub-rede.
outsideTOP26Mantém a primeira entrada apenas onde o matte da segunda entrada é transparente (composição source-out).
overTOP26Compõe a primeira entrada sobre a segunda usando mistura alfa-over padrão.
packTOP15Empacota dados de pixel em um layout ou formato de bits específico para transporte ou leitura de volta da GPU.
photoshopinTOP21Vincula-se ao vivo a um documento Photoshop, trazendo suas camadas como uma imagem.
pointfileinTOP56Carrega dados de arquivo de nuvem de pontos em uma textura onde cada pixel codifica a posição ou atributo de um ponto.
pointtransformTOP61Transforma dados de pontos 3D armazenados em uma textura, aplicando translação, rotação, escala ou uma matriz de alinhamento a cada ponto.
prefiltermapTOP15Pré-convolui um mapa de ambiente nos níveis de mip que um material PBR precisa para reflexos brilhantes.
projectionTOP18Converte entre layouts de projeção, como equiretangular, cubemap e olho de peixe.
rampTOP32Gera gradientes lineares, radiais ou circulares a partir de uma rampa de cores editável.
realsenseTOP40Captura fluxos de imagem de profundidade, cor e infravermelho de uma câmera de profundidade Intel RealSense.
rectangleTOP39Desenha um retângulo preenchido ou contornado com tamanho, posição e arredondamento de cantos ajustáveis.
remapTOP24Distorce a primeira entrada consultando coordenadas armazenadas nos pixels de uma segunda entrada.
renderTOP67Renderiza geometria 3D de uma câmera com luzes e materiais em uma imagem, o coração do caminho 3D-para-2D.
renderpassTOP56Adiciona um passe de renderização extra (como uma camada ou buffer separado) a um Render TOP.
renderselectTOP20Seleciona um buffer ou passe de saída de um Render TOP de múltiplas saídas.
rendersimpleTOP31Um render de nó único que agrupa câmera, luz e geometria para visualizações 3D rápidas.
renderstreaminTOP18Recebe quadros de um host disguise RenderStream, trazendo uma imagem renderizada externamente pela rede.
renderstreamoutTOP19Envia a imagem para um host disguise RenderStream como um fluxo de saída renderizado.
reorderTOP22Reorganiza, duplica ou preenche os canais RGBA das entradas.
resolutionTOP15Reamostra a imagem para uma nova resolução usando um filtro escolhido.
scalabledisplayTOP20Aplica uma calibração de warp-and-blend da Scalable Display Technologies para configurações de múltiplos projetores.
screenTOP26Compõe duas entradas com o modo de mistura Screen para um efeito de clareamento.
screengrabTOP27Captura a área de trabalho ou uma região de exibição em uma imagem.
sharedmeminTOP18Lê uma imagem de um bloco de memória compartilhada escrito por outro processo.
sharedmemoutTOP20Escreve a imagem em um bloco de memória compartilhada para outro processo ler.
slopeTOP24Calcula o gradiente local (inclinação) da imagem, frequentemente um precursor para mapas normais ou sombreamento de bordas.
spectrumTOP18Transforma a imagem de e para seu espectro de frequência via FFT para filtragem no domínio da frequência.
st2110inTOP31Recebe vídeo não comprimido por IP seguindo o padrão SMPTE ST 2110.
st2110outTOP47Transmite vídeo não comprimido por IP seguindo o padrão SMPTE ST 2110.
substanceTOP19Renderiza um material procedural Substance (.sbsar), expondo seus parâmetros publicados.
subtractTOP26Subtrai os pixels da segunda entrada da primeira.
switchTOP17Passa uma de várias entradas escolhidas por um índice, para comutação A/B e sequenciamento.
syphonspoutinTOP16Recebe uma textura GPU compartilhada via Syphon (macOS) ou Spout (Windows).
syphonspoutoutTOP16Publica a imagem como uma textura GPU compartilhada via Syphon (macOS) ou Spout (Windows).
textTOP78Renderiza texto em uma imagem com controle sobre fonte, tamanho, alinhamento e cor.
tileTOP36Organiza e repete a entrada na saída, com contagens de repetição ajustáveis, deslocamento, sobreposição e inversão para padrões contínuos.
touchinTOP20Recebe uma imagem de outra instância do TouchDesigner pela rede.
touchoutTOP20Envia a imagem para outra instância do TouchDesigner pela rede.
transformTOP30Translada, rotaciona, escala e organiza a imagem dentro de seu quadro.
underTOP26Compõe a segunda entrada sobre a primeira (o inverso de Over).
videodeviceinTOP55Captura vídeo ao vivo de uma câmera ou placa de captura.
videodeviceoutTOP35Envia a imagem para um dispositivo de vídeo SDI/HDMI ou outro hardware de vídeo.
videostreaminTOP31Recebe um fluxo de vídeo comprimido, como RTSP, RTMP ou SRT.
viosoTOP21Aplica uma calibração de warp-and-blend de projeção VIOSO para alinhamento de múltiplos projetores.
webrenderTOP34Renderiza uma página web ou URL em uma imagem usando um navegador embutido.

CHOP — canais / sinais / temporização (137)

FerramentaParâmetrosDescrição
abletonlinkCHOP28Sincroniza tempo, fase e batida com peers na rede via Ableton Link.
analyzeCHOP14Reduz canais a uma única estatística por canal, como média, máximo ou comprimento.
angleCHOP13Converte entre representações de ângulo, por exemplo graus, radianos, quaternions e vetores de direção.
attributeCHOP11Etiqueta canais com atributos como ordem de rotação ou tipo de quaternion que operadores downstream respeitam.
audiobandeqCHOP26Um equalizador gráfico multibanda que aumenta ou corta bandas de frequência fixas de um sinal de áudio.
audiobinauralCHOP14Espacializa áudio em um mix binaural (3D para fones de ouvido) a partir de posições de fonte e ouvinte.
audiodeviceinCHOP40Captura amostras de áudio de um dispositivo de entrada, como microfone ou interface.
audiodeviceoutCHOP41Reproduz canais como áudio para um dispositivo de saída.
audiodynamicsCHOP25Aplica dinâmicas de compressão, limitação e gate a um sinal de áudio.
audiofileinCHOP31Lê amostras de áudio de um arquivo para reprodução ou análise.
audiofileoutCHOP18Grava canais de áudio em um arquivo de som.
audiofilterCHOP16Filtra um sinal de áudio com resposta passa-baixa, passa-alta, passa-banda ou rejeita-banda e cutoff ajustável.
audiomovieCHOP19Extrai a trilha de áudio que acompanha um filme reproduzido por um Movie File In TOP.
audiondiCHOP11Envia ou recebe áudio embutido em um stream NDI.
audiooscillatorCHOP20Gera tons e formas de onda em taxa de áudio a partir de uma entrada de frequência.
audioparaeqCHOP26Um equalizador paramétrico com frequência central, ganho e Q ajustáveis por banda.
audioplayCHOP37Reproduz um arquivo de som sob demanda, frequentemente acionado por um evento.
audiorenderCHOP48Renderiza uma cena de áudio espacial a partir de fontes sonoras e um ouvinte em canais de saída.
audiospectrumCHOP15Calcula o espectro de frequência de um sinal de áudio via FFT para visualização ou reatividade.
audiostreaminCHOP21Recebe áudio transmitido pela rede.
audiostreamoutCHOP16Transmite canais de áudio pela rede.
audiovstCHOP27Hospeda um plug-in de áudio VST e expõe seus parâmetros.
audiowebrenderCHOP11Captura o áudio produzido por um Web Render TOP.
beatCHOP34Executa um relógio musical travado a um tempo, emitindo rampas de batida, contagens e gatilhos de pulso.
blacktraxCHOP22Recebe dados de posição e orientação em tempo real de um sistema de rastreamento BlackTrax.
blendCHOP12Mistura múltiplos conjuntos de canais de entrada usando canais de ponderação, para mixagem ponderada de pose ou valor.
blobtrackCHOP25Relata posições e tamanhos de blobs rastreados como canais.
clipCHOP24Reproduz clipes de canais gravados com controle de taxa e intervalo.
clipblenderCHOP38Mistura e sequencia clipes de animação em um fluxo de movimento contínuo.
clockCHOP36Emite componentes de tempo de relógio de parede, como horas, minutos, segundos e frame.
compositeCHOP27Sobrepoõe e combina canais de múltiplas entradas, alinhando-os no tempo.
constantCHOP22Produz canais que mantêm valores constantes que você digita.
copyCHOP17Repete ou copia os canais da primeira entrada uma vez por amostra de uma segunda entrada.
countCHOP25Conta cruzamentos de limiar ou gatilhos em sua entrada e emite o total acumulado.
crossCHOP10Faz cross-fade entre dois conjuntos de canais por uma quantidade de mistura.
cycleCHOP20Repete um canal um número de vezes, opcionalmente mesclando as emendas em um loop contínuo.
dattoCHOP31Lê uma tabela DAT e transforma suas linhas ou colunas em canais.
delayCHOP12Atrasa canais por um deslocamento de tempo fixo.
deleteCHOP32Remove canais selecionados ou corta amostras por padrão de nome ou intervalo.
dmxinCHOP31Recebe dados de controle de iluminação (DMX via Art-Net ou sACN) como canais.
dmxoutCHOP34Envia canais como dados de controle de iluminação DMX.
envelopeCHOP17Segue o envelope de amplitude em movimento (pico ou RMS) de um sinal.
eventCHOP33Transforma eventos discretos em canais com durações e formas.
expressionCHOP13Aplica uma expressão matemática por canal; observe que o valor da expressão que carrega código é omitido desta superfície somente de dados, deixando seu escopo e parâmetros de nomenclatura.
extendCHOP12Define como cada canal se comporta antes de sua primeira e depois de sua última amostra (hold, cycle, mirror ou default).
fanCHOP14Expande um único canal em muitos, ou dobra muitos canais em um, por índice.
feedbackCHOP12Alimenta sua própria saída anterior de volta para processamento recursivo de canal com atraso de frame.
fileinCHOP20Lê dados de canal de um arquivo ou URL.
fileoutCHOP12Acrescenta ou grava canais em um arquivo.
filterCHOP26Suaviza canais com passa-baixa ao longo do tempo para remover jitter, com largura de filtro ajustável.
freedinCHOP15Recebe dados de rastreamento de câmera pelo protocolo FreeD como canais de pan, tilt, zoom e posição.
functionCHOP19Aplica uma função matemática (trigonométrica, logarítmica, potência e assim por diante) a cada canal.
gestureCHOP21Grava um movimento e o reproduz como um canal de gesto reutilizável.
handleCHOP15Resolve cinemática inversa baseada em handles para rigs de personagens.
hogCHOP13Consome deliberadamente tempo de cook para perfilar e testar desempenho sob estresse.
hokuyoCHOP19Lê amostras de distância de um scanner a laser de alcance Hokuyo.
holdCHOP12Amostra a primeira entrada e mantém esse valor sempre que uma segunda entrada de gatilho dispara.
inCHOP14O tap de entrada de um componente CHOP.
infoCHOP16Expõe informações numéricas de outro operador (tempo de cook, contagens de amostras e status) como canais.
interpolateCHOP12Interpola suavemente entre conjuntos sucessivos de canais de entrada ou keyframes.
inversecurveCHOP17Resolve uma curva de cinemática inversa para curvatura suave de cadeia.
inversekinCHOP17Resolve cinemática inversa de dois ossos a partir de uma posição de objetivo.
joinCHOP27Une canais ponta a ponta no tempo para construir uma sequência mais longa.
joystickCHOP31Lê eixos e botões de um joystick ou controle de jogo.
keyboardinCHOP18Relata o estado pressionado de teclas do teclado como canais.
keyframeCHOP14Mantém uma animação de keyframe editável e a avalia em canais.
kinectazureCHOP23Rastreia articulações do corpo esquelético de um sensor Azure Kinect, emitindo canais de posição e orientação por articulação.
lagCHOP22Adiciona inércia, lag e limites de slew rate para que canais se aproximem suavemente de novos valores.
laserCHOP42Prepara dados de caminho para saída de projeção a laser.
laserdeviceCHOP23Aciona um DAC de projetor a laser com canais de laser preparados.
leuzerod4CHOP25Lê dados de distância de um scanner a laser Leuze ROD4.
lfoCHOP20Um oscilador de baixa frequência gerando ondas senoidais, rampa, quadrada e pulso para animação.
limitCHOP24Limita valores de canal a um intervalo e opcionalmente os quantiza a um passo.
logicCHOP16Executa lógica booleana e comparações entre canais, emitindo resultados liga/desliga.
lookupCHOP17Usa a primeira entrada como índice na tabela de consulta da segunda entrada.
ltcinCHOP16Decodifica timecode linear SMPTE de áudio em canais de tempo.
ltcoutCHOP29Codifica canais de tempo como áudio de timecode linear SMPTE.
mathCHOP22Executa aritmética e remapeamento de intervalo em canais (adicionar, multiplicar, intervalos de/de).
mergeCHOP11Combina os canais de várias entradas em uma única saída.
midiinCHOP64Traz notas MIDI e controladores como canais.
midiinmapCHOP19Mapeia mensagens MIDI recebidas para canais nomeados via uma tabela de mapeamento.
midioutCHOP32Envia canais como notas MIDI e controladores.
mosysCHOP16Recebe dados de rastreamento de câmera de um sistema Mo-Sys como canais de posição, orientação e lente.
mouseinCHOP24Relata posição do mouse e estado de botões como canais.
mouseoutCHOP15Aciona a posição do mouse do sistema a partir de canais.
ncamCHOP17Recebe dados de rastreamento de câmera de um sistema Ncam como canais de posição, orientação e lente.
noiseCHOP41Gera canais de ruído procedural coerente ao longo do tempo.
nullCHOP13Um tap de passagem, o endpoint estável recomendado para exportações e referências.
objectCHOP42Emite a transformação ou relação (posição, rotação, distância) entre dois objetos 3D.
optitrackinCHOP19Recebe dados de corpo rígido e marcadores de um sistema de captura de movimento OptiTrack.
oscinCHOP27Recebe mensagens OSC e mapeia seus valores para canais.
oscoutCHOP22Envia valores de canal como mensagens OSC.
outCHOP12O tap de saída de um componente CHOP.
overrideCHOP13Passa a entrada que mudou mais recentemente, permitindo que vários controladores compartilhem uma saída.
panelCHOP14Expõe valores de interação de um componente de painel (estado, clique, rolagem) como canais.
pangolinCHOP20Controla software de laser Pangolin a partir de canais.
pantiltCHOP15Calcula ângulos de pan e tilt para apontar um dispositivo a um alvo.
parameterCHOP18Lê os valores avaliados dos parâmetros de um operador em canais.
patternCHOP32Gera um padrão moldado entre amostras (rampa, gaussiana, seno e mais).
performCHOP36Expõe estatísticas de desempenho em tempo real, como tempo de frame e contagens de cook, como canais.
phaserCHOP13Produz um sinal de animação com deslocamento de fase, deslocando a fase do canal ao longo do tempo.
pipeinCHOP25Recebe canais por um pipe TCP de outro processo.
pipeoutCHOP21Envia canais por um pipe TCP para outro processo; seu parâmetro que carrega script é omitido desta superfície somente de dados.
poptoCHOP25Lê atributos de pontos POP em canais.
posistagenetCHOP19Recebe posições de rastreamento de palco PosiStageNet como canais.
pulseCHOP33Emite picos de pulso em um intervalo ou contagem definida.
recordCHOP16Grava canais recebidos em um buffer que pode ser reproduzido.
renameCHOP9Renomeia canais usando padrões de nome de/de.
renderpickCHOP48Seleciona geometria 3D sob coordenadas dadas em um render e retorna a posição do hit e informações como canais.
renderstreaminCHOP18Recebe dados de controle de uma sessão RenderStream do disguise.
reorderCHOP18Reordena os canais dentro do stream.
replaceCHOP11Substitui canais na primeira entrada por canais de nome correspondente da segunda.
resampleCHOP22Reamostra canais para uma nova taxa de amostragem ou intervalo de tempo.
selectCHOP16Referencia canais por nome de outro CHOP em qualquer lugar do projeto.
serialCHOP17Lê e grava um dispositivo serial (RS-232/USB) como canais.
shiftCHOP17Desloca um canal para frente ou para trás no tempo.
shuffleCHOP12Remodela o layout entre canais e amostras (operações semelhantes a transposição).
soptoCHOP24Lê atributos de pontos ou primitivas SOP em canais.
sortCHOP16Ordena canais ou suas amostras por valor ou nome.
speedCHOP22Integra um canal de velocidade em posição, ou escala o fluxo do tempo.
st2110deviceCHOP31Expõe dados de áudio e auxiliares de um dispositivo de vídeo IP ST 2110 como canais.
stretchCHOP18Estica ou comprime canais para um novo comprimento preservando sua forma.
stypeinCHOP16Recebe dados de rastreamento de câmera de um sistema Stype como canais de posição, orientação e lente.
switchCHOP12Seleciona uma de várias entradas por índice.
syncinCHOP16Recebe sincronização de tempo de um Sync Out CHOP pela rede para manter múltiplas máquinas com quadros sincronizados.
syncoutCHOP20Coordena a sincronização de quadros entre múltiplas máquinas.
tabletCHOP40Lê pressão, inclinação e posição da caneta de uma mesa digitalizadora.
timecodeCHOP40Representa um valor de timecode como canais de hora/minuto/segundo/quadro.
timelineCHOP25Gera a posição atual da linha do tempo em quadros e segundos.
timerCHOP73Um temporizador programável com segmentos, ciclos e pulsos de conclusão para sequenciamento.
toptoCHOP39Amostra pixels de um TOP em canais.
touchinCHOP23Recebe canais de outra instância do TouchDesigner pela rede.
touchoutCHOP18Envia canais para outra instância do TouchDesigner pela rede.
trailCHOP19Exibe um gráfico de histórico rolante de seus canais de entrada para monitoramento.
triggerCHOP46Gera um envelope attack-decay-sustain-release cada vez que a entrada cruza um limite.
trimCHOP16Apara canais para um tempo de início e fim.
waveCHOP30Gera formas de onda periódicas definidas por forma e período; seu parâmetro que carrega expressões é omitido desta superfície somente de dados.

SOP — geometria (superfícies) (79)

FerramentaParâmetrosDescrição
addSOP17Cria pontos e polígonos individuais, ou conecta pontos existentes em novas primitivas.
alembicSOP11Carrega geometria de um arquivo de cache Alembic (.abc).
alignSOP17Alinha geometrias de entrada entre si por caixa delimitadora ou transformação.
armSOP34Constrói ou edita um braço/cadeia articulada de geometria.
attributeSOP13Cria, renomeia, exclui ou edita atributos de ponto, vértice, primitiva e detalhe.
attributecreateSOP4Adiciona novos atributos à geometria e inicializa seus valores.
basisSOP30Edita a base paramétrica (vetor de nós e ordem) de curvas e superfícies NURBS.
blendSOP9Mistura posições de pontos entre entradas topologicamente correspondentes por peso, para interpolação de forma.
bonegroupSOP3Cria grupos de pontos com base em regiões de captura de ossos esqueléticos.
booleanSOP6Calcula união, interseção ou diferença booleana entre malhas sólidas.
boxSOP18Gera uma caixa ou cubo com tamanho e divisões ajustáveis.
bridgeSOP15Constrói uma superfície de pele que faz a ponte entre loops de borda ou perfis.
cacheSOP9Mantém um buffer de quadros de geometria na memória para reprodução.
capSOP16Fecha as extremidades abertas de tubos e superfícies com faces planas ou arredondadas.
captureSOP9Atribui pesos de captura ligando pontos de geometria a um esqueleto para skinning.
captureregionSOP9Define a região de influência de captura de um osso.
carveSOP20Corta, fatia ou extrai porções de curvas e superfícies ao longo de suas coordenadas paramétricas.
choptoSOP10Cria ou conduz geometria a partir de canais CHOP, por exemplo, animando pontos a partir de dados de canal.
circleSOP16Gera um círculo ou arco como curva ou polígono.
claySOP24Deforma uma superfície empurrando e puxando seus pontos de controle como argila de modelagem.
clipSOP8Recorta geometria contra um plano, mantendo um lado ou dividindo no corte.
convertSOP17Converte geometria entre tipos como polígono, malha, NURBS e Bezier.
copySOP35Copia geometria em pontos de template ou com uma pilha de transformações, o SOP central de instancing/stamping.
creepSOP5Desliza e deforma geometria para que ela rasteje ao longo da superfície de outra.
curveclaySOP13Esculpe curvas puxando seus pontos de controle.
curvesectSOP11Encontra interseções entre curvas e superfícies, gerando os pontos de cruzamento.
dattoSOP15Constrói geometria (pontos e primitivas) a partir das linhas de uma tabela DAT.
deformSOP6Deforma geometria capturada para seguir seu esqueleto (a etapa de deformação por skinning).
deleteSOP21Exclui pontos ou primitivas selecionados por grupo, número ou volume delimitador; sua expressão de filtro por elemento é omitida desta superfície somente de dados.
divideSOP14Subdivide, triangula ou transforma polígonos em blocos para alterar sua tesselação.
extrudeSOP21Extrude faces ou bordas para adicionar profundidade e bisel.
facetSOP14Controla normais e facetamento, unificando pontos e criando arestas vivas para sombreamento plano ou suave.
fileinSOP5Carrega geometria de um arquivo como OBJ.
filletSOP16Cria superfícies ou curvas de filete arredondado entre duas entradas.
fitSOP17Ajusta uma curva ou superfície NURBS através de um conjunto de pontos.
forceSOP8Define um campo de força ao qual sistemas de partículas e metaballs respondem.
fractalSOP9Desloca pontos com ruído fractal para enrugar uma superfície.
gridSOP18Gera uma grade plana de pontos ou polígonos com linhas e colunas ajustáveis.
groupSOP46Cria grupos de pontos ou primitivas nomeados por padrão, número ou região delimitadora; sua expressão de filtro por elemento é omitida desta superfície somente de dados.
holeSOP6Transforma faces fechadas em buracos na face circundante.
inSOP3O ponto de entrada de um componente SOP.
inversecurveSOP2Calcula uma solução de curva inversa para geometria encadeada.
isosurfaceSOP6Constrói uma superfície em um valor constante de uma função 3D implícita.
joinSOP12Une múltiplas curvas ou superfícies em primitivas contínuas únicas.
jointSOP12Cria um esqueleto de juntas e ossos para rigging.
latticeSOP6Deforma geometria movendo os pontos de uma gaiola de lattice circundante.
limitSOP39Coloca geometria (esferas, caixas ou templates) em pontos de dados ou limites de valor.
lineSOP5Cria uma polilinha reta entre pontos finais com um número escolhido de pontos.
linethickSOP9Dá espessura a polilinhas, convertendo-as em fitas ou tubos.
lodSOP9Alterna entre versões de nível de detalhe da geometria com base na distância de visualização.
lsystemSOP35Cultiva plantas procedurais e fractais a partir de um conjunto de regras L-system.
magnetSOP13Deforma geometria dentro de uma região de falloff usando um ímã em forma de metaball.
materialSOP2Atribui um material a primitivas de geometria.
mergeSOP2Mescla várias geometrias em uma.
metaballSOP9Cria metaballs que se misturam em superfícies suaves e irregulares.
modelSOP1Mantém geometria de modelo editável manualmente.
noiseSOP20Desloca pontos com ruído coerente animado.
nullSOP1Um ponto de passagem, o endpoint estável recomendado de uma cadeia de geometria.
objectmergeSOP3Puxa geometria de outros SOPs por caminho, opcionalmente aplicando suas transformações de objeto.
outSOP4O ponto de saída de um componente SOP.
particleSOP39Um sistema de partículas CPU legado conduzido por forças e colisões.
pointSOP43Edita posições e atributos de pontos diretamente, incluindo a criação de atributos padrão.
polyloftSOP13Cria superfícies poligonais lofted através de uma série de curvas de seção transversal.
polypatchSOP12Constrói um patch de spline suave a partir de uma malha de controle poligonal.
polyreduceSOP16Reduz a contagem de polígonos preservando a forma geral.
polysplineSOP11Ajusta splines suaves através de bordas de polígonos para arredondá-las.
polystitchSOP7Costura juntas costuras e rachaduras entre superfícies poligonais.
primitiveSOP34Edita atributos e transformações no nível de primitiva.
profileSOP14Extrai e edita curvas de perfil situadas em superfícies.
projectSOP21Projeta curvas em uma superfície para criar curvas de perfil.
railsSOP16Varre curvas de seção transversal ao longo de uma ou duas curvas-guia.
raySOP16Projeta pontos em uma superfície alvo ao longo de uma direção de raio, um shrink-wrap.
rectangleSOP16Cria uma curva ou polígono retangular.
refineSOP18Refina curvas e superfícies adicionando pontos ou elevando sua ordem sem alterar a forma.
resampleSOP11Reamostra curvas em pontos ou segmentos uniformemente espaçados.
skinSOP12Constrói uma superfície de pele através de um conjunto de curvas de perfil.
sphereSOP23Gera uma esfera como polígonos, malha ou NURBS.
textSOP30Cria geometria de texto 3D a partir de uma fonte e string.
transformSOP27Translada, rotaciona e escala geometria.

COMP — componentes / 3D / contêineres (30)

FerramentaParâmetrosDescrição
actorCOMP153Um ator de corpo rígido ou macio participando de uma simulação de física Bullet.
ambientlightCOMP86Adiciona luz ambiente uniforme a uma cena 3D.
animationCOMP43Um componente que mantém e edita canais de animação de keyframe.
annotateCOMP55Uma caixa de comentário redimensionável para anotar e organizar a rede.
baseCOMP22Um contêiner de propósito geral sem painel, usado para agrupar e modularizar operadores.
blendCOMP138Mistura as transformações de vários componentes de objeto por peso, um pai ponderado.
boneCOMP140Um único osso dentro de uma hierarquia esquelética para rigging de personagens.
bulletsolverCOMP137O solucionador de dinâmica Bullet que avança uma simulação de física de corpo rígido.
buttonCOMP132Um widget de painel de botão clicável que emite um valor de estado.
cameraCOMP84Uma câmera 3D definindo a visão e projeção usadas para renderizar uma cena.
camerablendCOMP100Mistura suavemente entre várias câmeras.
containerCOMP122Um contêiner de painel que organiza outros painéis para construir interfaces de usuário.
engineCOMP43Executa um componente .tox exportado em um processo separado via TouchEngine para isolamento e escalabilidade.
environmentlightCOMP92Fornece iluminação de ambiente baseada em imagem para renderização fisicamente baseada.
fbxCOMP161Importa uma cena FBX, trazendo sua geometria, materiais e hierarquia.
fieldCOMP136Um widget de campo de entrada de texto para entrada do usuário.
geometryCOMP124Coloca geometria SOP na cena 3D com transformação, material e flags de renderização, o nó de objeto que um Render TOP desenha.
geotextCOMP163Renderiza texto 3D como geometria de cena.
handleCOMP134Uma alça de manipulação interativa no viewport 3D.
lightCOMP117Uma fonte de luz 3D (ponto, cone ou distante) iluminando uma cena renderizada.
listCOMP130Um widget de painel de lista ou grade scriptável para linhas de itens.
nullCOMP124Uma transformação de objeto pass-through usada como pai estável ou ponto de acesso na hierarquia de objetos.
opviewerCOMP127Incorpora o viewer de outro operador dentro de um painel.
parameterCOMP137Um componente que apresenta parâmetros personalizados como um painel de interface de usuário.
replicatorCOMP41Cria e mantém uma cópia de um operador de template por linha de uma tabela; seu parâmetro que carrega script é omitido desta superfície somente de dados.
sliderCOMP139Um widget de painel deslizante unidimensional ou bidimensional.
textCOMP175Um widget de painel de exibição de texto.
timeCOMP33Define uma linha do tempo local independente (taxa de quadros e intervalo) para uma sub-rede.
usdCOMP158Importa uma cena Universal Scene Description (USD).
windowCOMP53Define uma janela de saída ou exibição em tela cheia em um monitor escolhido.

MAT — materiais / sombreamento (10)

FerramentaParâmetrosDescrição
constantMAT48Um material não iluminado que sombreia superfícies com uma única cor plana e alfa.
depthMAT34Sombreia superfícies por sua profundidade para uso em passes de profundidade e efeitos.
glslMAT78Um material totalmente personalizado conduzido por shaders GLSL de vértice e pixel, com o código-fonte do shader fornecido através de DATs referenciados.
inMAT36O ponto de entrada de um componente de material.
lineMAT109Um material para renderizar linhas e wireframes com controle de largura e cor.
nullMAT34Um ponto de passagem de material.
outMAT37O ponto de saída de um componente de material.
pbrMAT185Um material fisicamente baseado usando metalness, rugosidade e mapas de textura para iluminação realista.
phongMAT213Um material clássico com sombreamento Phong com difuso, especular e emissão; seu parâmetro de expressão de multi-textura GLSL é omitido desta superfície somente de dados.
pointspriteMAT55Renderiza pontos como sprites texturizados voltados para a câmera.

DAT — dados / tabelas / referências (51)

FerramentaParâmetrosDescrição
artnetDAT9Recebe universos DMX Art-Net em uma tabela.
audiodevicesDAT10Lista os dispositivos de entrada e saída de áudio disponíveis.
choptoDAT9Escreve canais CHOP em uma tabela de amostras.
clipDAT13Armazena metadados de clipes em formato de tabela.
convertDAT9Converte entre representações de tabela e texto, como CSV, TSV e texto livre.
dmxmapDAT13Define um mapeamento de canais DMX para slots nomeados.
errorDAT15Coleta os erros e avisos relatados pelos operadores no projeto.
etherdreamDAT8Controla um DAC laser Ether Dream.
evaluateDAT30Avalia uma expressão para cada célula de uma tabela; seus parâmetros que carregam expressões são omitidos desta superfície somente de dados, deixando os controles sem código.
examineDAT21Inspeciona variáveis e objetos para depuração; seu parâmetro de expressão é omitido desta superfície somente de dados.
fifoDAT11Uma tabela primeiro a entrar, primeiro a sair que descarta as linhas mais antigas conforme novas chegam.
fileinDAT9Lê texto ou uma tabela de um arquivo ou URL.
fileoutDAT8Escreve o conteúdo de um DAT em um arquivo.
folderDAT38Lista os arquivos e pastas de um diretório como uma tabela.
inDAT7O ponto de entrada de um componente DAT.
infoDAT8Relata os metadados e informações de outro operador como uma tabela.
insertDAT13Insere linhas ou colunas em uma tabela; seu parâmetro de expressão de substituição é omitido desta superfície somente de dados.
jsonDAT12Analisa JSON e extrai valores por caminho (o filtro JSONPath é mantido como dados); seu parâmetro de expressão Python é omitido desta superfície somente de dados.
keyboardinDAT17Registra eventos de teclas do teclado em uma tabela.
mediafileinfoDAT10Relata metadados (codec, resolução, duração) sobre um arquivo de mídia.
mergeDAT10Mescla tabelas ou texto de várias entradas, por linhas ou colunas.
midieventDAT21Registra eventos MIDI recebidos como linhas de tabela.
midiinDAT22Registra mensagens MIDI recebidas em uma tabela.
monitorsDAT9Lista os monitores conectados e suas propriedades.
mqttclientDAT21Um cliente MQTT que publica e assina tópicos.
multitouchinDAT23Relata eventos de contato multitoque como uma tabela.
ndiDAT8Lista as fontes de vídeo NDI disponíveis na rede.
nullDAT5Um ponto de passagem para tabelas.
opfindDAT65Pesquisa a rede e lista operadores que correspondem a critérios de nome, tipo ou propriedade.
oscinDAT22Recebe mensagens OSC como linhas de tabela.
oscoutDAT22Envia linhas de tabela como mensagens OSC.
outDAT8O ponto de saída de um componente DAT.
parameterDAT45Expõe os parâmetros de um operador como uma tabela editável de nomes e valores.
performDAT22Relata dados de desempenho quadro a quadro como uma tabela.
poptoDAT23Escreve atributos POP em uma tabela.
renderpickDAT38Relata resultados de seleção 3D (geometria e posição atingidas) como uma tabela.
reorderDAT11Reordena as linhas ou colunas de uma tabela.
serialDAT20Lê e escreve texto em um dispositivo serial.
serialdevicesDAT9Lista as portas seriais disponíveis.
socketioDAT15Um cliente Socket.IO para mensagens web em tempo real.
soptoDAT10Escreve atributos SOP em uma tabela.
tableDAT18Uma grade estática e editável de células; seus parâmetros de expressão de célula e preenchimento são omitidos desta superfície somente de dados.
tcpipDAT19Um cliente ou servidor TCP/IP que troca mensagens de texto.
textDAT10Armazena texto de formato livre, frequentemente usado para guardar código-fonte de shader ou script referenciado por outros operadores.
udpinDAT19Recebe datagramas UDP como linhas de tabela.
videodevicesDAT10Lista os dispositivos de captura de vídeo disponíveis.
webclientDAT24Emite solicitações HTTP e captura as respostas.
webrtcDAT14Lida com sinalização WebRTC e mensagens de canal de dados.
webserverDAT15Hospeda um servidor HTTP e WebSocket para clientes externos.
websocketDAT16Um cliente ou servidor WebSocket para mensagens bidirecionais.
xmlDAT23Analisa XML ou HTML em uma tabela navegável.

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

FerramentaParâmetrosDescrição
accumulatePOP13Acumula ou integra atributos de pontos entre quadros.
alembicoutPOP28Grava geometria de pontos em um cache Alembic.
analyzePOP25Reduz atributos de pontos a estatísticas resumidas.
attributePOP30Cria, edita ou remove atributos de pontos.
attributecombinePOP12Combina atributos correspondentes de múltiplas entradas de pontos.
attributeconvertPOP11Converte o tipo ou a precisão numérica de um atributo.
blendPOP18Mistura atributos de pontos entre entradas por peso.
boxPOP23Gera pontos organizados como uma caixa.
cachePOP14Armazena em buffer quadros de dados de pontos para reprodução.
cacheblendPOP14Faz a mistura entre quadros em cache de dados de pontos.
cacheselectPOP9Seleciona um quadro específico em cache de dados de pontos.
choptoPOP24Cria pontos a partir de dados de canais CHOP.
circlePOP22Gera pontos organizados em um círculo.
connectivityPOP11Rotula pontos de acordo com o componente conectado ao qual pertencem.
convertPOP6Converte geometria de pontos entre representações.
copyPOP46Copia pontos sobre outros pontos ou com transformações, para instanciamento.
curvePOP36Gera uma curva descrita por pontos.
dattoPOP47Constrói pontos a partir das linhas de um DAT.
deletePOP36Exclui pontos selecionados por grupo ou condição.
dimensionPOP8Mede ou define as dimensões delimitadoras do conjunto de pontos.
dmxfixturePOP25Mapeia pontos para luminárias de iluminação DMX.
dmxoutPOP31Envia dados de pontos como DMX.
extrudePOP17Extrui geometria de pontos para adicionar profundidade.
facetPOP18Ajusta normais e facetamento da geometria de pontos.
feedbackPOP11Realimenta a saída de pontos para processamento recursivo com atraso de quadro.
fieldPOP47Cria ou amostra um campo espacial sobre pontos.
fileinPOP12Carrega pontos de um arquivo.
fileoutPOP23Grava pontos em um arquivo.
forceradialPOP34Aplica uma força radial (atração/repulsão) aos pontos.
glslPOP62Executa um programa de computação GLSL sobre pontos, com o código-fonte do programa fornecido por meio de um DAT referenciado.
glsladvancedPOP119Um operador de pontos GLSL multi-buffer para fluxos de trabalho avançados de computação, originado de DATs referenciados.
glslcopyPOP57Usa um programa GLSL para conduzir a cópia ou o instanciamento de pontos.
glslselectPOP7Seleciona pontos usando um programa GLSL.
gridPOP26Gera pontos organizados em uma grade.
groupPOP42Agrupa pontos por condição ou região.
histogramPOP14Calcula um histograma dos valores de um atributo.
importselectPOP28Seleciona e importa um subconjunto de dados de pontos.
inPOP7A entrada de toque de um componente POP.
limitPOP23Limita atributos de pontos a um intervalo.
linePOP31Gera pontos organizados em uma linha.
linebreakPOP20Divide polilinhas em segmentos separados.
linedividePOP34Divide polilinhas em mais segmentos.
linemetricsPOP59Mede o comprimento da linha e métricas relacionadas por ponto.
lineresamplePOP18Reamostra polilinhas em pontos igualmente espaçados.
linesmoothPOP30Suaviza polilinhas para reduzir variações bruscas.
lookupattributePOP23Consulta valores de atributos usando um atributo de índice.
lookupchannelPOP24Amostra um canal CHOP por ponto como uma consulta.
lookuptexturePOP28Amostra uma textura (TOP) por ponto para ler cores ou dados em atributos.
mathPOP26Realiza aritmética e remapeamento de intervalo em atributos de pontos.
mathcombinePOP52Combina atributos com uma operação matemática.
mathmixPOP25Mistura atributos por um fator de mistura.
mergePOP11Mescla vários conjuntos de pontos em um.
neighborPOP25Encontra pontos vizinhos dentro de um raio ou contagem.
noisePOP49Aplica ruído coerente a posições ou atributos de pontos.
normalPOP27Calcula normais de pontos.
normalizePOP22Normaliza atributos vetoriais ou reescala valores para um intervalo.
nullPOP5Um toque de passagem para cadeias de pontos.
outPOP8A saída de toque de um componente POP.
particlePOP41Uma simulação de partículas em GPU que avança pontos sob forças e regras.
patternPOP35Gera um padrão moldado de valores entre pontos.
phaserPOP23Aplica um deslocamento baseado em fase que anima valores entre pontos.
planePOP19Gera pontos organizados em um plano.
pointPOP11Edita posições e atributos de pontos diretamente.
pointfileinPOP33Carrega um arquivo de nuvem de pontos (como PLY) em pontos, o ponto de entrada para dados escaneados.
pointgeneratorPOP26Gera um número especificado de pontos para semear um sistema.
polygonizePOP22Constrói geometria de superfície poligonal a partir de pontos.
primitivePOP21Edita atributos de nível primitivo da geometria de pontos.
projectionPOP22Projeta pontos usando um mapeamento de projeção.
proximityPOP21Calcula relações de proximidade e vizinho mais próximo entre pontos.
quantizePOP19Ajusta atributos de pontos a uma grade ou tamanho de passo.
randomPOP36Atribui valores aleatórios a atributos de pontos.
rayPOP37Projeta pontos sobre uma superfície alvo ao longo de raios.
rectanglePOP23Gera pontos organizados como um retângulo.
rerangePOP19Remapeia um atributo de um intervalo de valores para outro.
revolvePOP12Gira um perfil de pontos em torno de um eixo para formar uma superfície.
selectPOP9Referencia pontos de outro POP por caminho.
skinPOP9Cobre uma superfície sobre curvas de pontos.
skindeformPOP18Deforma pontos para seguir um esqueleto (skinagem).
soptoPOP10Converte geometria SOP em pontos.
sortPOP27Classifica pontos por valor, posição ou atributo.
spherePOP33Gera pontos organizados em uma esfera.
sprinklePOP16Espalha pontos sobre uma superfície ou através de um volume.
subdividePOP9Subdivide geometria de pontos para maior resolução.
switchPOP14Seleciona uma de várias entradas de pontos por índice.
textPOP37Gera pontos que descrevem texto.
texturemapPOP32Atribui ou calcula coordenadas de textura para pontos.
topologyPOP61Constrói ou edita a conectividade/topologia da geometria de pontos.
toptoPOP45Cria pontos a partir de um TOP, transformando pixels em pontos posicionados.
torusPOP24Gera pontos organizados em um toro.
tracePOP30Traça as formas de uma imagem em pontos ou curvas.
trailPOP28Registra os rastros de movimento de pontos ao longo do tempo.
transformPOP48Translada, gira e escala pontos.
triangulatePOP16Triangula pontos em uma malha (estilo Delaunay).
trigPOP17Aplica funções trigonométricas a atributos de pontos.
tubePOP24Gera pontos organizados como um tubo.
twistPOP19Aplica deformações de torção, curvatura ou afunilamento aos pontos.

Ferramentas utilitárias — o plano de dados, a camada de acionamento e o plano de controle (35)

  • Leia a cena: scene_info, read_network, find_errors, inspect, top_info, probe_optype, mem.
  • Construa e conecte: connect, set_par, set_par_many, set_flags, set_pos, delete_op, bind_chop, batch (executa muitas operações em uma única ida e volta; não concede nenhuma capacidade que uma chamada direta não tenha e não pode ser aninhado).
  • Importe: import_scan, import_segmented_model (constrói um rig completo sec*/mat* por seção a partir de OBJs por parte em uma única chamada).
  • Entregue (somente com fiação): save_top (grava a imagem de um TOP no diretório de trabalho), capture_ui, write_csv, pulse, show.
  • Consulte informações: td_capabilities (índice inicial da superfície + limite), help, operator_reference (esquema tipado completo de qualquer operador), recipe_reference (as receitas de fluxo de trabalho).
  • Aprenda a escrever código: glsl_reference (shaders GLSL), expr_reference (expressões de parâmetros), code_reference (qual via carrega o quê + o handshake de consentimento) — professores somente leitura que propõem texto de código para as vias validadas ou colagem manual; eles nunca executam código.
  • Vias de código (desativadas por padrão, controladas por consentimento): set_glsl / validate_glsl, set_expr / validate_expr.
  • Controle de dispositivos (desativado por padrão, controlado por consentimento): device_send — envia um comando a um projetor pela lista de permissões fechada PJLink Classe-1; desativado, a menos que um humano habilite explicitamente allow_device_control.
  • Manutenção: dev_reload.

Referências

Várias superfícies de descoberta sustentam o catálogo de ferramentas. td_capabilities é o índice inicial — chame-o primeiro para se orientar sobre a superfície, o limite e onde consultar informações.

  • Catálogo de ferramentasdocs/TOOL_CATALOG.md, gerado a partir de reference/catalog.json (a contagem autoritativa de cada operação tipada, em cerca de 17.000 parâmetros tipados nas famílias de operadores). Este é o limite de segurança: se não estiver no catálogo, o servidor não pode fazê-lo.
  • Referência de operadores — a ferramenta MCP operator_reference responde "quais parâmetros o operador X aceita?" a partir de dados reais verificados ao vivo (nome, tipo, intervalo/tokens por parâmetro).
  • help — os fatos de um operador (família, número de entradas, nomes de parâmetros) além de um link direto para a documentação oficial da Derivative. Nenhum texto da Derivative é incluído; as descrições de operadores fornecidas são originais.
  • recipe_reference — a camada de acionamento: 66 receitas de fluxo de trabalho mapeadas por ferramentas, com etapas ordenadas e convenções (veja abaixo).
  • Professores de código — guias somente leitura para as superfícies de código do TD: glsl_reference (shaders GLSL), expr_reference (expressões de parâmetros), code_reference (qual via + o handshake de consentimento). Eles propõem texto de código para as vias validadas ou colagem manual; eles nunca executam código.

Documentação


Receitas de mapeamento de projeção

recipe_reference classifica sua tarefa e retorna uma maneira comprovada e mapeada por ferramentas de construí-la — uma sequência ordenada de ferramentas reais, os parâmetros que realmente movem o resultado, um marco OUT_ nulo para plantar em cada etapa e a leitura barata para verificar. O TouchDesigner oferece muitas abordagens válidas, então uma receita é um exemplo trabalhado para adaptar, nunca um evangelho. As 66 receitas abrangem estes domínios:

  • Lane de renderização 3D (facade_3d_render) — uma construção .obj/.abc/.fbx/.usd em um Geometry COMP, enquadrada por uma câmera, sombreada com um MAT, renderizada em um Render TOP sobre um fundo escuro.
  • Efeitos de textura generativa (generative_texture_fx) — a lane de conteúdo de fachada essencial: noise → ramp → tone → transform → composite → feedback trail, uma rede TOP puramente evolutiva.
  • Conteúdo de nuvem de pontos (point_cloud_content) — ingerir um scan finalizado de drone/fotogrametria (dados de posição em um TOP) e instanciar sprites ou malhas sobre os pontos.
  • Câmera / enquadramento (camera_match_facade) — alinhar a câmera virtual à fachada real (mapa plano ortográfico ou correspondência de lente em perspectiva).
  • Rig e coreografia por seção (per_section_material_rig, height_sweep_choreography, per_section_color_choreography, facade_cue_choreography) — um material por seção arquitetônica, acionado apenas por dados via exportação CHOP (uma varredura de luz em movimento, cor por seção ou um show com cues) — sem expressões, sem código.
  • Mapeamento de vídeo (segmented_facade_video_projection, segmented_facade_video_content, facade_mask_atlas) — acionar vídeo real em cada seção registrada por UV via emitmap, com uma máscara em escala de cinza mantendo as janelas pretas.
  • Warp livre / de malha (mesh_freeform_warp) — o análogo somente-dados de um mapeador de warp de malha: um campo UV remapTOP com um deslocamento de grade de controle curva o conteúdo sobre uma superfície curva.
  • Mapeamento e alinhamento de projetores (projector_calibrated_3d, projection_align_and_output, multiprojector_edge_blend) — um frustum de projetor calibrado, um keystone de 4 cantos e uma emenda com blend de bordas entre projetores sobrepostos.
  • Controle de show e DMX (realtime_input_driver, show_control_timecode, dmx_artnet_output) — uma entrada OSC/áudio/DMX/MIDI ao vivo acionando a fachada, um transporte de timer/timecode executando o show com cues, e saída DMX / Art-Net / sACN para luzes e equipamentos.
  • Saída / entrega (output_handoff) — expor o conteúdo finalizado a um servidor de mídia (Pixera / disguise) ou gravar um arquivo HAP 4K — somente fiação, com record/active desligados para o operador acionar.
  • Mapeamento 2D de múltiplas superfícies (multi_quad_mapper) — o kantanMapper somente-dados: N fontes, cada uma em seu próprio quad com warp de cantos, compostas sobre preto — mapear um vídeo diferente em cada janela / superfície plana / face de letreiro.
  • Ingestão de calibração de projetor (camera_calibration_intake) — construir o Camera COMP alvo + rig de renderização para que a calibração em campo via camSchnappr / OpenCV / levantamento (pose + matriz de projeção) se conecte diretamente de volta.
  • Profundidade multi-projetor (multiprojector_blacklevel_mask, projector_stack_converge) — elevação do nível de preto para que a emenda desapareça em conteúdo escuro, e empilhamento/convergência de projetores para brilho e redundância (distinto do blend de bordas).
  • Máscara de spill / lixo (output_spill_garbage_mask) — holdout em espaço de tela que recorta o conteúdo à silhueta da superfície (manter a luz longe do chão / céu / vizinhos) além de um feather suave no quadro do projetor.
  • Padrões de teste e rig-and-focus (test_pattern_generator) — grades de alinhamento somente-dados, crosshairs, barras de cor, campos de foco/1:1-pixel, rótulos por projetor, marcadores de convergência e sobreposição em resolução nativa.
  • Reprodução de mídia e composição (media_clip_player, layer_compositor) — reprodução robusta de clipes 4K + playlist sem lacunas, e uma pilha de camadas estilo servidor de mídia (opacidade/blend/transform por camada) com transições.
  • Feed ao vivo e saída direta (live_media_server_feed, direct_projector_output) — entrega ao vivo Spout / NDI / Touch / RenderStream, e uma janela de performance direta ao projetor / lane de frente de casa com Direct-Display.
  • Imersivo / dome / curvo (dome_fisheye_master, curved_screen_warp_blend) — dome fisheye/equiretangular e masters 360 (reprojeção de cubemap) e um warp cilíndrico + blend para uma única tela curva larga.
  • Conteúdo interativo (vision_interactive_mask, audio_reactive_content) — uma câmera ao vivo acionando uma máscara de presença/movimento, e visuais generativos construídos a partir da música (FFT / energia de banda / onset) — somente-dados.
  • Texto e titulação (text_title_content) — tipografia somente-dados: títulos de show, lower-thirds, créditos rolantes e um cronômetro/relógio ao vivo sem código via ponte timerCHOP → choptoDAT → textTOP (sem expressões).
  • Partículas e 3D cinético (particle_system_content, instanced_kinetic_content) — um sistema de partículas GPU POP ao vivo (brasas / faíscas / neve / fluxo) e matrizes de instâncias animadas / cenas de motion graphics cinéticas.
  • Loops contínuos (seamless_loop_authoring) — gravar um loop generativo sem emendas (fase periódica ou crossfade cabeça/cauda), somente-fiação para um arquivo de filme.
  • Superfície rastreada / em movimento (tracked_surface_content) — projetar em um adereço móvel ou performer: um CHOP de rastreamento (BlackTrax / PosiStageNet / OptiTrack) aciona uma transformação de gêmeo digital sem código.
  • Parede de LED / mapa de pixels (led_wall_pixelmap_feed) — recortar um canvas em tiles por painel na resolução total exata que um processador de LED Novastar / Brompton / Linsn ingere.
  • Sala imersiva (immersive_room_mapping) — uma sala totalmente envolvente de múltiplas paredes + piso/teto, uma câmera calibrada por superfície irradiando de uma cena 3D compartilhada (modo piso / anamórfico de perspectiva forçada).
  • Superfícies translúcidas (sheer_surface_mapping) — preparação de conteúdo para scrim / gaze / HoloGauze / névoa / tela de água com black-crush obrigatório, um espelho de projeção traseira e um holdout seguro para atores.
  • Ingestão de sinal (signal_ingest_remap) — capturar uma fonte SDI / HDMI / NDI / ST-2110 / Syphon-Spout ao vivo e remapeá-la em superfícies — o gêmeo de ingestão das lanes de saída.
  • Entrega e uniformidade de cor (color_grade_lut_delivery, projector_color_uniformity) — um pipeline de cor de entrega LUT / OCIO, e correspondência de ponto branco / gama em uma matriz multi-projetor.
  • Saída multi-zona (multizone_independent_outputs) — N zonas de saída independentes, cada uma com seu próprio conteúdo, resolução e destino (distinto de uma única janela com blend de bordas abrangente).
  • Automação e segurança de show (scheduled_playback_dayparting, timecode_chase_slave, emergency_blackout_and_standby, confidence_monitor_foldback) — dayparting por horário do dia sem supervisão, perseguindo timecode externo LTC/SMPTE, DBO / standby instantâneo e taps de confiança / foldback para o operador.
  • Gráficos para eventos ao vivo (corporate_stage_graphics) — um pacote IMAG + lower-thirds + slide de espera + countdown para um palco de conferência / keynote.
  • Controle do operador e operações de show (operator_control_panel, show_health_watchdog) — construir a superfície de controle na tela/TouchOSC do próprio operador, e um watchdog de saúde do sistema (fps / quadros perdidos / temperatura da GPU) com overlay de alarme.
  • LED de canto 3D a olho nu (anamorphic_corner_led_3d) — 3D de perspectiva forçada em uma parede de LED de canto de 90° via uma única câmera hero fora do eixo, dividida nas duas faces.
  • Lidar e contorno (lidar_presence_interaction, line_contour_mapping) — piso/parede interativo a partir de um scanner a laser 2D, e linhas de luz animadas de borda/contorno traçando a arquitetura real de um edifício.
  • Áudio de show (show_audio_playback) — reprodução de trilha sonora + roteamento de alto-falantes multicanal/espacial + trava de timecode A/V (a lane de saída de áudio; todas as outras receitas de áudio são somente-entrada).
  • Broadcast e IoT (st2110_ip_video_out, mqtt_iot_input) — entrega de vídeo sobre IP SMPTE ST 2110 (PTP), e gatilhos MQTT / de automação predial estendendo a família de drivers de entrada.
  • Pipeline de conteúdo (projector_plan_tables, uv_template_export, structured_light_calibration_patterns, notch_block_playback) — planilhas de planejamento de throw/lente, um template de registro UV para artistas de conteúdo, padrões de captura gray-code / phase-shift e um scaffold de reprodução de blocos Notch .dfx.

O trabalho do TouchDesigner é a criação de conteúdo; o warp/blend físico na superfície real é feito downstream pelo servidor de mídia. Veja ARCHITECTURE.md para como a camada de receitas é conectada.


Armadilhas

Algumas armadilhas específicas do TouchDesigner que as receitas codificam:

  • Ferramentas de criação aceitam vetores tuplet; set_par aceita componentes brutos. Uma ferramenta de criação expõe color:[r,g,b] e tuplets resolution; passar nomes de componentes brutos (colorr) ou um wrapper pars{} para uma ferramenta de criação os descarta silenciosamente. Use set_par para colorr/tx brutos.
  • Um geometryCOMP novo vem com um filho torus padrão carregando os flags de render/display. Exclua-o (com delete_op) e ative o flag de render do seu fileinSOP importado, ou ambos competirão para serem renderizados.
  • O Render TOP referencia câmera / geometria / luzes por parâmetro, não conectando-os em suas entradas. Sua saída é transparente — componha-o sobre um constantTOP escuro para um beauty pass legível.
  • A armadilha de resolução 256/1280 é real. Geradores (noiseTOP, rampTOP) herdam um padrão pequeno; defina outputresolution=custom + resolutionw/h para entrega 4K. Builds não comerciais limitam a saída a 1280.
  • A exportação CHOP aciona um parâmetro apenas com o viewer do exportador ativo e um cook forçado — o flag Export sozinho não faz nada. bind_chop lida com isso; uma exportação manual ainda precisa disso.
  • import_segmented_model força o File In SOP para o modo CONSTANT para que o OBJ real carregue, não a caixa de amostra padrão do TouchDesigner; os modelos devem estar sob o diretório de trabalho.

Configuração

A maior parte da configuração acontece na GUI e é gravada em ~/.touchdesigner-bridge-mcp/arm.json, o único arquivo que ambos os processos leem fresco a cada chamada. Apenas a configuração do cliente MCP precisa de variáveis de ambiente.

ConfiguraçãoOndeDescrição
TDMCP_GW_HEADLESSenv (config do cliente)1 = executar o binário como o gateway MCP stdio headless; não definido = abrir a janela da GUI.
TDMCP_REPOenv (config do cliente)O caminho do clone, para que o gateway resolva seus dados reference/ agrupados de forma determinística.
working_dirGUI → Working dir → ApplyA raiz de confinamento. Cada leitura/gravação de arquivo é confinada por realpath sob ela. Lida fresca a cada chamada por ambas as camadas; Apply entra em vigor ao vivo, sem reiniciar.
token / portarm.json (cunhado no arm)O token de sessão CSPRNG e a porta de loopback (padrão 9980). Você nunca digita ou vê o token.
allow_expr / allow_glslAlternância de consentimento na GUI → arm.jsonFlags de consentimento para as duas lanes de código (padrão desligado).
allow_highresarm.jsonIgnorar o teto de magnitude de renderização imposto (padrão desligado).
min_action_interval_msarm.jsonO throttle de chamadas destrutivas.

Um re-arm simples preserva os flags de consentimento e o diretório de trabalho — ele nunca redefine silenciosamente a jaula ou inverte uma lane.


Segurança

O modelo de segurança é o próprio limite, não uma sandbox. Modelo de ameaça completo, limites honestos e contato de divulgação em SECURITY.md.

  • Somente dados por construção. Não existe ferramenta execute_python / eval / run / shell. Um canário em tempo de execução (assert_no_rce_endpoints), uma proteção de tipo em tempo de execução (check_optype_allowed, que nega operadores script / execute / cplusplus e evaluateDAT) e uma cerca em tempo de compilação (catalog_never_exposes_rce_tools) garantem isso.
  • Proteção de parâmetros em camadas. Como a superfície tipada reduz a um set_par genérico, o limite real é o check_par_allowed do executor sobre a superfície de ~17.000 parâmetros do TouchDesigner: uma negação universal de nomes de parâmetros de ponteiro de código (callbacks / *script / datexpr), uma lista de negação de sumidouros de código inline revisada com generalização de regex de índice de bloco de Sequence, e uma lista de permissões com falha fechada para que parâmetros desconhecidos ou mais novos sejam recusados em vez de liberados. Esta é uma lista de negação sobre uma superfície de terceiros de código fechado: uma revisão independente de red team não encontrou bypass de RCE funcional, mas é um residual, não um limite comprovadamente completo — declarado claramente em SECURITY.md.
  • Loopback + token auto-cunhado. O Web Server DAT vincula apenas 127.0.0.1; o armamento cunha um token CSPRNG de 128 bits apresentado como X-TDMCP-Token e comparado com secrets.compare_digest. Requisições de origem cruzada (não-loopback Origin/Host) são recusadas em todos os endpoints, fechando a classe loopback-CSRF / DNS-rebind. Limites de corpo protegem contra DoS de memória.
  • Diretório de trabalho confinado a realpath. Cada operação de arquivo resolve e re-verifica contra uma única raiz, com escapes de symlink/junction fechados. O diretório de configuração (token + consentimento) e a raiz de confiança do executor (td_executor/*.py, INTEGRITY.json, arm.py) são proibidos mesmo dentro do diretório de trabalho, e ferramentas de escrita impõem listas de permissões de extensão.
  • Fixação de integridade. INTEGRITY.json fixa por hash cada .py do executor; armamento e dev_reload verificam antes da importação e falham fechado em qualquer incompatibilidade ou manipulador não fixado. Teto honesto: isso é evidência de adulteração, não um limite contra um atacante que já pode escrever no diretório de instalação — permissões de arquivo do SO são a raiz da confiança.
  • Saída é somente via fio. Gráficos de gravação/envio ao vivo são construídos com record/active desligados; você os dispara.
  • As duas vias de código validadas são desligadas por padrão e controladas por consentimento. glsl_v1 (set_glsl/validate_glsl, com sandbox de GPU — pior caso é um timeout recuperável de driver) e expr_v1 (set_expr/validate_expr, uma lista de permissões positiva de AST, enviada EXPERIMENTAL porque uma lacuna de validação aqui seria código de host). Ambas validam antes da escrita, são autoritativas para o executor, auditadas e de caminho único de escrita. A IA não pode alterar seu próprio consentimento — o componente /mcp_bridge e seus alternadores de GUI são recusados por assert_writable em toda ferramenta de mutação, e os sinalizadores vivem no diretório de configuração proibido.
  • Teto de magnitude imposto. O governador consultivo é consultivo primeiro, mas um teto rígido recusa magnitudes catastróficas que matam o driver (resolução por dimensão > 16384 px, contagens de instâncias/partículas > 5.000.000, passes de renderização > 256), substituível apenas pelo sinalizador allow_highres controlado por humano — então entrega legítima 4K/8K passa, mas um set_par descontrolado não pode travar o driver de exibição.
  • Postura pretendida: loopback, usuário único confiável, máquina confiável. O transporte deve permanecer no host local. Trate a IA como entrada semiconfiável.

Leia SECURITY.md antes de executar isso em qualquer lugar que não seja uma única máquina confiável.


Solução de problemas

Tabela completa em docs/INSTALL.md. Lista rápida:

  • O painel Status da GUI mostra Armado com sua compilação do TouchDesigner, e http://127.0.0.1:9980/health responde.
  • A configuração do cliente MCP aponta para o touchdesigner-bridge-mcp.exe compilado com TDMCP_GW_HEADLESS definido como 1 (sem isso, o binário inicia sua GUI e o handshake nunca completa).
  • TDMCP_REPO aponta para o clone (a pasta contendo reference/recipes.json), ou consultas de referência/receita falham.
  • O cliente foi totalmente reiniciado após editar sua configuração.
  • Caminhos de arquivo que você passa para ferramentas vivem dentro do diretório de trabalho configurado.
  • Se o armamento relatar "pré-verificação de integridade FALHOU, recusando armar", um arquivo do executor mudou sem regenerar o manifesto — execute python scripts/gen_integrity_manifest.py.
  • Se uma chamada de via Expr/GLSL for rejeitada, essas vias estão desligadas por padrão — alterne o consentimento em /mcp_bridge (persiste em arm.json).

Licença

Este projeto é duplamente licenciado:

A ponte não inclui binários ou dados de terceiros — o executor usa apenas a biblioteca padrão do Python e o módulo td embutido do próprio TouchDesigner, e as descrições de operadores enviadas são originais.


Suporte

Se isso economizou seu tempo e você está usando de forma não comercial, uma gorjeta é sempre apreciada — ko-fi.com/eviscerations. É voluntária e não concede licença; uso comercial é coberto por COMMERCIAL-LICENSE.md.


Desenvolvimento e testes

Os testes do executor não precisam de licença do TouchDesigner — eles rodam contra uma cena TD falsa (td_executor/tests/_tdmock.py) — então os invariantes de segurança são comprováveis em qualquer máquina. Execute todas as quatro verificações antes de abrir uma mudança:

# 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

Após qualquer edição do executor, regenere o manifesto de integridade ou o próximo armamento/recarga falha fechado:

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

Veja CONTRIBUTING.md para o loop completo de compilação / teste / armamento e os ciclos de vida de recarga.


Contribuindo

Pull requests são bem-vindos — veja CONTRIBUTING.md. Este projeto é uma superfície de controle somente de dados, e esse limite é o ponto de todo o design, então a regra mais importante para qualquer mudança é: não adicione um caminho que permita a IA executar código arbitrário. Leia SECURITY.md e ARCHITECTURE.md antes de fazer mudanças não triviais, e observe qualquer mudança de postura de segurança em CHANGELOG.md.