# Rhinoceros (software)

Rhinoceros, comunemente chiamato Rhino o Rhino3D, è un software applicativo commerciale per la modellazione 3D di superfici sculturate (free form) realizzato da Robert McNeel & Associates, un'azienda di Seattle nello stato di Washington, negli USA. Viene normalmente utilizzato per il disegno industriale, l'architettura, il design navale, il design del gioiello, il design automobilistico, il CAD/CAM, per la prototipazione rapida, il Reverse engineering e per il design della comunicazione.

## Caratteristiche

In Rhino, tutte le entità geometriche sono rappresentate mediante NURBS (acronimo di Non Uniform Rational B-Splines), approccio opposto alle mesh poligonali applicate da altri software concorrenti. Le mesh sono comunque supportate da Rhino, ma non in modo ottimale. Molto semplicemente, le NURBS sono una rappresentazione matematica mediante la quale è possibile definire accuratamente geometrie 2D e 3D quali linee, archi e superfici a forma libera. I plug-in sviluppati da McNeel comprendono Flamingo (rendering raytrace), Penguin (rendering non fotorealistico) e Bongo. Sono disponibili centinaia di plug-in di terze parti fra i quali quello per Maxwell Render, V-Ray ed altri. Sono disponibili anche plug-in per il CAM e la fresatura CNC, come madCAM e RhinoCAM, che permettono il disegno dei tracciati direttamente all'interno del programma.
La sua crescente popolarità è basata sulla sua diversità, sulle funzionalità multidisciplinari, sulla sua bassa curva di apprendimento, sul costo relativamente basso e sulla possibilità di esportare file in oltre trenta formati diversi, rendendolo un vero e proprio strumento di conversione all'interno di un flusso di lavoro.

## Sviluppo

Rhino venne inizialmente distribuito gratuitamente come open beta a risorsa chiusa. Una vasta comunità di utenti ha contribuito allo sviluppo del software, con la segnalazione di bug e l'aggiunta di ulteriori caratteristiche. Lo sviluppo è ancora in corso. L'ultima versione stabile è la 7.29 distribuita nel giugno 2023 per MS Windows e MacOS. Dalla versione 6, la licenza è multipiattaforma (Windows & MacOS). I possessori di licenza Rhino possono scaricare le versioni più recenti e partecipare allo sviluppo del software. Sono disponibili gratuitamente anche versioni trial.

## Formato dei file

Il formato 3dm è molto utile per lo scambio delle geometrie NURBS. McNeel ha dato avvio all'iniziativa OpenNURBS per fornire agli sviluppatori di software di grafica computerizzata gli strumenti necessari per l'accesso ai dati dei file 3dm da altre applicazioni software. Il kit di strumenti è disponibile con licenza open source e comprende le specifiche del formato 3DM, la documentazione, il codice sorgente delle librerie in C++ e .NET 2.0, per leggere e scrivere i file .3dm sulle piattaforme supportate (Windows, Windows x64, Mac e Linux).

## Compatibilità

Rhino offre un’ampia compatibilità con altri software poiché supporta oltre 30 formati di file CAD sia in fase di import che in fase di export. Di seguito i formati nativamente supportati (senza l’uso di plugin):
* DWG/DXF (AutoCAD 200x, 14, 13 e 12)
* IGES
* STEP
* SolidWorks SLDPRT e SLDASM
* SAT (ACIS, solo export)
* MicroStation DGN
* Direct X
* FBX
* X_T (Parasolid, solo export)
* 3DS
* LWO
* STL
* SLC
* OBJ
* AI
* RIB
* POV
* UDO
* VRML
* CSV (export di proprietà e idrostatica)
* BMP
* TGA
* TIFF
* VDA
* GHS
* GTS
* KML
* PLY
* SketchUp

## Stampa 3D

Rhinoceros 3D si basa su pochi plug-in che facilitano la stampa 3D e consentono l’export in formato STL o OBJ, formati supportati dalla maggior parte delle stampanti 3D e dai servizi di stampa 3D.

## Scripting e programmazione

Rhino supporta due linguaggi di scripting: Rhinoscript (basato su Visual Basic) e Python. Possiede inoltre un SDK che permette di leggere e scrivere file direttamente in Rhino. Rhinoceros 3D ha avuto successo come programma di progettazione architettonica in parte grazie al plug-in Grasshopper per il design computazionale, oggi sempre più utilizzata dagli studi di architettura. Questo plug-in è una via di mezzo tra la modellazione parametrica e la programmazione visuale, consente di creare strutture algoritmiche complesse anche senza approfondite conoscenze di programmazione.