# TouchDesigner

TouchDesigner est un langage de programmation visuel basé sur des nœuds qui permet de manipuler un contenu multimédia interactif en temps réel. Développé par la société « Derivative », basée à Toronto, il est souvent utilisé par des artistes, des programmeurs, des codeurs créatifs, des concepteurs de logiciels et des interprètes du spectacle vivant pour créer des performances, des installations et des œuvres multimédias fixes$^,$$^,$$^,$. Il s'agit d'un outil propriétaire, disponible sur plate-formes MacOS et Windows.

## Histoire

La société canadienne Derivative a été fondée par Greg Hermanovic, Rob Bairos et Jarrett Smith. En 2000, Hermanovic s'est appuyé sur le logiciel Houdini 4.1 pour commencer le développement de TouchDesigner. De 2002 à 2007, le titre de la version TouchDesigner a adopté les chiffres de fin 007 à 017 pour indiquer son numéro de version. En 2008, Derivative a publié une version bêta de la plateforme appelée TouchDesigner 077, une réécriture de ses versions précédentes qui incorporait un pipeline de composition et d'effets OpenGL entièrement procédural.

## Fonctionnalités

TouchDesigner couvre plusieurs domaines majeurs de la production 2D et 3D, notamment :
* Rendu et compositing
* Entrée et sortie vidéo et audio
* Workflow et architecture évolutive
* Vidéo mapping
* Prise en charge multi-écrans
* Canaux d'animation et de contrôle
* Panneaux de contrôle personnalisés et création d'applications
* Moteur et outils 3D
* Interopérabilité des appareils (capteurs divers, caméras, Kinect, etc.) et des logiciels (MaxMSP, Ableton, OpenFrameworks, Unity,...)
* Script et programmation (C++ pour créer des opérateurs; Python; GLSL pour les shaders)

## Opérateurs

Les opérateurs sont les éléments de base d'un projet TouchDesigner. Ces objets sont représentés à l'écran sous forme de "nœuds" interconnectés pour créer des effets procéduraux et des animations. Chaque opérateur est personnalisé avec un ensemble unique de paramètres et d’indicateurs qui contrôlent son fonctionnement et son traitement. Les opérateurs, souvent appelés ops, se déclinent en six variétés, COMP, TOP, CHOP, SOP, MAT et DAT :

### COMP

Les composants représentent des objets 3D, des composants de panneau et divers autres opérateurs. Ils peuvent héberger l’intégralité des réseaux d’autres opérateurs. Les opérateurs de composants ont un statut unique parmi les autres familles d’opérateurs car ils contiennent leurs propres réseaux. Les réseaux de composants peuvent contenir des opérateurs et/ou des sous-réseaux supplémentaires (c'est-à-dire des composants supplémentaires).

### TOP

Les opérateurs de texture sont des opérations basées sur l’image qui sont accélérées par GPU. Ils gèrent toutes les opérations d'images 2D. Les données des TOP peuvent être mises à l'échelle à n'importe quelle résolution, limitée uniquement par la quantité de RAM disponible sur la carte graphique du système.

### CHOP

Les opérateurs de canal, utilisés pour les signaux de mouvement, d’audio et d’animation sont l’épine dorsale du système de contrôle dans TouchDesigner. Utilisés pour le traitement des données de mouvement, de l'audio, des commandes à l'écran, des données MIDI et d'autres périphériques d'entrée, ces opérateurs organisent les données sous forme d'une série de canaux. Selon la documentation de TouchDesigner, ils ont été conçus pour « réduire la pénibilité de l'édition de mouvements et pour aider à créer et à gérer des mouvements plus complexes ».

### SOP

Les opérateurs de surface sont les objets 3D natifs responsables de la gestion des coordonnées 3D, des polygones et d'autres « primitives » 3D, ainsi que de la modélisation dans TouchDesigner. Ces objets sont utilisés pour générer, importer, modifier et combiner des surfaces 3D. Les types de surface pris en charge sont les polygones, les courbes, les surfaces NURBS, les métaballs et les particules. Il s’agit peut-être de la partie la plus ancienne de TouchDesigner et elle trouve ses racines directement dans la base de code Houdini 4.1.

### MAT

Les objets MAT sont utilisés pour appliquer des matériaux et des shaders au pipeline de rendu 3D. Il existe plusieurs types de matériaux standard, ainsi que des matériaux qui prennent en charge l'importation de shaders personnalisés.

### DAT

Les opérateurs de données (data) sont utilisés pour contenir du texte, des tableaux, des données codées en texte (XML, JSON) et des scripts. Ces opérateurs peuvent aussi être utilisés pour stocker des documents readme et d'autres commentaires de code.