Barney
Une interface unifiée pour la manipulation d''objets 3D et la simulation physique en réalité virtuelle
Barney est une librairie écrite en C++ dédié à l'importation, la simulation et fragmentation de maillages en 3D.
Barney dépends de nombreuses librairies externes pour fonctionner. Toutes les librairies choisies sont codées en C++ pour faciliter au mieux leurs intégration à Barney.
Technologies
Importation
Barney doit supporter un grand nombre de formats de fichier 3D.
Allant du simple .obj à des modèles de bâtiments beaucoup plus complexes, souvent sauvegardés en format .ifc.
Assimp transforme plus de 40 formats de fichier en une seule structure de données, facilitant grandement la récupération des informations d'un ou de plusieurs maillages.
Simulation
Beaucoup de moteurs physiques sont disponibles sur Internet. Il est important de choisir et comparer efficacement plusieurs d'entre eux pour trouver celui qui est le plus adapté à Barney.
Project Chrono est un moteur physique open-source encore en développement qui offre des simulations avec des paramètres physiques proches de la réalité.
Son module Multicore permets d’accélérer la vitesse de simulation lorsqu'il y a un grand nombre d'objets dans la scène, prenant avantage du calcul parallèle qu'offre le processeur.
Fragmentation
Il est plutôt commun de voir dans des jeux vidéos ou des scènes de films un bâtiment qui explose, un verre qui se casse ou toute autre destruction nécessitant de fragmenter un modèle 3D. Barney effectue des simulations non prévisibles et en temps réel. Il est donc nécessaire de trouver un moyen de fracturer un maillage au vol.
Pour cela, les librairies Voro++ et MCut sont utilisées l'un l'autre pour répondre à ce besoin:
Voro++ génère des cellules Voronoi sur une aire englobant le maillage. Pour chaque cellule, MCut effectue une intersection entre la cellule et le maillage. Les fragments obtenus pour chaque intersection donne donc l'impression d'un maillage fragmenté en plusieurs morceaux.
Fonctionnement
Barney peut être utilisé de 2 manières: En tant que dépendance tierce d'un autre logiciel, ou en standalone
Librairie
De nombreux moteurs de jeu offrent la possibilité d'intégrer des Plugins ou Dépendances tierces à leurs projets, comme par exemple Unity ou Unreal Engine.
Barney peut être utilisée en tant que dépendance au projet, permettant de remplacer par exemple le système physique
Standalone
Un système de visualisation Irrlicht est implémenté pour pouvoir avoir une représentation graphique de la simulation en temps réel, sans passer par des logiciels externes.
Il est donc possible d'effectuer une suite de tests directement en exécutable, donc en gagnant du temps de développement.