Méthode du lancer de rayons
Le lancé de rayon (ou ray-tracing) est la méthode de rendu la plus simple pour générer une image réaliste elle utilise les lois de l’optique géométrique. La méthode consiste à suivre le trajet inverse (à partir de l’observateur vers les sources de lumière Pour éviter de traiter tous les rayons inutiles issus d’une source lumineuse) des rayons lumineux afin de calculer les propriétés géométriques et lumineuses de la scène. L’algorithme de ray-tracing a pour but de déterminer l’image pixel par pixel en lançant un rayon du centre de projection vers la scène `à travers chaque pixel comme illustre sur la figure 1.15 Si le rayon coupe un objet de la scène, on calcule la couleur du pixel d’après les sources lumineuses et les propriétés du matériau associé à l’objet en utilisant un des modèles de réflexion, Si le rayon ne coupe aucun objet alors le pixel prend la couleur de fond (couleur par défaut, texture…). Le format «obj »: Il existe aujourd’hui de nombreux formats de fichiers pour stocker les différentes données relatives à un maillage 3D cette diversité est principalement due au fait que chaque logiciel possède ses propres formats selon la manière qu’il a utilisé pendant l’opération de stockage, quelques formats ont réussi à s’imposer et à devenir des références, pouvant ainsi être utilisés avec de nombreux logiciels de modélisation et de visualisation. Parmi les formats les plus courants et aussi utilisés comme des formats de fichiers d’échanges entre logiciels on trouve le format stl , X3D, COLLADA et le format obj,c’est cet dernier qu’on va étudier en détail dans ce qui suit en raison que le chargeur (loader) qu’on va développer dans ce projet de fin d’étude se base sur un fichier .obj pour visualiser un objet 3d
Le format .DAE (collaborative design activity, OU COLLADA) :
Le format COLLADA est un format ouvert basé sur le XML et très utilisé pour l’échange de données entre différents logiciels. Le format COLLADA enregistre les informations relatives non seulement à la géométrie, les matériaux, la texture ou encore l’animation, mais il est également l’un des seuls formats qui prend en compte la cinématique et la physique des modèles. Le format STL : Le format de fichier STL est un format utilisé dans les logiciels de stéréolithographie (STL pour STereo-Lithography). Ce format a été développé par la société 3D Systems. Il est largement utilisé pour faire du prototypage rapide et de la fabrication assistée par ordinateur. Le format de fichier STL ne décrit que la géométrie de surface d’un objet en 3 dimensions. Le format .obj : [2] L’extension de fichier OBJ est connue en tant que fichier d’objet Wavefront 3D qui a été développé par la société Wavefront Technologies. Structuré en ASCII, il contient la description des données géométriques d’un modèle 3D (sommets, coordonnées de texture, couleur). Le format OBJ ne peut cependant pas supporter toutes les informations comme celles relatives à l’animation du modèle 3D.
Le .obj est donc privilégié pour un travail en local ou pour des exportations d’images non animées. Avec le développement de l’impression 3D, le format OBJ connaît un regain d’énergie notamment parce qu’il prend en compte l’affichage des couleurs, ce que le format STL, principalement utilisé dans ce domaine, ne permet pas. Les fichiers au format OBJ peuvent être ouverts avec Autodesk Maya 2013, Blender, et MeshLab dans Microsoft Windows, Mac OS et Linux. La structure du format OBJ: [13][14] L’encodage avec Le format obj est un peut particulier et peut prendre différentes formes selon l’objet encodé (couleur, texture,..) et la qualité de visualisation qu’on veut atteindre. Le format obj se divise en deux fichiers : un fichier .OBJ qui donne toutes les informations sur la géométrie (les sommets et les faces), et un fichier .mtl qui contient les données sur les matériaux utilisés.
Les principales bibliothèques multiplateformes :
Chaque système d’exploitation propose au moins une bibliothèque qui permet de créer des fenêtres, mais cette bibliothèque ne fonctionne que pour le système d’exploitation pour lequel elle a été créée ce qui pose un grand problème pour les développeurs. Dans ce cadre Plusieurs bibliothèques multiplateforme ont été développées dont le but de s’affranchir de ce handicap et d’offrir aux développeurs plus de liberté et de souplesse dans la programmation .Voici quelques-unes des principales bibliothèques multiplateforme utilisé par les développeurs selon leurs besoin :
• .NET (prononcez « Dot Net ») : développé par Microsoft pour succéder à la vieillissante API Win32. On l’utilise souvent en langage C#. On peut néanmoins utiliser .NET dans une multitude d’autres langages dont le C++.
• GTK+ : une des plus importantes bibliothèques utilisées sous Linux. Elle est portable, c’est à-dire utilisable sous Linux, Mac OS X et Windows. GTK+ est utilisable en C mais il en existe une version C++ appelée GTKmm .
• wxWidgets : une bibliothèque objet très complète, comparable à Qt. wxWidgets n’est pas beaucoup plus compliquée que Qt. C’est la bibliothèque utilisée pour réaliser la GUI (Graphical User Interface) de l’IDE Code::Blocks.
• FLTK : contrairement à toutes les bibliothèques « poids lourds » précédentes, FLTK se veut Légère. C’est une petite bibliothèque dédiée uniquement à la création d’interfaces graphiques Multiplateforme.
• Qt très utilisée sous Linux, en particulier dans l’environnement de bureau KDE. Les modules du framework QT : Qt est une bibliothèque multiplateforme pour créer des GUI elle est écrite en C++ et elle est à la base conçue pour être utilisée en C++. Mais aujourd’hui il est possible de l’utiliser avec d’autres langages comme Java, Python, Ruby, JavaScript, BASIC, Ada 2005, C#, Pascal, Lua, Perl etc. Qt est constituée d’un ensemble de bibliothèques ce qui nous conduit de parler d’un framework au lieu d’une bibliothèque, chaque bibliothèque est appelées « modules ». On peut y trouver entre autres ces fonctionnalités :
• Module GUI : c’est toute la partie création de fenêtres. • Module OpenGL : Qt peut ouvrir une fenêtre contenant de la 3D gérée par OpenGL ,on va parler en détaille sur ce module dans les titres qui suivent . • Module réseau : Qt fournit une batterie d’outils pour accéder au réseau, que ce soit pour créer un logiciel de Chat, un client FTP, un client BitTorrent, un lecteur de flux RSS… • Module XML : c’est un moyen très pratique d’échanger des données à partir de fichiers structurés à l’aide de balises, comme le XHTML.
• Module SQL : permet d’accéder aux bases de données (MySQL, Oracle, PostgreSQL…).
Qt Linguist :[23] Qt intègre son propre système de traduction « Qt Linguist » qui permet de simplifier la vie des développeurs en traduisant l’interface de leur application dont le but d’assurer l’internationalisation. Dans leur code source, les développeurs entrent des chaînes de caractères dans leur propre langue précédées de la méthode tr(). Le chef de projet déclare les fichiers de traduction (un pour chaque langue) dans le fichier de projet. L’utilitaire lupdate parcourt les sources à la recherche de chaînes à traduire et synchronise les fichiers de traduction avec les sources. Les fichiers de traductions sont des fichiers xml portant l’extension .ts. Qt Linguist permet d’ouvrir les fichiers «.ts» et donne la possibilité de traduire ses fichiers dans la langue de son choix. Par exemple si le développer à généré un fichier mon_app_francais.ts qui contient les mots tels que bonjour, il pourra traduire ce mot en hello et générer le fichier mon_app_anglais.ts pour sa traduction en anglais. Une fois les fichiers «.ts» créés il faut générer les fichiers «.qm» qui sont utilisable par l’application Qt afin de traduire l’interface. Ces fichiers s’obtiennent en convertissant les fichiers «.ts» à l’aide de Qt Linguist comme indiqué ci dessous
CHAPITRE 01: GENERALITE SUR LES MODELES 3D |