# Inventor (bibliothèque logicielle)

Open Inventor est une bibliothèque logicielle développée à l'origine par la société Silicon Graphics (IRIS Inventor) pour permettre de gérer des graphes de scènes en trois dimensions. Cette bibliothèque, orientée objet et écrite en C++, est capable de gérer son propre format natif de description des scènes : le format Inventor considéré comme étant l'ancêtre de VRML (leurs syntaxes respectives sont d'ailleurs similaires).

## Historique
### Les débuts

C'est aux environs des années 1988-1989, que la société Silicon Graphics (SGI) lance le projet IRIS Inventor. L'objectif était de créer un outil facilitant le développement d'applications graphiques 3D. La stratégie était fondée sur le fait que les développeurs ne concevaient pas assez d'applications 3D à l'aide d'OpenGL parce que cette bibliothèque renferme des primitives de programmation graphique de bas niveau, ce qui augmente d'autant le temps passé à développer. Si la programmation était facilitée, par le biais d'une bibliothèque orientée objet, alors plus de personnes créeraient des applications 3D et SGI, alors en position dominante sur le marché en bénéficierait.
Des licences tiers d'Inventor fut ultérieurement accordées aux sociétés TGS (Template Graphics Software) et Portable Graphics lorsqu'il fut décidé de renommer IRIS Inventor en Open Inventor. La première société ayant racheté la deuxième, TGS a commercialisé Open Inventor pendant des années avant d'être racheté par Mercury Computer Systems.

### Dans le milieu des années 1990

SGI a essayé d'améliorer la bibliothèque par le biais de plusieurs projets. Tout d'abord, en fusionnant cette bibliothèque avec l'un de ses autres projets : OpenGL Performer, ce qui a donné Cosmo3D. Cette dernière bibliothèque a connu un succès mitigé en raison de plusieurs problèmes de mise en œuvre pratique.
SGI a alors approché Intel, IBM et DEC en vue de créer OpenGL++, une bibliothèque fournissant une couche orientée objet à OpenGL. Son développement s'est arrêté lorsque SGI a décidé de travailler en partenariat avec Microsoft au projet Fahrenheit visant à fusionner OpenGL et Direct3D. Annoncé officiellement en 1998, la première version aurait dû être disponible au début de l'an 2000. Toutefois, ce projet est également resté inachevé.

### Depuis l'an 2000

Parallèlement aux licences d'Inventor commercialisées par la société TGS, SGI a ouvert le code source d'Open Inventor en août 2000 sous licence LGPL. À la même époque, Systems in Motion (SIM) a distribué sa propre implémentation de Open Inventor, nommée Coin3D, sous une double licence : commerciale et GPL.
En 2004, TGS est racheté par la société américaine Mercury Computer Systems et devient la business unit "Visualization Sciences Group". En juin 2009, la société américaine Mercury Computer Systems se sépare de l'activité "Visualization Sciences Group" qui devient une entreprise à part entière connue sous le nom de VSG. Enfin, en Août 2012, la société FEI Company achète l'entreprise VSG. À l'heure actuelle, les versions de FEI Companyet SIM sont les seules activement maintenues.

## Principe

OpenGL est une bibliothèque logicielle renfermant des primitives de bas niveau qui prend des listes de polygones et en effectue le rendu le plus rapidement possible. Pour, par exemple, dessiner une maison, le programmeur doit subdiviser l'objet en une série d'instructions OpenGL simple afin de les fournir au moteur de rendu. Un des problèmes est que les performances d'OpenGl sont sensibles à la manière dont les instructions sont ordonnées et envoyées, forçant les développeurs à préparer les données à envoyer attentivement pour éviter de dessiner des objets qui ne sont même pas présents dans l'image résultante. D'autre part, et ce également pour des scènes de faible complexité, un important effort de programmation est nécessaire, simplement pour débuter.
Open Inventor a été conçu pour résoudre ce problème et fournir un support de base facilitant la prise en main. Les objets peuvent hériter d'un certain nombre de formes prédéfinies comme des cubes ou des polygones et ensuite les modifier en une nouvelle forme géométrique. Le monde à dessiner est alors placé dans un graphe de scène géré par Open Inventor qui va chercher à optimiser automatiquement la phase de rendu. Open Inventor incorpore également un certain nombre de mécanismes de contrôle des objets visant à faciliter les interactions de base avec la scène. Enfin, Open Inventor fournit également son propre format de données pour décrire les graphes de scènes qui peut être importé et exporté à partir d'une application utilisant Open Inventor. Le résultat est que des applications graphiques 3D simples peuvent être écrites très facilement.
L'un des inconvénients d'Open Inventor est que le rendu tend à être plus lent qu'avec du code optimisé à la main, les scènes 3D étant notoirement difficiles à optimiser sans bouleverser manuellement l'ordre de rendu des données stockées dans le graphe de scène.