La interrelación paramétrica y la conversión de tipos de datos entre las distintas familias de operadores constituyen un principio fundamental en el diseño de sistemas en TouchDesigner. La arquitectura del software se segmenta en familias de operadores especializadas, cada una con un dominio de datos específico, cuya interoperabilidad se garantiza mediante operadores de conversión explícitos.
Se identifican las siguientes familias de operadores y sus dominios de datos:
– **COMP (Componentes, familia gris):** Nodos para la encapsulación y organización jerárquica de redes. Funcionan como contenedores que estructuran la lógica del proyecto en niveles anidados, facilitando la modularidad y la creación de interfaces de usuario personalizadas.
– **CHOP (Channel Operators, familia verde):** Procesadores de datos de canal. Operan sobre flujos de señales numéricas, ya sean estáticas o variantes en el tiempo (time-sliced), estructuradas como uno o más canales, cada uno conteniendo un array de muestras (samples).
– **TOP (Texture Operators, familia morada):** Procesadores de texturas. Gestionan datos en matrices 2D, 3D o cubemaps de píxeles. Cada píxel es un vector, típicamente de cuatro componentes (RGBA), con una precisión de punto flotante o entero de 8/16/32 bits.
– **SOP (Surface Operators, familia azul):** Procesadores de geometría de superficie. Manipulan primitivas geométricas (polígonos, mallas, NURBS) definidas por un conjunto de puntos con atributos asociados, como posición (P), normales (N), color (Cd) y coordenadas de textura (uv).
– **MAT (Materials, familia amarilla):** Shaders que determinan la apariencia visual de la geometría SOP. Integran información de múltiples dominios, aplicando mapas de textura (TOPs) y respondiendo a parámetros de control (CHOPs) para calcular el color final de cada fragmento renderizado en el pipeline gráfico.
– **DAT (Data Operators, familia naranja):** Procesadores de datos tabulares y texto. Permiten la manipulación de datos estructurados en filas y columnas, soportando tanto valores numéricos como cadenas de texto, y son fundamentales para scripting en Python y gestión de la lógica del sistema.
La conversión de tipos de datos entre estas familias se realiza mediante operadores con la nomenclatura `[Familia Origen] to [Familia Destino]`. Estos operadores actúan como puentes de datos, reinterpretando la estructura de datos de una familia para que sea compatible con otra. Las conversiones fundamentales incluyen:
1. **SOP to CHOP:** Extrae atributos de puntos de una geometría a canales. Una geometría de N puntos se convierte en canales (`tx`, `ty`, `tz`) con N muestras. La muestra `i` en cada canal corresponde al valor del atributo del punto `i`. La deformación dinámica de la SOP de entrada, por ejemplo con un `Noise SOP`, se refleja en tiempo real como una modulación de las formas de onda en los canales CHOP. La cardinalidad de puntos y muestras se verifica mediante la consulta de información del operador (clic central del ratón).
2. **TOP to CHOP:** Muestrea una textura para generar datos de canal. La operación extrae valores de píxeles (RGBA) y los mapea a canales. Por defecto, puede promediar por filas o columnas. Un análisis por columnas de una textura de 1280×720 resultará en 1280 muestras por canal, donde cada muestra representa el valor RGBA agregado de la columna de píxeles correspondiente. La traslación de la textura de entrada mediante un `Transform TOP` provoca un desplazamiento correspondiente en la forma de onda del CHOP, demostrando el análisis espacial.
3. **DAT to CHOP:** Transforma datos tabulares en canales. La configuración del `DAT to CHOP` permite especificar el mapeo, como ‘One Channel Per Row’ y ‘First Column is Values’. Esto convierte cada fila de la tabla de entrada en un canal discreto, cuyo valor se toma de la celda especificada. Este método permite el control de señales desde estructuras de datos estáticas o gestionadas por script.
4. **CHOP to TOP:** Rasteriza datos de canal en una textura. Un `Constant CHOP` (1 muestra) genera una textura de 1×1 píxeles, donde el valor del canal se mapea a la luminancia. Un `Noise CHOP` (N muestras) se convierte en una textura de N×1 píxeles, donde la amplitud de la forma de onda del CHOP se traduce directamente en la variación de luminancia a lo largo del eje horizontal de la textura. Los picos de la onda corresponden a píxeles brillantes y los valles a píxeles oscuros.
5. **CHOP to SOP / DAT to SOP:** Se utiliza para la generación o deformación procedural de geometría.
– Con `CHOP to SOP`, los valores de un canal se utilizan para modular atributos de puntos de una geometría base (p. ej., un `Line SOP`). El valor de la muestra `i` del CHOP se aplica al atributo del punto `i` de la SOP (p. ej., `P.y`), generando una forma tridimensional que refleja el perfil de la onda del CHOP.
– El flujo `SOP — DAT — SOP` permite la deconstrucción y reconstrucción de geometría. Un `SOP to DAT` exporta los atributos de puntos, vértices y primitivas a tablas separadas. Un `DAT to SOP` ingiere estas tablas para reconstruir con precisión la geometría original, un método clave para la manipulación y serialización de mallas complejas.
6. **CHOP to DAT:** Serializa los datos de un canal en una tabla. Un `Noise CHOP` animado conectado a un `CHOP to DAT` produce una tabla que muestra los valores numéricos de las muestras del CHOP en el frame actual. Este proceso permite el muestreo discreto de una señal continua para su uso en lógica basada en scripts, registro de datos o depuración.