# Houdini (logiciel)

Houdini est un logiciel d'animation 3D développé par la société SideFX basée à Toronto. SideFX a adapté Houdini depuis la suite d'outils logiciels PRISMS de génération procédurale. Son attention exclusive à cette technologie le distingue des autres logiciels 3D.
Houdini est très utilisé pour la création d’effets visuels dans les films et les jeux vidéo. Il est utilisé par les principales sociétés d’effets spéciaux, telles que Walt Disney Animation Studios, Pixar Animation Studios, DreamWorks Animation, Double Negative, ILM, MPC, Framestore, Sony Pictures Imageworks, Illumination Studios Paris, Scanline VFX, Method Studios et The Mill.
Houdini est également utilisé par les entreprises d'animation, notamment sur les films Fantasia 2000, La Reine des neiges, Zootopie et Raya et le Dernier Dragon de Disney, Rio de Blue Sky Studios et Lucas, fourmi malgré lui de DNA Productions.
SideFX propose également une version partiellement limitée appelée Houdini Apprentice, qui est gratuite pour une utilisation non commerciale.

## Historique des versions

| Version | Date de sortie | Principales nouveautés | Durée inter-version | Systèmes d’exploitation | Prix (en US$) | Observations |
| Houdini 1.0 | 2 octobre 1996 | | | IRIX | $ 9 500 | Houdini 1.0 au SIGGRAPH 1996 |
| Houdini 2.0 | 5 août 1997 | | | IRIX | | |
| Houdini 2.5 | 28 mars 1998 | Début du portage Windows NT | | IRIX, Windows NT | | |
| Houdini 3.0 | 2 octobre 1999 | | | IRIX, Windows NT | | |
| Houdini 4.0 | 24 juillet 2000 | Début du portage Linux | | IRIX, Windows NT, Linux | $ 17 000 | |
| Houdini 5.0 | 12 mars 2002 | | | IRIX, Windows NT, Linux | $ 16 000 | |
| Houdini 5.5 | 14 mai 2002 | | | IRIX, Windows NT, Linux | $ 16 000 | |
| Houdini 6.0 | 8 mai 2003 | | | IRIX, Windows NT, Linux | | |
| Houdini 6.5 | 16 avril 2004 (CIRCA) | | | IRIX, Windows NT, Linux | | |
| Houdini 7.0 | 20 septembre 2004 | port IRIX abandonné | | Windows NT, Linux | | Silicon Graphics IRIX abandonné |
| Houdini 8.0 | 6 octobre 2005 | | | Windows NT, Linux | $ 17 000 | |
| Houdini 9.0 | 20 septembre 2007 | | | Windows NT, Linux | | |
| Houdini 9.1 | 2008 | | | Windows NT, Linux | | |
| Houdini 9.5 | 2008 | Nouvel UI, début du support MacOS | | Windows NT, Linux, MacOS | | |
| Houdini 10.0 | 16 avril 2009 | | 331 jours | | | |
| Houdini 11.0 | 27 juillet 2010 | | 467 jours | | $ 6 695 | |
| Houdini 12.0 | 1er mars 2012 | | 583 jours | | | |
| Houdini 12.1 | 7 août 2012 | | 159 jours | | | |
| Houdini 12.5 | 14 mars 2013 | | 219 jours | | | |
| Houdini 13.0 | 31 octobre 2013 | | 231 jours | | | |
| Houdini 14.0 | 15 janvier 2015 | | 441 jours | | | |
| Houdini 15.0 | 15 octobre 2015 | | 273 jours | | | |
| Houdini 15.5 | 19 mai 2016 | | 217 jours | | | |
| Houdini 16.0 | 21 février 2017 | | 278 jours | | $ 6 995 | |
| Houdini 16.5 | 7 novembre 2017 | | 259 jours | | $ 6 995 | |
| Houdini 17.0 | 10 octobre 2018 | Vellum | 337 jours | | | |
| Houdini 17.5 | 13 mars 2019 | PDG (Graphique de dépendance procédurale) | 154 jours | | | |
| Houdini 18.0 | 27 novembre 2019 | USD, LOPS, Karma (GPU Render) | 253 jours | | | |
| Houdini 18.5 | 17 octobre 2020 | KineFX | 331 jours | | | |
| Houdini 19 | 18 octobre 2021 | Karma, CFX | 366 | | $ 6,995 | |

## Caractéristiques

Houdini couvre tous les principaux domaines de la production 3D, notamment :
* Modélisation - Toutes les entités de géométrie standard, y compris les polygones, NURBS/courbes de Bézier/Patches & Trims (hiérarchique), metaballs.
* Animation - Animation par clés et manipulation de canal brut (CHOP), prise en charge de la capture de mouvement.
* Particules
* Dynamique - Dynamique des corps rigides, dynamique des fluides, dynamique des fils, simulation de tissu, simulation de foule.
* Éclairage - Création de shaders par système nodal, éclairage et ré-éclairage de shaders basés sur le système nodal par rendu IPR
* Rendu - Houdini est livré avec son puissant moteur de rendu Mantra, mais la licence Houdini Indie (version d'Houdini pour les développeurs indépendants) prend en charge d’autres moteurs de rendu tiers, tels que : Renderman, Octane, Arnold, Redshift, V-Ray, Maxwell.
* Volumétrie - Avec ses outils natifs CloudFx et PyroFx, Houdini peut créer des simulations de nuages, de fumée et de flammes.
* Compositing - Compositeur complet de passes de rendu.
* Développement de plugins - Bibliothèques de développement pour l'extensibilité de l'utilisateur.
Houdini est un environnement ouvert et prend en charge diverses API de script. Python est de plus en plus le langage de script de choix du logiciel, et est destiné à remplacer son langage de script original, semblable à CShell, Hscript. Cependant, tous les principaux langages de script prenant en charge la communication par socket peuvent s’interfacer avec Houdini.

## Opérateurs

La nature procédurale de Houdini se retrouve chez ses opérateurs. Les actifs numériques sont généralement construits en reliant des séquences d'opérateurs (ou OPs). Ce procéduralisme présente plusieurs avantages : il permet aux utilisateurs de construire des objets géométriques ou organiques très détaillés en relativement peu d'étapes par rapport à d’autres logiciels, il permet et encourage le développement non linéaire, et de nouveaux opérateurs peuvent être créés en termes d'opérateurs existants, une alternative flexible au script non procédural souvent utilisé dans d'autres logiciels pour la personnalisation. Houdini utilise ce paradigme procédural tout au long : pour les textures, les shaders, de particules, de « données de canal » (données utilisées pour piloter l'animation), de rendu et de compositing.
La structure d'opérateur de Houdini est divisée en plusieurs groupes principaux :
* OBJ - nœuds qui transmettent des informations de transformation (ils contiennent généralement des procédures d'exploitation normalisées).
* SOP - Opérateurs de surface - pour la modélisation procédurale.
* POPs - Opérateurs de particules - utilisés pour manipuler les particules.
* CHOPs - Opérateurs de canaux- pour l’animation procédurale et la manipulation audio.
* COPs - Opérateurs composites - utilisés pour effectuer une composition sur des séquences.
* DOPs - Opérateurs dynamiques - pour des simulations dynamiques pour les interactions de fluides, de tissus, de corps rigides, etc.
* SHOPs - Opérateurs de shaders - pour représenter une douzaine de types d’ombrage différents pour plusieurs moteurs de rendu différents.
* ROPs - Opérateurs de rendu - pour la construction de réseaux représentant différents passes de rendu et dépendances de rendu.
* VOP - Opérateurs VEX - pour la construction de système nodal de l'un des types ci-dessus en utilisant une architecture SIMD hautement optimisée.
* TOP - Opérateurs de tâches
Les opérateurs sont connectés entre eux dans des réseaux. Les données circulent, manipulées par chaque opérateur. Ces données pourraient représenter de la géométrie 3D, des images binaires, des particules, des dynamics, des algorithmes de shaders, de l'animation, de l'audio, ou une combinaison de ceux-ci. Cette architecture nodale (en) est similaire à celle utilisée par d'autres logiciels non nodaux tels que Shake ou Nuke.
Les réseaux complexes peuvent être regroupés dans un seul nœud méta-opérateur qui se comporte comme une définition de classe et peut être instancié dans d'autres réseaux, à l'instar de tout nœud compilé. De cette façon, les utilisateurs peuvent créer leurs propres outils sophistiqués sans avoir besoin de connaissances en programmation. Ainsi, Houdini peut être considéré comme une boîte à outils de programmation visuelle hautement interactive qui rend la programmation plus accessible aux artistes.
L'ensemble d'outils de Houdini est principalement mis en œuvre en tant qu'opérateurs. Cela conduit à un apprentissage plus rapide que d'autres logiciels comparables. C'est une chose de savoir ce que font tous les nœuds - mais la clé dans Houdini consiste à comprendre comment représenter un résultat créatif souhaité sous la forme d'un réseau de nœuds. Les utilisateurs qui réussissent sont généralement familiarisés avec un vaste répertoire de réseaux (algorithmes) qui permettent d'atteindre des résultats créatifs standard. La surcharge liée à l'acquisition de ce répertoire d'algorithmes est compensée par la flexibilité artistique et algorithmique offerte par l'accès à des blocs de construction de niveau inférieur permettant de configurer des routines de création d'éléments. Dans les grandes productions, le développement d'un réseau procédural pour résoudre un problème de création d'élément spécifique rend l'automatisation triviale. De nombreux studios qui utilisent Houdini pour les effets spéciaux à grande échelle et les projets d'animation développent des bibliothèques de procédures pouvant être utilisées pour automatiser la génération de nombreux éléments de la production sans pratiquement aucune interaction entre artistes.
Houdini se distingue également par sa gamme d'opérateurs d'entrées-sorties pour les animateurs, dont les ports MIDI, la prise en charge du format RAW ou les connexions TCP, les services audio (comme les détections de phonèmes et de hauteurs intégrées), la position du curseur de la souris, etc. Il convient de noter la capacité de Houdini à travailler avec l'audio, y compris en synthèse sonore et musicale et outils de traitement du son 3D spatial. Ces opérateurs existent dans le contexte appelé CHOPs pour lequel SideFX a remporté un Prix de l'Académie des réalisations techniques en 2002.
VEX (Vector Expression) est l'un des langages internes de Houdini, ressemblant au RenderMan Shading Language. En utilisant VEX, un utilisateur peut développer des SOP, des POP, des shaders, etc, personnalisés. La mise en œuvre actuelle de VEX utilise un traitement de style SIMD.

## Rendu

Houdini est fourni avec un moteur de rendu natif, Mantra, qui avait beaucoup de similitudes avec RenderMan dans sa première version. Le rendu en micropolygone est pris en charge, ce qui permet des opérations de déplacement de haute qualité ainsi que les modes de balayage par ligne et les lancers de rayons traditionnels. Les shaders sont scriptables et composés dans leur langage VEX, ou en utilisant des VOP; leur interface basée sur les nœuds pour la programmation de VEX. Mantra (comme Houdini lui-même) prend également en charge les nuages de points, dont l'application peut ressembler à celle d'une carte virtuelle dans Renderman. Cela permet de produire des interactions lumineuses plus complexes, telles que la diffusion sous la surface et l'occlusion ambiante, avec un temps de calcul réduit. Mantra peut effectuer des rendus volumiques extrêmement rapides, ainsi que du PBR (rendu physique réaliste), une technique qui tente de modéliser plus précisément les interactions physiques de la lumière et des matériaux.