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):
- Obtenha o gateway — o único programa que conecta sua IA ao TouchDesigner. Ou baixe o
touchdesigner-bridge-mcp.exepré-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. - 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. - 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.pycompila 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/activedesligados, 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
realpatha 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ê vê 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_referencecarrega 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_referenceensina shaders GLSL,expr_referencea superfície de expressão de parâmetro ecode_referenceexplica 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 dicaglsl_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*_referenceas 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
.objatravé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.obje 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 ambienteTDMCP_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 umcreate_op+set_pargené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 porarm.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ódulotdembutido do próprio TouchDesigner — nenhum pacote de terceiros é empacotado ou redistribuído, nada parapip 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
- TouchDesigner — uma instalação licenciada, build 2023.11k+ ou 2025.30k+. O executor roda dentro do Python embutido do próprio TouchDesigner.
- Um toolchain Rust (estável) — apenas se você compilar o gateway manualmente; pule se você baixar o
.exepré-compilado das Releases. rustup.rs fornece ocargo. - 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. - Um cliente MCP — Claude Desktop, ou qualquer cliente que possa iniciar um servidor MCP stdio.
- 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_HEADLESS — nã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:
- 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_direm~/.touchdesigner-bridge-mcp/arm.json. - 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.1apenas — 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.jsonantes 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) emarm.json. - Monta um componente
/mcp_bridge— um Web Server DAT em loopback127.0.0.1:9980mais um DAT de callbacks fino que carrega o pacotetd_executordo disco — e adiciona alternâncias de consentimento na GUI (Allow Expr Lane / Allow GLSL Lane) que persistem emarm.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
-
Saúde do executor — com o TouchDesigner armado, abra em um navegador ou curl:
http://127.0.0.1:9980/healthO 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.
-
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 total — 509 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)
| Ferramenta | Parâmetros | Descrição |
|---|---|---|
addTOP | 26 | Compõ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. |
analyzeTOP | 19 | Reduz uma imagem a um único valor, linha ou coluna, calculando uma estatística como mínimo, máximo ou média entre os pixels. |
antialiasTOP | 21 | Suaviza bordas irregulares e serrilhadas em uma imagem com um filtro de anti-aliasing pós-processamento. |
blobtrackTOP | 37 | Detecta manchas brilhantes em uma imagem e relata suas posições e tamanhos, um rastreador óptico leve para instalações interativas. |
blurTOP | 23 | Aplica um desfoque gaussiano ou de caixa; o parâmetro de largura do filtro define quantos pixels são calculados em média. |
cacheTOP | 26 | Armazena um buffer contínuo de quadros recentes na GPU para que quadros anteriores possam ser reproduzidos ou amostrados por um Cache Select. |
cacheselectTOP | 16 | Lê um quadro escolhido do buffer armazenado de um Cache TOP por índice. |
channelmixTOP | 19 | Reconstrói cada canal de saída como uma mistura ponderada dos canais de entrada, útil para trocas de canais e matrizes de cores personalizadas. |
choptoTOP | 19 | Converte canais CHOP em uma imagem, escrevendo valores de amostra em pixels para que dados numéricos possam ser visualizados ou alimentados a shaders. |
chromakeyTOP | 29 | Remove uma cor de fundo escolhida (tela verde/azul) para produzir um matte alfa para composição. |
circleTOP | 42 | Desenha um círculo ou elipse preenchido ou contornado diretamente como uma imagem. |
compositeTOP | 34 | Camadas de múltiplas entradas juntas com uma operação de mistura selecionável, o equivalente multi-entrada dos TOPs Over/Add de duas entradas. |
constantTOP | 23 | Gera uma imagem plana de uma cor sólida e alfa na resolução escolhida. |
convolveTOP | 20 | Filtra a imagem com um kernel de convolução definido pelo usuário, fornecido como uma pequena matriz, para efeitos personalizados de nitidez/desfoque/bordas. |
cornerpinTOP | 36 | Distorce a imagem arrastando seus quatro cantos para posições arbitrárias, o padrão keystone/quad-warp para alinhamento de projeção. |
cropTOP | 23 | Extrai uma sub-região retangular da imagem, alterando a saída para esse recorte. |
crossTOP | 27 | Faz uma transição cruzada entre duas entradas por um único valor de mistura. |
cubemapTOP | 15 | Monta ou reorganiza as seis faces de um cubemap para mapeamento de ambiente e reflexos. |
depthTOP | 23 | Extrai 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. |
differenceTOP | 26 | Gera a diferença absoluta por pixel entre duas entradas, útil para detecção de mudanças. |
directdisplayoutTOP | 20 | Envia a imagem para um display diretamente conectado, ignorando o compositor da área de trabalho para saída de baixa latência. |
directxinTOP | 15 | Recebe uma textura GPU compartilhada de outro aplicativo via superfícies compartilhadas DirectX. |
directxoutTOP | 16 | Publica a imagem como uma textura DirectX compartilhada para outro aplicativo ler. |
displaceTOP | 25 | Desloca a posição de busca de cada pixel usando uma segunda imagem como mapa de deslocamento, distorcendo a imagem. |
edgeTOP | 25 | Detecta bordas medindo o contraste local, produzindo uma imagem de contorno. |
embossTOP | 21 | Produz um efeito de relevo elevado e em relevo, sombreando a partir de gradientes de intensidade local. |
feedbackTOP | 16 | Alimenta 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. |
fitTOP | 27 | Redimensiona e ajusta a entrada à resolução de saída com um modo de ajuste/estiramento escolhido. |
flipTOP | 18 | Inverte ou espelha a imagem horizontalmente e/ou verticalmente. |
glslTOP | 59 | Executa 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. |
glslmultiTOP | 59 | Um TOP de shader de fragmento GLSL que expõe múltiplas entradas de imagem para efeitos de múltiplas texturas. |
hsvadjustTOP | 24 | Desloca a matiz e escala a saturação e o valor, o ajuste de cor padrão para tonalidade e vivacidade. |
hsvtorgbTOP | 14 | Interpreta os canais de entrada como HSV e os converte para RGB. |
inTOP | 16 | O ponto de entrada de um componente TOP, expondo uma imagem externa dentro da sub-rede. |
insideTOP | 26 | Mantém a primeira entrada apenas onde o matte da segunda entrada é opaco (composição source-in). |
kinectazureTOP | 46 | Captura fluxos de imagem de profundidade, cor e infravermelho de um sensor Azure Kinect. |
layermixTOP | 34 | Mistura camadas empilhadas com opacidade e modos de mistura por camada. |
layoutTOP | 36 | Organiza múltiplas entradas em uma única imagem de grade, dimensionada por linhas e colunas. |
lensdistortTOP | 38 | Adiciona ou remove distorção de lente barril/almofada. |
levelTOP | 45 | Ajusta brilho, contraste, gama, níveis de preto/branco e opacidade, o controle de tom versátil. |
lookupTOP | 25 | Remapeia cada pixel por meio de uma tabela de consulta fornecida como uma segunda imagem, conduzindo gradações de cor e mapeamento de gradiente. |
lumablurTOP | 21 | Desfoca por uma quantidade que varia com a luminância local, para que regiões claras ou escuras se espalhem mais. |
lumalevelTOP | 32 | Ajusta níveis com base na luminância, útil para isolar realces ou sombras. |
mathTOP | 37 | Realiza aritmética por pixel (adição, multiplicação, diferença e mais) entre entradas e constantes. |
matteTOP | 16 | Aplica uma entrada como o matte alfa de outra para recortar uma forma. |
mirrorTOP | 20 | Reflete a imagem em torno de um eixo escolhido para construir simetria caleidoscópica. |
monochromeTOP | 18 | Colapsa a cor em um único canal de escala de cinza usando uma ponderação de luminância escolhida. |
moviefileinTOP | 63 | Carrega e reproduz um arquivo de filme ou imagem estática, com parâmetros para o caminho do arquivo, taxa de reprodução e corte. |
moviefileoutTOP | 70 | Grava 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. |
multiplyTOP | 26 | Multiplica os valores de pixel de suas entradas, uma mistura de modulação/escurecimento. |
ndiinTOP | 24 | Recebe vídeo pela rede como uma fonte NDI. |
ndioutTOP | 26 | Publica a imagem na rede como um fluxo NDI. |
noiseTOP | 41 | Gera imagens de ruído procedural (Perlin, simplex e outros) com transformação e harmônicos animáveis. |
normalmapTOP | 20 | Deriva 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. |
notchTOP | 29 | Reproduz e controla um bloco de efeitos Notch (.dfxdll), expondo seus parâmetros expostos. |
nullTOP | 14 | Um espaço reservado de passagem usado como um ponto de conexão estável no final de uma cadeia de imagens. |
opencolorioTOP | 40 | Aplica uma transformação de espaço de cores OpenColorIO para pipelines com gerenciamento de cores. |
opviewerTOP | 17 | Renderiza o visualizador de nó de outro operador em uma imagem para que qualquer operador possa ser visto como um TOP. |
orbbecTOP | 31 | Captura fluxos de imagem de profundidade e cor de uma câmera de profundidade Orbbec. |
orbbecselectTOP | 19 | Seleciona e extrai um fluxo de imagem, como profundidade ou cor, de um TOP Orbbec. |
outTOP | 17 | O ponto de saída de um componente TOP, exportando uma imagem para fora da sub-rede. |
outsideTOP | 26 | Mantém a primeira entrada apenas onde o matte da segunda entrada é transparente (composição source-out). |
overTOP | 26 | Compõe a primeira entrada sobre a segunda usando mistura alfa-over padrão. |
packTOP | 15 | Empacota dados de pixel em um layout ou formato de bits específico para transporte ou leitura de volta da GPU. |
photoshopinTOP | 21 | Vincula-se ao vivo a um documento Photoshop, trazendo suas camadas como uma imagem. |
pointfileinTOP | 56 | Carrega dados de arquivo de nuvem de pontos em uma textura onde cada pixel codifica a posição ou atributo de um ponto. |
pointtransformTOP | 61 | Transforma dados de pontos 3D armazenados em uma textura, aplicando translação, rotação, escala ou uma matriz de alinhamento a cada ponto. |
prefiltermapTOP | 15 | Pré-convolui um mapa de ambiente nos níveis de mip que um material PBR precisa para reflexos brilhantes. |
projectionTOP | 18 | Converte entre layouts de projeção, como equiretangular, cubemap e olho de peixe. |
rampTOP | 32 | Gera gradientes lineares, radiais ou circulares a partir de uma rampa de cores editável. |
realsenseTOP | 40 | Captura fluxos de imagem de profundidade, cor e infravermelho de uma câmera de profundidade Intel RealSense. |
rectangleTOP | 39 | Desenha um retângulo preenchido ou contornado com tamanho, posição e arredondamento de cantos ajustáveis. |
remapTOP | 24 | Distorce a primeira entrada consultando coordenadas armazenadas nos pixels de uma segunda entrada. |
renderTOP | 67 | Renderiza geometria 3D de uma câmera com luzes e materiais em uma imagem, o coração do caminho 3D-para-2D. |
renderpassTOP | 56 | Adiciona um passe de renderização extra (como uma camada ou buffer separado) a um Render TOP. |
renderselectTOP | 20 | Seleciona um buffer ou passe de saída de um Render TOP de múltiplas saídas. |
rendersimpleTOP | 31 | Um render de nó único que agrupa câmera, luz e geometria para visualizações 3D rápidas. |
renderstreaminTOP | 18 | Recebe quadros de um host disguise RenderStream, trazendo uma imagem renderizada externamente pela rede. |
renderstreamoutTOP | 19 | Envia a imagem para um host disguise RenderStream como um fluxo de saída renderizado. |
reorderTOP | 22 | Reorganiza, duplica ou preenche os canais RGBA das entradas. |
resolutionTOP | 15 | Reamostra a imagem para uma nova resolução usando um filtro escolhido. |
scalabledisplayTOP | 20 | Aplica uma calibração de warp-and-blend da Scalable Display Technologies para configurações de múltiplos projetores. |
screenTOP | 26 | Compõe duas entradas com o modo de mistura Screen para um efeito de clareamento. |
screengrabTOP | 27 | Captura a área de trabalho ou uma região de exibição em uma imagem. |
sharedmeminTOP | 18 | Lê uma imagem de um bloco de memória compartilhada escrito por outro processo. |
sharedmemoutTOP | 20 | Escreve a imagem em um bloco de memória compartilhada para outro processo ler. |
slopeTOP | 24 | Calcula o gradiente local (inclinação) da imagem, frequentemente um precursor para mapas normais ou sombreamento de bordas. |
spectrumTOP | 18 | Transforma a imagem de e para seu espectro de frequência via FFT para filtragem no domínio da frequência. |
st2110inTOP | 31 | Recebe vídeo não comprimido por IP seguindo o padrão SMPTE ST 2110. |
st2110outTOP | 47 | Transmite vídeo não comprimido por IP seguindo o padrão SMPTE ST 2110. |
substanceTOP | 19 | Renderiza um material procedural Substance (.sbsar), expondo seus parâmetros publicados. |
subtractTOP | 26 | Subtrai os pixels da segunda entrada da primeira. |
switchTOP | 17 | Passa uma de várias entradas escolhidas por um índice, para comutação A/B e sequenciamento. |
syphonspoutinTOP | 16 | Recebe uma textura GPU compartilhada via Syphon (macOS) ou Spout (Windows). |
syphonspoutoutTOP | 16 | Publica a imagem como uma textura GPU compartilhada via Syphon (macOS) ou Spout (Windows). |
textTOP | 78 | Renderiza texto em uma imagem com controle sobre fonte, tamanho, alinhamento e cor. |
tileTOP | 36 | Organiza 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. |
touchinTOP | 20 | Recebe uma imagem de outra instância do TouchDesigner pela rede. |
touchoutTOP | 20 | Envia a imagem para outra instância do TouchDesigner pela rede. |
transformTOP | 30 | Translada, rotaciona, escala e organiza a imagem dentro de seu quadro. |
underTOP | 26 | Compõe a segunda entrada sobre a primeira (o inverso de Over). |
videodeviceinTOP | 55 | Captura vídeo ao vivo de uma câmera ou placa de captura. |
videodeviceoutTOP | 35 | Envia a imagem para um dispositivo de vídeo SDI/HDMI ou outro hardware de vídeo. |
videostreaminTOP | 31 | Recebe um fluxo de vídeo comprimido, como RTSP, RTMP ou SRT. |
viosoTOP | 21 | Aplica uma calibração de warp-and-blend de projeção VIOSO para alinhamento de múltiplos projetores. |
webrenderTOP | 34 | Renderiza uma página web ou URL em uma imagem usando um navegador embutido. |
CHOP — canais / sinais / temporização (137)
| Ferramenta | Parâmetros | Descrição |
|---|---|---|
abletonlinkCHOP | 28 | Sincroniza tempo, fase e batida com peers na rede via Ableton Link. |
analyzeCHOP | 14 | Reduz canais a uma única estatística por canal, como média, máximo ou comprimento. |
angleCHOP | 13 | Converte entre representações de ângulo, por exemplo graus, radianos, quaternions e vetores de direção. |
attributeCHOP | 11 | Etiqueta canais com atributos como ordem de rotação ou tipo de quaternion que operadores downstream respeitam. |
audiobandeqCHOP | 26 | Um equalizador gráfico multibanda que aumenta ou corta bandas de frequência fixas de um sinal de áudio. |
audiobinauralCHOP | 14 | Espacializa áudio em um mix binaural (3D para fones de ouvido) a partir de posições de fonte e ouvinte. |
audiodeviceinCHOP | 40 | Captura amostras de áudio de um dispositivo de entrada, como microfone ou interface. |
audiodeviceoutCHOP | 41 | Reproduz canais como áudio para um dispositivo de saída. |
audiodynamicsCHOP | 25 | Aplica dinâmicas de compressão, limitação e gate a um sinal de áudio. |
audiofileinCHOP | 31 | Lê amostras de áudio de um arquivo para reprodução ou análise. |
audiofileoutCHOP | 18 | Grava canais de áudio em um arquivo de som. |
audiofilterCHOP | 16 | Filtra um sinal de áudio com resposta passa-baixa, passa-alta, passa-banda ou rejeita-banda e cutoff ajustável. |
audiomovieCHOP | 19 | Extrai a trilha de áudio que acompanha um filme reproduzido por um Movie File In TOP. |
audiondiCHOP | 11 | Envia ou recebe áudio embutido em um stream NDI. |
audiooscillatorCHOP | 20 | Gera tons e formas de onda em taxa de áudio a partir de uma entrada de frequência. |
audioparaeqCHOP | 26 | Um equalizador paramétrico com frequência central, ganho e Q ajustáveis por banda. |
audioplayCHOP | 37 | Reproduz um arquivo de som sob demanda, frequentemente acionado por um evento. |
audiorenderCHOP | 48 | Renderiza uma cena de áudio espacial a partir de fontes sonoras e um ouvinte em canais de saída. |
audiospectrumCHOP | 15 | Calcula o espectro de frequência de um sinal de áudio via FFT para visualização ou reatividade. |
audiostreaminCHOP | 21 | Recebe áudio transmitido pela rede. |
audiostreamoutCHOP | 16 | Transmite canais de áudio pela rede. |
audiovstCHOP | 27 | Hospeda um plug-in de áudio VST e expõe seus parâmetros. |
audiowebrenderCHOP | 11 | Captura o áudio produzido por um Web Render TOP. |
beatCHOP | 34 | Executa um relógio musical travado a um tempo, emitindo rampas de batida, contagens e gatilhos de pulso. |
blacktraxCHOP | 22 | Recebe dados de posição e orientação em tempo real de um sistema de rastreamento BlackTrax. |
blendCHOP | 12 | Mistura múltiplos conjuntos de canais de entrada usando canais de ponderação, para mixagem ponderada de pose ou valor. |
blobtrackCHOP | 25 | Relata posições e tamanhos de blobs rastreados como canais. |
clipCHOP | 24 | Reproduz clipes de canais gravados com controle de taxa e intervalo. |
clipblenderCHOP | 38 | Mistura e sequencia clipes de animação em um fluxo de movimento contínuo. |
clockCHOP | 36 | Emite componentes de tempo de relógio de parede, como horas, minutos, segundos e frame. |
compositeCHOP | 27 | Sobrepoõe e combina canais de múltiplas entradas, alinhando-os no tempo. |
constantCHOP | 22 | Produz canais que mantêm valores constantes que você digita. |
copyCHOP | 17 | Repete ou copia os canais da primeira entrada uma vez por amostra de uma segunda entrada. |
countCHOP | 25 | Conta cruzamentos de limiar ou gatilhos em sua entrada e emite o total acumulado. |
crossCHOP | 10 | Faz cross-fade entre dois conjuntos de canais por uma quantidade de mistura. |
cycleCHOP | 20 | Repete um canal um número de vezes, opcionalmente mesclando as emendas em um loop contínuo. |
dattoCHOP | 31 | Lê uma tabela DAT e transforma suas linhas ou colunas em canais. |
delayCHOP | 12 | Atrasa canais por um deslocamento de tempo fixo. |
deleteCHOP | 32 | Remove canais selecionados ou corta amostras por padrão de nome ou intervalo. |
dmxinCHOP | 31 | Recebe dados de controle de iluminação (DMX via Art-Net ou sACN) como canais. |
dmxoutCHOP | 34 | Envia canais como dados de controle de iluminação DMX. |
envelopeCHOP | 17 | Segue o envelope de amplitude em movimento (pico ou RMS) de um sinal. |
eventCHOP | 33 | Transforma eventos discretos em canais com durações e formas. |
expressionCHOP | 13 | Aplica 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. |
extendCHOP | 12 | Define como cada canal se comporta antes de sua primeira e depois de sua última amostra (hold, cycle, mirror ou default). |
fanCHOP | 14 | Expande um único canal em muitos, ou dobra muitos canais em um, por índice. |
feedbackCHOP | 12 | Alimenta sua própria saída anterior de volta para processamento recursivo de canal com atraso de frame. |
fileinCHOP | 20 | Lê dados de canal de um arquivo ou URL. |
fileoutCHOP | 12 | Acrescenta ou grava canais em um arquivo. |
filterCHOP | 26 | Suaviza canais com passa-baixa ao longo do tempo para remover jitter, com largura de filtro ajustável. |
freedinCHOP | 15 | Recebe dados de rastreamento de câmera pelo protocolo FreeD como canais de pan, tilt, zoom e posição. |
functionCHOP | 19 | Aplica uma função matemática (trigonométrica, logarítmica, potência e assim por diante) a cada canal. |
gestureCHOP | 21 | Grava um movimento e o reproduz como um canal de gesto reutilizável. |
handleCHOP | 15 | Resolve cinemática inversa baseada em handles para rigs de personagens. |
hogCHOP | 13 | Consome deliberadamente tempo de cook para perfilar e testar desempenho sob estresse. |
hokuyoCHOP | 19 | Lê amostras de distância de um scanner a laser de alcance Hokuyo. |
holdCHOP | 12 | Amostra a primeira entrada e mantém esse valor sempre que uma segunda entrada de gatilho dispara. |
inCHOP | 14 | O tap de entrada de um componente CHOP. |
infoCHOP | 16 | Expõe informações numéricas de outro operador (tempo de cook, contagens de amostras e status) como canais. |
interpolateCHOP | 12 | Interpola suavemente entre conjuntos sucessivos de canais de entrada ou keyframes. |
inversecurveCHOP | 17 | Resolve uma curva de cinemática inversa para curvatura suave de cadeia. |
inversekinCHOP | 17 | Resolve cinemática inversa de dois ossos a partir de uma posição de objetivo. |
joinCHOP | 27 | Une canais ponta a ponta no tempo para construir uma sequência mais longa. |
joystickCHOP | 31 | Lê eixos e botões de um joystick ou controle de jogo. |
keyboardinCHOP | 18 | Relata o estado pressionado de teclas do teclado como canais. |
keyframeCHOP | 14 | Mantém uma animação de keyframe editável e a avalia em canais. |
kinectazureCHOP | 23 | Rastreia articulações do corpo esquelético de um sensor Azure Kinect, emitindo canais de posição e orientação por articulação. |
lagCHOP | 22 | Adiciona inércia, lag e limites de slew rate para que canais se aproximem suavemente de novos valores. |
laserCHOP | 42 | Prepara dados de caminho para saída de projeção a laser. |
laserdeviceCHOP | 23 | Aciona um DAC de projetor a laser com canais de laser preparados. |
leuzerod4CHOP | 25 | Lê dados de distância de um scanner a laser Leuze ROD4. |
lfoCHOP | 20 | Um oscilador de baixa frequência gerando ondas senoidais, rampa, quadrada e pulso para animação. |
limitCHOP | 24 | Limita valores de canal a um intervalo e opcionalmente os quantiza a um passo. |
logicCHOP | 16 | Executa lógica booleana e comparações entre canais, emitindo resultados liga/desliga. |
lookupCHOP | 17 | Usa a primeira entrada como índice na tabela de consulta da segunda entrada. |
ltcinCHOP | 16 | Decodifica timecode linear SMPTE de áudio em canais de tempo. |
ltcoutCHOP | 29 | Codifica canais de tempo como áudio de timecode linear SMPTE. |
mathCHOP | 22 | Executa aritmética e remapeamento de intervalo em canais (adicionar, multiplicar, intervalos de/de). |
mergeCHOP | 11 | Combina os canais de várias entradas em uma única saída. |
midiinCHOP | 64 | Traz notas MIDI e controladores como canais. |
midiinmapCHOP | 19 | Mapeia mensagens MIDI recebidas para canais nomeados via uma tabela de mapeamento. |
midioutCHOP | 32 | Envia canais como notas MIDI e controladores. |
mosysCHOP | 16 | Recebe dados de rastreamento de câmera de um sistema Mo-Sys como canais de posição, orientação e lente. |
mouseinCHOP | 24 | Relata posição do mouse e estado de botões como canais. |
mouseoutCHOP | 15 | Aciona a posição do mouse do sistema a partir de canais. |
ncamCHOP | 17 | Recebe dados de rastreamento de câmera de um sistema Ncam como canais de posição, orientação e lente. |
noiseCHOP | 41 | Gera canais de ruído procedural coerente ao longo do tempo. |
nullCHOP | 13 | Um tap de passagem, o endpoint estável recomendado para exportações e referências. |
objectCHOP | 42 | Emite a transformação ou relação (posição, rotação, distância) entre dois objetos 3D. |
optitrackinCHOP | 19 | Recebe dados de corpo rígido e marcadores de um sistema de captura de movimento OptiTrack. |
oscinCHOP | 27 | Recebe mensagens OSC e mapeia seus valores para canais. |
oscoutCHOP | 22 | Envia valores de canal como mensagens OSC. |
outCHOP | 12 | O tap de saída de um componente CHOP. |
overrideCHOP | 13 | Passa a entrada que mudou mais recentemente, permitindo que vários controladores compartilhem uma saída. |
panelCHOP | 14 | Expõe valores de interação de um componente de painel (estado, clique, rolagem) como canais. |
pangolinCHOP | 20 | Controla software de laser Pangolin a partir de canais. |
pantiltCHOP | 15 | Calcula ângulos de pan e tilt para apontar um dispositivo a um alvo. |
parameterCHOP | 18 | Lê os valores avaliados dos parâmetros de um operador em canais. |
patternCHOP | 32 | Gera um padrão moldado entre amostras (rampa, gaussiana, seno e mais). |
performCHOP | 36 | Expõe estatísticas de desempenho em tempo real, como tempo de frame e contagens de cook, como canais. |
phaserCHOP | 13 | Produz um sinal de animação com deslocamento de fase, deslocando a fase do canal ao longo do tempo. |
pipeinCHOP | 25 | Recebe canais por um pipe TCP de outro processo. |
pipeoutCHOP | 21 | Envia canais por um pipe TCP para outro processo; seu parâmetro que carrega script é omitido desta superfície somente de dados. |
poptoCHOP | 25 | Lê atributos de pontos POP em canais. |
posistagenetCHOP | 19 | Recebe posições de rastreamento de palco PosiStageNet como canais. |
pulseCHOP | 33 | Emite picos de pulso em um intervalo ou contagem definida. |
recordCHOP | 16 | Grava canais recebidos em um buffer que pode ser reproduzido. |
renameCHOP | 9 | Renomeia canais usando padrões de nome de/de. |
renderpickCHOP | 48 | Seleciona geometria 3D sob coordenadas dadas em um render e retorna a posição do hit e informações como canais. |
renderstreaminCHOP | 18 | Recebe dados de controle de uma sessão RenderStream do disguise. |
reorderCHOP | 18 | Reordena os canais dentro do stream. |
replaceCHOP | 11 | Substitui canais na primeira entrada por canais de nome correspondente da segunda. |
resampleCHOP | 22 | Reamostra canais para uma nova taxa de amostragem ou intervalo de tempo. |
selectCHOP | 16 | Referencia canais por nome de outro CHOP em qualquer lugar do projeto. |
serialCHOP | 17 | Lê e grava um dispositivo serial (RS-232/USB) como canais. |
shiftCHOP | 17 | Desloca um canal para frente ou para trás no tempo. |
shuffleCHOP | 12 | Remodela o layout entre canais e amostras (operações semelhantes a transposição). |
soptoCHOP | 24 | Lê atributos de pontos ou primitivas SOP em canais. |
sortCHOP | 16 | Ordena canais ou suas amostras por valor ou nome. |
speedCHOP | 22 | Integra um canal de velocidade em posição, ou escala o fluxo do tempo. |
st2110deviceCHOP | 31 | Expõe dados de áudio e auxiliares de um dispositivo de vídeo IP ST 2110 como canais. |
stretchCHOP | 18 | Estica ou comprime canais para um novo comprimento preservando sua forma. |
stypeinCHOP | 16 | Recebe dados de rastreamento de câmera de um sistema Stype como canais de posição, orientação e lente. |
switchCHOP | 12 | Seleciona uma de várias entradas por índice. |
syncinCHOP | 16 | Recebe sincronização de tempo de um Sync Out CHOP pela rede para manter múltiplas máquinas com quadros sincronizados. |
syncoutCHOP | 20 | Coordena a sincronização de quadros entre múltiplas máquinas. |
tabletCHOP | 40 | Lê pressão, inclinação e posição da caneta de uma mesa digitalizadora. |
timecodeCHOP | 40 | Representa um valor de timecode como canais de hora/minuto/segundo/quadro. |
timelineCHOP | 25 | Gera a posição atual da linha do tempo em quadros e segundos. |
timerCHOP | 73 | Um temporizador programável com segmentos, ciclos e pulsos de conclusão para sequenciamento. |
toptoCHOP | 39 | Amostra pixels de um TOP em canais. |
touchinCHOP | 23 | Recebe canais de outra instância do TouchDesigner pela rede. |
touchoutCHOP | 18 | Envia canais para outra instância do TouchDesigner pela rede. |
trailCHOP | 19 | Exibe um gráfico de histórico rolante de seus canais de entrada para monitoramento. |
triggerCHOP | 46 | Gera um envelope attack-decay-sustain-release cada vez que a entrada cruza um limite. |
trimCHOP | 16 | Apara canais para um tempo de início e fim. |
waveCHOP | 30 | Gera 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)
| Ferramenta | Parâmetros | Descrição |
|---|---|---|
addSOP | 17 | Cria pontos e polígonos individuais, ou conecta pontos existentes em novas primitivas. |
alembicSOP | 11 | Carrega geometria de um arquivo de cache Alembic (.abc). |
alignSOP | 17 | Alinha geometrias de entrada entre si por caixa delimitadora ou transformação. |
armSOP | 34 | Constrói ou edita um braço/cadeia articulada de geometria. |
attributeSOP | 13 | Cria, renomeia, exclui ou edita atributos de ponto, vértice, primitiva e detalhe. |
attributecreateSOP | 4 | Adiciona novos atributos à geometria e inicializa seus valores. |
basisSOP | 30 | Edita a base paramétrica (vetor de nós e ordem) de curvas e superfícies NURBS. |
blendSOP | 9 | Mistura posições de pontos entre entradas topologicamente correspondentes por peso, para interpolação de forma. |
bonegroupSOP | 3 | Cria grupos de pontos com base em regiões de captura de ossos esqueléticos. |
booleanSOP | 6 | Calcula união, interseção ou diferença booleana entre malhas sólidas. |
boxSOP | 18 | Gera uma caixa ou cubo com tamanho e divisões ajustáveis. |
bridgeSOP | 15 | Constrói uma superfície de pele que faz a ponte entre loops de borda ou perfis. |
cacheSOP | 9 | Mantém um buffer de quadros de geometria na memória para reprodução. |
capSOP | 16 | Fecha as extremidades abertas de tubos e superfícies com faces planas ou arredondadas. |
captureSOP | 9 | Atribui pesos de captura ligando pontos de geometria a um esqueleto para skinning. |
captureregionSOP | 9 | Define a região de influência de captura de um osso. |
carveSOP | 20 | Corta, fatia ou extrai porções de curvas e superfícies ao longo de suas coordenadas paramétricas. |
choptoSOP | 10 | Cria ou conduz geometria a partir de canais CHOP, por exemplo, animando pontos a partir de dados de canal. |
circleSOP | 16 | Gera um círculo ou arco como curva ou polígono. |
claySOP | 24 | Deforma uma superfície empurrando e puxando seus pontos de controle como argila de modelagem. |
clipSOP | 8 | Recorta geometria contra um plano, mantendo um lado ou dividindo no corte. |
convertSOP | 17 | Converte geometria entre tipos como polígono, malha, NURBS e Bezier. |
copySOP | 35 | Copia geometria em pontos de template ou com uma pilha de transformações, o SOP central de instancing/stamping. |
creepSOP | 5 | Desliza e deforma geometria para que ela rasteje ao longo da superfície de outra. |
curveclaySOP | 13 | Esculpe curvas puxando seus pontos de controle. |
curvesectSOP | 11 | Encontra interseções entre curvas e superfícies, gerando os pontos de cruzamento. |
dattoSOP | 15 | Constrói geometria (pontos e primitivas) a partir das linhas de uma tabela DAT. |
deformSOP | 6 | Deforma geometria capturada para seguir seu esqueleto (a etapa de deformação por skinning). |
deleteSOP | 21 | Exclui 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. |
divideSOP | 14 | Subdivide, triangula ou transforma polígonos em blocos para alterar sua tesselação. |
extrudeSOP | 21 | Extrude faces ou bordas para adicionar profundidade e bisel. |
facetSOP | 14 | Controla normais e facetamento, unificando pontos e criando arestas vivas para sombreamento plano ou suave. |
fileinSOP | 5 | Carrega geometria de um arquivo como OBJ. |
filletSOP | 16 | Cria superfícies ou curvas de filete arredondado entre duas entradas. |
fitSOP | 17 | Ajusta uma curva ou superfície NURBS através de um conjunto de pontos. |
forceSOP | 8 | Define um campo de força ao qual sistemas de partículas e metaballs respondem. |
fractalSOP | 9 | Desloca pontos com ruído fractal para enrugar uma superfície. |
gridSOP | 18 | Gera uma grade plana de pontos ou polígonos com linhas e colunas ajustáveis. |
groupSOP | 46 | Cria 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. |
holeSOP | 6 | Transforma faces fechadas em buracos na face circundante. |
inSOP | 3 | O ponto de entrada de um componente SOP. |
inversecurveSOP | 2 | Calcula uma solução de curva inversa para geometria encadeada. |
isosurfaceSOP | 6 | Constrói uma superfície em um valor constante de uma função 3D implícita. |
joinSOP | 12 | Une múltiplas curvas ou superfícies em primitivas contínuas únicas. |
jointSOP | 12 | Cria um esqueleto de juntas e ossos para rigging. |
latticeSOP | 6 | Deforma geometria movendo os pontos de uma gaiola de lattice circundante. |
limitSOP | 39 | Coloca geometria (esferas, caixas ou templates) em pontos de dados ou limites de valor. |
lineSOP | 5 | Cria uma polilinha reta entre pontos finais com um número escolhido de pontos. |
linethickSOP | 9 | Dá espessura a polilinhas, convertendo-as em fitas ou tubos. |
lodSOP | 9 | Alterna entre versões de nível de detalhe da geometria com base na distância de visualização. |
lsystemSOP | 35 | Cultiva plantas procedurais e fractais a partir de um conjunto de regras L-system. |
magnetSOP | 13 | Deforma geometria dentro de uma região de falloff usando um ímã em forma de metaball. |
materialSOP | 2 | Atribui um material a primitivas de geometria. |
mergeSOP | 2 | Mescla várias geometrias em uma. |
metaballSOP | 9 | Cria metaballs que se misturam em superfícies suaves e irregulares. |
modelSOP | 1 | Mantém geometria de modelo editável manualmente. |
noiseSOP | 20 | Desloca pontos com ruído coerente animado. |
nullSOP | 1 | Um ponto de passagem, o endpoint estável recomendado de uma cadeia de geometria. |
objectmergeSOP | 3 | Puxa geometria de outros SOPs por caminho, opcionalmente aplicando suas transformações de objeto. |
outSOP | 4 | O ponto de saída de um componente SOP. |
particleSOP | 39 | Um sistema de partículas CPU legado conduzido por forças e colisões. |
pointSOP | 43 | Edita posições e atributos de pontos diretamente, incluindo a criação de atributos padrão. |
polyloftSOP | 13 | Cria superfícies poligonais lofted através de uma série de curvas de seção transversal. |
polypatchSOP | 12 | Constrói um patch de spline suave a partir de uma malha de controle poligonal. |
polyreduceSOP | 16 | Reduz a contagem de polígonos preservando a forma geral. |
polysplineSOP | 11 | Ajusta splines suaves através de bordas de polígonos para arredondá-las. |
polystitchSOP | 7 | Costura juntas costuras e rachaduras entre superfícies poligonais. |
primitiveSOP | 34 | Edita atributos e transformações no nível de primitiva. |
profileSOP | 14 | Extrai e edita curvas de perfil situadas em superfícies. |
projectSOP | 21 | Projeta curvas em uma superfície para criar curvas de perfil. |
railsSOP | 16 | Varre curvas de seção transversal ao longo de uma ou duas curvas-guia. |
raySOP | 16 | Projeta pontos em uma superfície alvo ao longo de uma direção de raio, um shrink-wrap. |
rectangleSOP | 16 | Cria uma curva ou polígono retangular. |
refineSOP | 18 | Refina curvas e superfícies adicionando pontos ou elevando sua ordem sem alterar a forma. |
resampleSOP | 11 | Reamostra curvas em pontos ou segmentos uniformemente espaçados. |
skinSOP | 12 | Constrói uma superfície de pele através de um conjunto de curvas de perfil. |
sphereSOP | 23 | Gera uma esfera como polígonos, malha ou NURBS. |
textSOP | 30 | Cria geometria de texto 3D a partir de uma fonte e string. |
transformSOP | 27 | Translada, rotaciona e escala geometria. |
COMP — componentes / 3D / contêineres (30)
| Ferramenta | Parâmetros | Descrição |
|---|---|---|
actorCOMP | 153 | Um ator de corpo rígido ou macio participando de uma simulação de física Bullet. |
ambientlightCOMP | 86 | Adiciona luz ambiente uniforme a uma cena 3D. |
animationCOMP | 43 | Um componente que mantém e edita canais de animação de keyframe. |
annotateCOMP | 55 | Uma caixa de comentário redimensionável para anotar e organizar a rede. |
baseCOMP | 22 | Um contêiner de propósito geral sem painel, usado para agrupar e modularizar operadores. |
blendCOMP | 138 | Mistura as transformações de vários componentes de objeto por peso, um pai ponderado. |
boneCOMP | 140 | Um único osso dentro de uma hierarquia esquelética para rigging de personagens. |
bulletsolverCOMP | 137 | O solucionador de dinâmica Bullet que avança uma simulação de física de corpo rígido. |
buttonCOMP | 132 | Um widget de painel de botão clicável que emite um valor de estado. |
cameraCOMP | 84 | Uma câmera 3D definindo a visão e projeção usadas para renderizar uma cena. |
camerablendCOMP | 100 | Mistura suavemente entre várias câmeras. |
containerCOMP | 122 | Um contêiner de painel que organiza outros painéis para construir interfaces de usuário. |
engineCOMP | 43 | Executa um componente .tox exportado em um processo separado via TouchEngine para isolamento e escalabilidade. |
environmentlightCOMP | 92 | Fornece iluminação de ambiente baseada em imagem para renderização fisicamente baseada. |
fbxCOMP | 161 | Importa uma cena FBX, trazendo sua geometria, materiais e hierarquia. |
fieldCOMP | 136 | Um widget de campo de entrada de texto para entrada do usuário. |
geometryCOMP | 124 | Coloca geometria SOP na cena 3D com transformação, material e flags de renderização, o nó de objeto que um Render TOP desenha. |
geotextCOMP | 163 | Renderiza texto 3D como geometria de cena. |
handleCOMP | 134 | Uma alça de manipulação interativa no viewport 3D. |
lightCOMP | 117 | Uma fonte de luz 3D (ponto, cone ou distante) iluminando uma cena renderizada. |
listCOMP | 130 | Um widget de painel de lista ou grade scriptável para linhas de itens. |
nullCOMP | 124 | Uma transformação de objeto pass-through usada como pai estável ou ponto de acesso na hierarquia de objetos. |
opviewerCOMP | 127 | Incorpora o viewer de outro operador dentro de um painel. |
parameterCOMP | 137 | Um componente que apresenta parâmetros personalizados como um painel de interface de usuário. |
replicatorCOMP | 41 | Cria 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. |
sliderCOMP | 139 | Um widget de painel deslizante unidimensional ou bidimensional. |
textCOMP | 175 | Um widget de painel de exibição de texto. |
timeCOMP | 33 | Define uma linha do tempo local independente (taxa de quadros e intervalo) para uma sub-rede. |
usdCOMP | 158 | Importa uma cena Universal Scene Description (USD). |
windowCOMP | 53 | Define uma janela de saída ou exibição em tela cheia em um monitor escolhido. |
MAT — materiais / sombreamento (10)
| Ferramenta | Parâmetros | Descrição |
|---|---|---|
constantMAT | 48 | Um material não iluminado que sombreia superfícies com uma única cor plana e alfa. |
depthMAT | 34 | Sombreia superfícies por sua profundidade para uso em passes de profundidade e efeitos. |
glslMAT | 78 | Um 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. |
inMAT | 36 | O ponto de entrada de um componente de material. |
lineMAT | 109 | Um material para renderizar linhas e wireframes com controle de largura e cor. |
nullMAT | 34 | Um ponto de passagem de material. |
outMAT | 37 | O ponto de saída de um componente de material. |
pbrMAT | 185 | Um material fisicamente baseado usando metalness, rugosidade e mapas de textura para iluminação realista. |
phongMAT | 213 | Um 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. |
pointspriteMAT | 55 | Renderiza pontos como sprites texturizados voltados para a câmera. |
DAT — dados / tabelas / referências (51)
| Ferramenta | Parâmetros | Descrição |
|---|---|---|
artnetDAT | 9 | Recebe universos DMX Art-Net em uma tabela. |
audiodevicesDAT | 10 | Lista os dispositivos de entrada e saída de áudio disponíveis. |
choptoDAT | 9 | Escreve canais CHOP em uma tabela de amostras. |
clipDAT | 13 | Armazena metadados de clipes em formato de tabela. |
convertDAT | 9 | Converte entre representações de tabela e texto, como CSV, TSV e texto livre. |
dmxmapDAT | 13 | Define um mapeamento de canais DMX para slots nomeados. |
errorDAT | 15 | Coleta os erros e avisos relatados pelos operadores no projeto. |
etherdreamDAT | 8 | Controla um DAC laser Ether Dream. |
evaluateDAT | 30 | Avalia 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. |
examineDAT | 21 | Inspeciona variáveis e objetos para depuração; seu parâmetro de expressão é omitido desta superfície somente de dados. |
fifoDAT | 11 | Uma tabela primeiro a entrar, primeiro a sair que descarta as linhas mais antigas conforme novas chegam. |
fileinDAT | 9 | Lê texto ou uma tabela de um arquivo ou URL. |
fileoutDAT | 8 | Escreve o conteúdo de um DAT em um arquivo. |
folderDAT | 38 | Lista os arquivos e pastas de um diretório como uma tabela. |
inDAT | 7 | O ponto de entrada de um componente DAT. |
infoDAT | 8 | Relata os metadados e informações de outro operador como uma tabela. |
insertDAT | 13 | Insere linhas ou colunas em uma tabela; seu parâmetro de expressão de substituição é omitido desta superfície somente de dados. |
jsonDAT | 12 | Analisa 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. |
keyboardinDAT | 17 | Registra eventos de teclas do teclado em uma tabela. |
mediafileinfoDAT | 10 | Relata metadados (codec, resolução, duração) sobre um arquivo de mídia. |
mergeDAT | 10 | Mescla tabelas ou texto de várias entradas, por linhas ou colunas. |
midieventDAT | 21 | Registra eventos MIDI recebidos como linhas de tabela. |
midiinDAT | 22 | Registra mensagens MIDI recebidas em uma tabela. |
monitorsDAT | 9 | Lista os monitores conectados e suas propriedades. |
mqttclientDAT | 21 | Um cliente MQTT que publica e assina tópicos. |
multitouchinDAT | 23 | Relata eventos de contato multitoque como uma tabela. |
ndiDAT | 8 | Lista as fontes de vídeo NDI disponíveis na rede. |
nullDAT | 5 | Um ponto de passagem para tabelas. |
opfindDAT | 65 | Pesquisa a rede e lista operadores que correspondem a critérios de nome, tipo ou propriedade. |
oscinDAT | 22 | Recebe mensagens OSC como linhas de tabela. |
oscoutDAT | 22 | Envia linhas de tabela como mensagens OSC. |
outDAT | 8 | O ponto de saída de um componente DAT. |
parameterDAT | 45 | Expõe os parâmetros de um operador como uma tabela editável de nomes e valores. |
performDAT | 22 | Relata dados de desempenho quadro a quadro como uma tabela. |
poptoDAT | 23 | Escreve atributos POP em uma tabela. |
renderpickDAT | 38 | Relata resultados de seleção 3D (geometria e posição atingidas) como uma tabela. |
reorderDAT | 11 | Reordena as linhas ou colunas de uma tabela. |
serialDAT | 20 | Lê e escreve texto em um dispositivo serial. |
serialdevicesDAT | 9 | Lista as portas seriais disponíveis. |
socketioDAT | 15 | Um cliente Socket.IO para mensagens web em tempo real. |
soptoDAT | 10 | Escreve atributos SOP em uma tabela. |
tableDAT | 18 | Uma 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. |
tcpipDAT | 19 | Um cliente ou servidor TCP/IP que troca mensagens de texto. |
textDAT | 10 | Armazena texto de formato livre, frequentemente usado para guardar código-fonte de shader ou script referenciado por outros operadores. |
udpinDAT | 19 | Recebe datagramas UDP como linhas de tabela. |
videodevicesDAT | 10 | Lista os dispositivos de captura de vídeo disponíveis. |
webclientDAT | 24 | Emite solicitações HTTP e captura as respostas. |
webrtcDAT | 14 | Lida com sinalização WebRTC e mensagens de canal de dados. |
webserverDAT | 15 | Hospeda um servidor HTTP e WebSocket para clientes externos. |
websocketDAT | 16 | Um cliente ou servidor WebSocket para mensagens bidirecionais. |
xmlDAT | 23 | Analisa XML ou HTML em uma tabela navegável. |
POP — pontos / partículas (GPU) (96)
| Ferramenta | Parâmetros | Descrição |
|---|---|---|
accumulatePOP | 13 | Acumula ou integra atributos de pontos entre quadros. |
alembicoutPOP | 28 | Grava geometria de pontos em um cache Alembic. |
analyzePOP | 25 | Reduz atributos de pontos a estatísticas resumidas. |
attributePOP | 30 | Cria, edita ou remove atributos de pontos. |
attributecombinePOP | 12 | Combina atributos correspondentes de múltiplas entradas de pontos. |
attributeconvertPOP | 11 | Converte o tipo ou a precisão numérica de um atributo. |
blendPOP | 18 | Mistura atributos de pontos entre entradas por peso. |
boxPOP | 23 | Gera pontos organizados como uma caixa. |
cachePOP | 14 | Armazena em buffer quadros de dados de pontos para reprodução. |
cacheblendPOP | 14 | Faz a mistura entre quadros em cache de dados de pontos. |
cacheselectPOP | 9 | Seleciona um quadro específico em cache de dados de pontos. |
choptoPOP | 24 | Cria pontos a partir de dados de canais CHOP. |
circlePOP | 22 | Gera pontos organizados em um círculo. |
connectivityPOP | 11 | Rotula pontos de acordo com o componente conectado ao qual pertencem. |
convertPOP | 6 | Converte geometria de pontos entre representações. |
copyPOP | 46 | Copia pontos sobre outros pontos ou com transformações, para instanciamento. |
curvePOP | 36 | Gera uma curva descrita por pontos. |
dattoPOP | 47 | Constrói pontos a partir das linhas de um DAT. |
deletePOP | 36 | Exclui pontos selecionados por grupo ou condição. |
dimensionPOP | 8 | Mede ou define as dimensões delimitadoras do conjunto de pontos. |
dmxfixturePOP | 25 | Mapeia pontos para luminárias de iluminação DMX. |
dmxoutPOP | 31 | Envia dados de pontos como DMX. |
extrudePOP | 17 | Extrui geometria de pontos para adicionar profundidade. |
facetPOP | 18 | Ajusta normais e facetamento da geometria de pontos. |
feedbackPOP | 11 | Realimenta a saída de pontos para processamento recursivo com atraso de quadro. |
fieldPOP | 47 | Cria ou amostra um campo espacial sobre pontos. |
fileinPOP | 12 | Carrega pontos de um arquivo. |
fileoutPOP | 23 | Grava pontos em um arquivo. |
forceradialPOP | 34 | Aplica uma força radial (atração/repulsão) aos pontos. |
glslPOP | 62 | Executa um programa de computação GLSL sobre pontos, com o código-fonte do programa fornecido por meio de um DAT referenciado. |
glsladvancedPOP | 119 | Um operador de pontos GLSL multi-buffer para fluxos de trabalho avançados de computação, originado de DATs referenciados. |
glslcopyPOP | 57 | Usa um programa GLSL para conduzir a cópia ou o instanciamento de pontos. |
glslselectPOP | 7 | Seleciona pontos usando um programa GLSL. |
gridPOP | 26 | Gera pontos organizados em uma grade. |
groupPOP | 42 | Agrupa pontos por condição ou região. |
histogramPOP | 14 | Calcula um histograma dos valores de um atributo. |
importselectPOP | 28 | Seleciona e importa um subconjunto de dados de pontos. |
inPOP | 7 | A entrada de toque de um componente POP. |
limitPOP | 23 | Limita atributos de pontos a um intervalo. |
linePOP | 31 | Gera pontos organizados em uma linha. |
linebreakPOP | 20 | Divide polilinhas em segmentos separados. |
linedividePOP | 34 | Divide polilinhas em mais segmentos. |
linemetricsPOP | 59 | Mede o comprimento da linha e métricas relacionadas por ponto. |
lineresamplePOP | 18 | Reamostra polilinhas em pontos igualmente espaçados. |
linesmoothPOP | 30 | Suaviza polilinhas para reduzir variações bruscas. |
lookupattributePOP | 23 | Consulta valores de atributos usando um atributo de índice. |
lookupchannelPOP | 24 | Amostra um canal CHOP por ponto como uma consulta. |
lookuptexturePOP | 28 | Amostra uma textura (TOP) por ponto para ler cores ou dados em atributos. |
mathPOP | 26 | Realiza aritmética e remapeamento de intervalo em atributos de pontos. |
mathcombinePOP | 52 | Combina atributos com uma operação matemática. |
mathmixPOP | 25 | Mistura atributos por um fator de mistura. |
mergePOP | 11 | Mescla vários conjuntos de pontos em um. |
neighborPOP | 25 | Encontra pontos vizinhos dentro de um raio ou contagem. |
noisePOP | 49 | Aplica ruído coerente a posições ou atributos de pontos. |
normalPOP | 27 | Calcula normais de pontos. |
normalizePOP | 22 | Normaliza atributos vetoriais ou reescala valores para um intervalo. |
nullPOP | 5 | Um toque de passagem para cadeias de pontos. |
outPOP | 8 | A saída de toque de um componente POP. |
particlePOP | 41 | Uma simulação de partículas em GPU que avança pontos sob forças e regras. |
patternPOP | 35 | Gera um padrão moldado de valores entre pontos. |
phaserPOP | 23 | Aplica um deslocamento baseado em fase que anima valores entre pontos. |
planePOP | 19 | Gera pontos organizados em um plano. |
pointPOP | 11 | Edita posições e atributos de pontos diretamente. |
pointfileinPOP | 33 | Carrega um arquivo de nuvem de pontos (como PLY) em pontos, o ponto de entrada para dados escaneados. |
pointgeneratorPOP | 26 | Gera um número especificado de pontos para semear um sistema. |
polygonizePOP | 22 | Constrói geometria de superfície poligonal a partir de pontos. |
primitivePOP | 21 | Edita atributos de nível primitivo da geometria de pontos. |
projectionPOP | 22 | Projeta pontos usando um mapeamento de projeção. |
proximityPOP | 21 | Calcula relações de proximidade e vizinho mais próximo entre pontos. |
quantizePOP | 19 | Ajusta atributos de pontos a uma grade ou tamanho de passo. |
randomPOP | 36 | Atribui valores aleatórios a atributos de pontos. |
rayPOP | 37 | Projeta pontos sobre uma superfície alvo ao longo de raios. |
rectanglePOP | 23 | Gera pontos organizados como um retângulo. |
rerangePOP | 19 | Remapeia um atributo de um intervalo de valores para outro. |
revolvePOP | 12 | Gira um perfil de pontos em torno de um eixo para formar uma superfície. |
selectPOP | 9 | Referencia pontos de outro POP por caminho. |
skinPOP | 9 | Cobre uma superfície sobre curvas de pontos. |
skindeformPOP | 18 | Deforma pontos para seguir um esqueleto (skinagem). |
soptoPOP | 10 | Converte geometria SOP em pontos. |
sortPOP | 27 | Classifica pontos por valor, posição ou atributo. |
spherePOP | 33 | Gera pontos organizados em uma esfera. |
sprinklePOP | 16 | Espalha pontos sobre uma superfície ou através de um volume. |
subdividePOP | 9 | Subdivide geometria de pontos para maior resolução. |
switchPOP | 14 | Seleciona uma de várias entradas de pontos por índice. |
textPOP | 37 | Gera pontos que descrevem texto. |
texturemapPOP | 32 | Atribui ou calcula coordenadas de textura para pontos. |
topologyPOP | 61 | Constrói ou edita a conectividade/topologia da geometria de pontos. |
toptoPOP | 45 | Cria pontos a partir de um TOP, transformando pixels em pontos posicionados. |
torusPOP | 24 | Gera pontos organizados em um toro. |
tracePOP | 30 | Traça as formas de uma imagem em pontos ou curvas. |
trailPOP | 28 | Registra os rastros de movimento de pontos ao longo do tempo. |
transformPOP | 48 | Translada, gira e escala pontos. |
triangulatePOP | 16 | Triangula pontos em uma malha (estilo Delaunay). |
trigPOP | 17 | Aplica funções trigonométricas a atributos de pontos. |
tubePOP | 24 | Gera pontos organizados como um tubo. |
twistPOP | 19 | Aplica 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 completosec*/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 explicitamenteallow_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 ferramentas — docs/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_referenceresponde "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
- docs/INSTALL.md — configuração completa, armação e configuração do cliente MCP.
- docs/GUIDE.md — o manual mais aprofundado de como usar: o modelo mental, o ciclo de trabalho e as convenções que o fazem funcionar.
- docs/HOWTO.md — receitas curtas de tarefas "como eu faço…" para a biblioteca de fluxos de trabalho.
- docs/RUNBOOK.md — operação do dia a dia: armação, diretório de trabalho, sinalizadores de consentimento, o modelo de recarga.
- docs/TROUBLESHOOTING.md — sintoma → causa → correção para os modos de falha comuns.
- docs/TESTING.md — como executar as camadas de teste do executor, gateway e consistência.
- docs/TOOL_CATALOG.md — o catálogo completo por ferramenta.
- ARCHITECTURE.md · SECURITY.md · CONTRIBUTING.md · CHANGELOG.md.
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/.usdem 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 viaemitmap, 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 UVremapTOPcom 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, comrecord/activedesligados 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 pontetimerCHOP → 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_paraceita componentes brutos. Uma ferramenta de criação expõecolor:[r,g,b] e tupletsresolution; passar nomes de componentes brutos (colorr) ou um wrapperpars{}para uma ferramenta de criação os descarta silenciosamente. Useset_parparacolorr/txbrutos. - Um
geometryCOMPnovo vem com um filho torus padrão carregando os flags de render/display. Exclua-o (comdelete_op) e ative o flag de render do seufileinSOPimportado, 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
constantTOPescuro para um beauty pass legível. - A armadilha de resolução 256/1280 é real. Geradores (
noiseTOP,rampTOP) herdam um padrão pequeno; definaoutputresolution=custom+resolutionw/hpara 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_choplida com isso; uma exportação manual ainda precisa disso. import_segmented_modelforç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ção | Onde | Descrição |
|---|---|---|
TDMCP_GW_HEADLESS | env (config do cliente) | 1 = executar o binário como o gateway MCP stdio headless; não definido = abrir a janela da GUI. |
TDMCP_REPO | env (config do cliente) | O caminho do clone, para que o gateway resolva seus dados reference/ agrupados de forma determinística. |
working_dir | GUI → Working dir → Apply | A 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 / port | arm.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_glsl | Alternância de consentimento na GUI → arm.json | Flags de consentimento para as duas lanes de código (padrão desligado). |
allow_highres | arm.json | Ignorar o teto de magnitude de renderização imposto (padrão desligado). |
min_action_interval_ms | arm.json | O 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 operadoresscript/execute/cpluspluseevaluateDAT) 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_pargenérico, o limite real é ocheck_par_alloweddo 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 comoX-TDMCP-Tokene comparado comsecrets.compare_digest. Requisições de origem cruzada (não-loopbackOrigin/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.jsonfixa por hash cada.pydo executor; armamento edev_reloadverificam 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/activedesligados; 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) eexpr_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_bridgee seus alternadores de GUI são recusados porassert_writableem 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_highrescontrolado por humano — então entrega legítima 4K/8K passa, mas umset_pardescontrolado 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/healthresponde. - A configuração do cliente MCP aponta para o
touchdesigner-bridge-mcp.execompilado comTDMCP_GW_HEADLESSdefinido como1(sem isso, o binário inicia sua GUI e o handshake nunca completa). TDMCP_REPOaponta para o clone (a pasta contendoreference/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 emarm.json).
Licença
Este projeto é duplamente licenciado:
- Uso não comercial — pessoal, educacional, pesquisa e avaliação — é gratuito sob a PolyForm Noncommercial License 1.0.0.
- Uso comercial, empresarial e de produção requer uma licença comercial paga separada — veja COMMERCIAL-LICENSE.md para obter uma.
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.