# Houdini (software)

Houdini è un programma di computer grafica 3D, sviluppato da Side Effects Software con sede a Toronto.
Houdini è largamente usato ed apprezzato nel mondo della grafica 3D soprattutto per quanto riguarda la realizzazione di effetti speciali per i film.

## Versioni

Sono disponibili diverse versioni di Houdini:
* Houdini FX: Versione commerciale completa del software.
* Houdini Core: Versione commerciale che comprende strumenti semplificati di Pyro, RBD e Vellum, escludendo quindi CrowdFx, WireFx, FLIP, Particellari e FEM.
* Indie: Versione per studi/artisti il cui fatturato annuo non supera i 100.000$. La risoluzione di render per animazioni e immagini è illimitata.
* Non-commercial: Versione liberamente scaricabile da chiunque voglia provare il software. Oltre a diverse scritte all'interno delle schermate del programma, verrà anche applicato un watermark sui fotogrammi renderizzati con tale versione (risoluzione massima 1280x720).

## Caratteristiche

Houdini possiede strumenti per gestire ogni aspetto di produzione di contenuti in computer grafica:
* Modellazione - Tutti i tipi di geometria standard quali Poligoni, superfici NURBs/Bézier, Curves.
* Animazione - Animazione manuale basata sui keyframe, manipolazione di canali (CHOPs), supporto di dati provenienti da motion capture.
* Dinamica - Simulazione di: corpi rigidi, fluidi, fili, tessuti, folle.
* Rendering - Houdini è integrato con il suo nativo e potente motore di rendering Mantra. Inoltre, è ora implementato il render delegate per USD/Hydra, chiamato Karma. Con la licenza Houdini Indie è possibile utilizzare motori di render di terze parti quali: Renderman, Octane, Arnold, Redshift, V-ray Maxwell (in sviluppo).
* Effetti volumetrici - Con i suoi strumenti nativi quali CloudFx e PyroFx Houdini è in grado di creare simulazioni di fuoco, fumo, nuvole, nebbia, ecc.
* Compositing - possiede un ambiente di compositing.
* Sviluppo di PlugIn - sviluppo di librerie e tools personali.
Houdini supporta una varietà di APIs, proprio per questo è un software largamente personalizzabile, in base alle proprie esigenze di produzione. I linguaggi supportati sono Python, Hscript (linguaggio di scripting del tipo CShell-like) e VEX, oltre a C++ per il HDK (Houdini Development Kit)

## Operatori

La natura procedurale di Houdini è possibile grazie ad un sistema basato sui nodi (nodes).
Questi nodi vengono chiamati operatori (operators), venendo collegati assieme creano quello che si definisce albero di nodi (node tree), o rete di nodi (node network).
Gli operatori si suddividono in categorie basate sul tipo di dati sul quale operano:
* OBJs - nodi che passano informazioni di trasformazione (In genere contengono SOPs).
* SOPs - surface operators - usati per modellare superfici.
* POPs - particle operators - usati per manipolare sistemi di particelle (ora inglobati nei DOPs).
* CHOPs - channel operators - usati per creare animazione procedurale, manipolazione di audio, logica e filtraggio di curve.
* COPs - composite operators - usati per il compositing di filmati/immagini.
* DOPs - dynamic operators - usati per creare simulazioni di ogni tipo (fluidi, tessuti, corpi rigidi.etc).
* SHOPs - Shading Operator - usati per creare materiali (shaders, ora sostituiti da MAT).
* MAT - Material Operatore - soppiantano SHOPs offrendo maggior flessibilità e prestazioni.
* ROPs - render operators - usati per gestire l'output dei motori di rendering o di geometria.
* VOPs - VEX operators - usati per generare reti di nodi per tutti i tipi precedentemente citati usando una architettura SIMD.
* PDG - Procedural Dependecy Graph - utilizzato per gestire dipendenze, distribuire compiti, analizzare e automatizzare la pipeline.
Complesse reti di nodi possono essere raggruppato sotto un unico nodo, il quale si comporta e può essere paragonato ad una classe in un linguaggio di programmazione ad oggetti. In questo modo gli utenti possono creare i propri strumenti direttamente all'interno del programma senza bisogno di scrivere codice, anche se in realtà la creazione di reti di noti genera del codice effettivo. Proprio per questo Houdini viene visto come un software di programmazione visiva, il che pone la programmazione artist-friendly, cioè di più facile accesso agli utenti, esperti o meno che siano.