Loading
Notes d'étude
Study Reminders
Support
Text Version

Introduction aux pipelines 3D

Set your study reminders

We will email you at these times to remind you to study.
  • Monday

    -

    7am

    +

    Tuesday

    -

    7am

    +

    Wednesday

    -

    7am

    +

    Thursday

    -

    7am

    +

    Friday

    -

    7am

    +

    Saturday

    -

    7am

    +

    Sunday

    -

    7am

    +

Bonjour et bienvenue à la conférence numéro 4 dans le cours Computer Graphics. La série d'étapes qui sont impliquées dans la génération de valeurs de couleur sont appelées le pipeline graphique. Il s'agit d'une terminologie très importante et, lors de nos conférences subséquentes, nous discuterons en détail des étapes du pipeline. Alors, nous avons quelques idées d'introduction sur le pipeline et ses étapes.
Il y a plusieurs étapes, comme je l'ai mentionné, la première étape consiste essentiellement à définir les objets. Donc quand on parle de créer une scène ou une image, elle contient des objets. Il faut maintenant trouver un moyen de représenter ces objets dans l'ordinateur. Cette activité où nous définissons des objets qui vont être les parties des images constituent la première étape du pipeline qui est appelé objet

étape de représentation. Par exemple, comme vous pouvez le voir dans cette figure sur l'écran, nous voulons générer l'image d'un cube avec des valeurs de couleur comme indiqué sur la partie droite de l'écran.
Maintenant cette image contient un objet qui est un cube et sur la gauche, nous avons défini ce cube. Donc, lorsque nous parlons de définir ce que nous entendons essentiellement comme nous pouvons comprendre intuitivement, la définition du cube implique de spécifier les sommets ou les arêtes par rapport à un cadre de référence qui est la définition dans ce cas simple qui est ce qui sont les sommets ou ce qui sont les bords comme deux sommets.
Bien sûr, le cube est un objet très simple, pour des objets plus complexes, nous pouvons avoir besoin de définitions plus complexes, de façons plus complexes de représenter les objets.
En conséquence, plusieurs techniques de représentation sont disponibles pour une création efficace et une manipulation efficace des images. Notez ici sur le terme efficace, donc lorsque nous parlons de ce terme efficace, essentiellement ce à quoi nous nous référons, nous nous référons au fait que les affichages sont différents, les plateformes matérielles sous-jacentes sont différentes. Donc, quelles que soient les ressources informatiques que nous avons pour afficher quelque chose sur un ordinateur de bureau ou un ordinateur portable, il est probable que ce soit différent par rapport à ce que nous avons pour afficher quelque chose sur un petit appareil mobile ou sur un écran de périphérique portable.
Par conséquent, nos techniques de représentation devraient pouvoir utiliser les ressources disponibles dans la mesure du possible et être en mesure de permettre aux utilisateurs de manipuler des images dans un environnement interactif. L'efficacité est donc essentielle en ce qui concerne les ressources informatiques disponibles et la façon de tirer le meilleur profit de ces ressources. Une fois que nous avons défini ces objets, ces objets sont ensuite passés par les étapes de pipeline suivantes pour obtenir et rendre des images à l'écran. Ainsi, la première étape consiste à définir les objets et, dans les étapes suivantes, nous prenons ces définitions d'objet en entrée et génèrent une représentation d'image ainsi que la rendre à l'écran.
Quelles sont ces étapes ultérieures? La première est la transformation de la modélisation qui est la deuxième étape du pipeline. Comme je l'ai dit lorsque nous définissons un objet où l'on considère un cadre de référence à propos duquel nous définissons l'objet. Par exemple, le cube que nous avons vu précédemment. Pour définir le cube, nous devons définir ses coordonnées, mais les coordonnées en fonction de quoi? Nous supposerons certains cadres de référence.
Maintenant, ces cadres de référence à l'égard desquels les objets sont définis sont plus communément appelés coordonnées locales de l'objet. Les objets sont donc généralement définis dans leur propre système de coordonnées ou local. Maintenant, plusieurs objets sont rassemblés pour créer une scène, donc chaque objet est défini dans son propre système de coordonnées locales et lorsque nous les combinons, nous essayons essentiellement de combiner ces différents cadres de référence.
En combinant ces différents objets, nous créons un nouvel assemblage d'objets dans un nouveau cadre de référence qui est généralement appelé système de coordonnées mondiales. Prenez l'exemple indiqué sur cette figure. Ici comme vous pouvez voir, il y a de nombreux objets, des cubes, des sphères et d'autres objets, des cylindres. Chacun de ces objets est défini dans son propre système de coordonnées.
Dans toute cette scène, composée de tous les objets, c'est toute la scène, ici nous avons assemblé tous ces objets à partir de leurs propres systèmes de coordonnées. Mais ici encore, nous supposons un autre système de coordonnées pour lequel cet assemblage d'objets est défini. Donc ce système de coordonnées où nous les avons assemblés est appelé système de coordonnées du monde. Il y a donc une transformation, transformant un objet de son propre système de coordonnées au système mondial de coordonnées. Cette transformation est appelée transformation de modélisation qui est la deuxième étape du pipeline graphique.
Ainsi, lors de la première étape, nous définissons les objets, dans la deuxième étape, nous rassemblons ces objets dans le système de coordonnées du monde par la transformation de la modélisation qui est aussi parfois connue sous le nom de transformation géométrique. Donc les deux termes sont utilisés soit la transformation de la modélisation, soit la transformation géométrique qui est la deuxième étape du pipeline graphique.
Une fois la scène construite, les objets doivent être assignés aux couleurs qui se font à la 3ème étape de l'étape de l'éclairage ou de l'éclairage. Prenez par exemple les images présentées ici. Dans la figure de gauche nous avons simplement l'objet, dans la figure de droite nous avons la couleur. Donc, nous avons appliqué des couleurs sur les surfaces de l'objet. Maintenant que vous pouvez voir la façon dont nous avons appliqué les couleurs, il est devenu clair quelle surface est plus proche du spectateur et quelle surface est plus loin.
En d'autres termes, cela nous donne une sensation de 3D, alors que sans les couleurs comme celle montrée ici, cette clarté n'est pas là. Donc pour obtenir une image réaliste qui nous donne une sensation de 3D, nous devons assigner des couleurs. L'attribution des couleurs est le travail de la 3ème étape qu'on appelle scène d'éclairage ou d'illumination.
Maintenant, comme vous le savez probablement, la couleur est un phénomène psychologique et ceci est lié à la façon dont la lumière se comporte ou en d'autres termes, ceci est lié aux lois de l'optique. Et dans la 3ème étape, ce que nous faisons? Nous essayons essentiellement d'imiter ces lois optiques, nous essayons d'imiter la façon dont nous voyons la couleur ou nous percevons la couleur dans le monde réel et sur la base de ce que nous essayons d'assigner des couleurs dans les scènes synthétisées.
Donc d'abord nous définissons un objet, 2ème nous amenons des objets ensemble pour créer une scène, 3ème étape, nous affectons des couleurs aux surfaces de l'objet sur la scène. Jusqu'à maintenant, tout ce que nous avons fait en 3D

Dans le système mondial de coordonnées. Quand on voit une image, l'écran de l'ordinateur est
2D, donc essentiellement ce dont nous avons besoin, c'est un mappage de cette scène 3D de coordonnées du monde à l'écran d'ordinateur 2D. Ce mappage est effectué dans la 4ème étape qui est en train de visualiser la transformation.
A ce stade, nous réalisons plusieurs activités qui sont similaires à la prise d'une photo. Considérez-vous comme un photographe, vous avez une caméra et vous capturez une photo d'une scène.
Qu'est-ce que tu fais? Vous placez la caméra près de votre oeil, vous devez vous concentrer sur un objet que vous voulez capturer, puis le capturer sur le système de la caméra et ceci est suivi en le voyant à l'écran de la caméra ou à l'écran de la caméra, si vous avez un appareil photo numérique. Maintenant, ce processus de prise d'une photo peut être analysé mathématiquement pour avoir plusieurs opérations intermédiaires qui forment en lui-même un pipeline, qui est un pipeline dans le pipeline graphique plus large. Donc, la 4ème étape de visualisation de la transformation elle-même est le pipeline qui fait partie de l'ensemble du pipeline graphique. Maintenant, ce pipeline où nous transformons une scène de coordonnées du monde 3D en une scène de plan de vue 2D est appelé un pipeline de visualisation.
Maintenant dans ce pipeline ce que nous faisons? Nous avons d'abord mis en place un système de coordonnées de caméra qui est également appelé système de coordonnées de vues. Puis la scène de coordonnées du monde est transformée en système de coordonnées de vue. Cette étape est appelée transformation de l'affichage. Nous avons donc mis en place un nouveau système de coordonnées qui est un système de coordonnées de caméra et nous avons ensuite transformé la scène de coordonnées du monde en scène de coordonnées de caméra.
A partir de là, nous faisons une autre transformation, maintenant nous transférons la scène à un plan de vue 2D. Cette étape est appelée transformation de projection. Nous avons donc vu la transformation suivie d'une transformation de projection. Pour la projection, nous définissons une région dans un espace de coordonnées de visualisation appelé volume de vue.
Par exemple, dans la figure montrée ici, comme vous pouvez le voir, ce frustum définit un volume de vue, le frustum montré ici définit un volume de vue. Nous voulons donc capturer des objets présents dans ce volume, à l'extérieur des objets que nous ne voulons pas capturer. C'est généralement ce que nous faisons lorsque nous prenons une photo, nous sélectionnons une région sur la scène et ensuite nous la capturons. Donc, quel que soit l'objet à l'extérieur ne sera pas projeté et quel que soit le nombre de ceux qui se trouvent à l'intérieur du volume sera projeté. Nous avons donc besoin d'un processus supplémentaire, un processus pour supprimer des objets qui se trouvent à l'extérieur du volume de la vue. Ces objets peuvent maintenant être complètement à l'extérieur ou être partiellement à l'extérieur. Dans les deux cas, nous devons donc les supprimer. Ainsi, lorsqu'un objet est complètement à l'extérieur, il est complètement supprimé et lorsqu'un objet est partiellement à l'extérieur, nous clipons l'objet et ne gardez que la partie qui se trouve dans le volume de la vue, la partie extérieure que nous retirons. Le processus global est appelé écrêtage.
De plus, lorsque nous projetons, nous considérons un poste de visualisation où le photographe est situé et dans quelle direction il est en train de regarder. Sur la base de cette position, certains objets peuvent apparaître entièrement visibles, certains peuvent apparaître partiellement visibles, tandis que les autres objets deviennent invisibles.
Mais tous peuvent se trouver dans le même volume.
Par exemple, pour ce point de vue particulier, certains objets peuvent être, comme cet objet s'il est derrière cet objet, alors il sera invisible. Si elle est partiellement derrière, elle sera partiellement visible et si elles ne sont pas alignes dans la même direction, les deux seront entièrement visibles.
Donc vous vous souciez de ce fait aussi avant la projection qui nécessite d'autres opérations, des calculs. Pour capturer cet effet d'affichage, les opérations que nous exécutons sont généralement appelées opérations de suppression de surface cachées ou opérations de détection de surface similaires. Donc, pour générer un effet d'écoute réaliste avec clipping ce que nous faisons, nous réalisons les opérations de retrait de surface cachées ou de détection de surface visible.
Ainsi, après les opérations de découpe et de suppression de surfaces masquées, nous projetons la scène sur le plan de la vue.
Il s'agit d'un plan défini dans le système, dans le système de coordonnées de vue.
Maintenant, il y a une transformation supplémentaire Supposez dans la figure de droite, supposons que c'est l'objet qui est projeté ici dans le plan de la vue. Maintenant, l'objet peut être affiché sur n'importe quelle partie d'un écran d'ordinateur, il n'est pas nécessaire d'être exactement à la même portion que dans le plan de la vue.
Par exemple, cet objet peut être affiché dans un coin de l'écran. Nous allons donc différencier deux concepts ici ; l'un est le plan de vue qui est généralement appelé une fenêtre, autre est la région d'affichage sur l'écran d'affichage réel que nous appelons viewport. Une autre transformation reste donc dans le pipeline de visualisation qui transfère le contenu de la fenêtre vers le port d'affichage. C'est ce qu'on appelle la transformation de fenêtre à viewport.
Donc en résumé ce que nous pouvons dire, c'est que, dans la 4ème étape, il y a 3 transformations. Quelles sont ces transformations? D'abord, nous nous transformons de la scène internationale à la caméra ou à la scène de coordonnées. Ensuite, à partir de la scène de coordination de la caméra, nous réalisons la transformation de projection pour voir le plan, puis la fenêtre de plan de la vue est transformée en viewport. Il s'agit donc des 3 transformations.
En plus de ces deux opérations majeures que nous réalisons ici, on est en train de découper les objets qui se trouvent à l'extérieur du volume de vue et l'autre est caché l'enlèvement de la surface, ce qui signifie créer un effet réaliste, afficher l'effet par rapport à la position du spectateur. C'est donc la quatrième étape.
Donc d'abord nous avons défini des objets dans la première étape, dans la 2ème étape, nous avons combiné ces objets dans la scène de coordonnées du monde, dans la 3ème étape, nous avons attribué des couleurs aux surfaces de l'objet dans la scène de coordonnées du monde, dans la 4ème étape que nous avons transformée dans le monde de coordonnées scène à l'image sur le viewport par une série de transformations qui forment un sous-section-pipeline dans l'ensemble du pipeline.
Et ces étapes de sous-pipeline sont la transformation, la transformation de projection et la transformation de fenêtre à viewport. Ce sous-pipeline est appelé pipeline de visualisation qui fait partie de l'ensemble du pipeline graphique et, à la quatrième étape, avec ces pipelines de visualisation, nous avons également à effectuer davantage d'opérations de coupe et d'enlèvement de surfaces cachées.
Une autre étape reste celle de la 5e étape, appelée conversion ou rendu d'analyse. Maintenant, nous avons mentionné que nous nous transformons en un point de vue. Now viewport est une représentation abstracomplète de l'affichage réel. Dans l'affichage réel si vous vous rappelez notre discussion sur nos affichages plus rapides, nous avons mentionné que l'affichage contient une grille de pixels.
Donc essentiellement l'affichage contient des emplacements qui sont discrees, nous ne pouvons pas supposer que n'importe quel point peut avoir un point correspondant sur l'écran. Par exemple, si dans notre image nous avons un sommet à l'emplacement 1.5 et 2.5, sur l'écran nous ne pouvons pas avoir un tel emplacement car à l'écran nous avons seulement des valeurs entières comme coordonnées en raison de la nature discrète de la grille. Donc nous avons un pixel situé à 2, 2 ou 3, 3 ou 1, 1 ou 1, 2 quelque chose comme ça plutôt que les nombres réels 1.5, 2.5.
Donc nous ne pouvons pas avoir un emplacement de pixel à dire 1.5, 2.5 mais nous pouvons avoir des emplacements de pixels uniquement à la valeur entière par exemple 1, 1 ; 2, 2, etc. Donc si nous obtenons un sommet dans notre image située à 1.5, 2.5 alors nous devons la mapper à ces coordonnées entières. Cette étape où nous réalisons ce mappage est appelée l'étape de conversion d'analyse qui est la cinquième et dernière étape du pipeline. Par exemple, si vous considérions ces lignes ici, les points de fin sont 2, 2 et 7, 5. Maintenant, tous les points intermédiaires peuvent ne pas avoir de valeurs de coordonnées entières, mais dans l'affichage final, dans l'affichage réel, nous pouvons avoir des pixels, ces cercles uniquement sur des valeurs de coordonnées entières.
Nous devons donc mapper ces coordonnées non entières à des coordonnées entières. Ce mappage est le travail de cette 5e étape ou de la phase de conversion d'analyse qui est également appelée la rasterisation. Et comme vous pouvez le voir, cela peut entraîner une certaine distorsion parce qu'en raison de la cartographie nous ne pouvons pas obtenir les points exacts sur la ligne, nous devons plutôt nous satisfaire de quelques points approximatifs qui sont proches de la ligne réelle. Par exemple, ce pixel ici ou ce pixel ici n'est pas exactement sur la ligne mais le pixel le plus proche possible par rapport à la ligne.
Alors, quelle est la préoccupation? Comment minimiser les distorsions? Ces distorsions ont maintenant un nom technique appelé "effet d'aliasing", d'où provient ce nom dont nous parlerons plus tard. Donc, notre souci est d'éliminer ou de réduire l'effet d'aliasing dans la mesure du possible afin que nous ne voyions pas trop de distorsions, nous ne percevons pas trop de distorsions. Pour répondre à cette préoccupation, on utilise plusieurs techniques appelées techniques anti-aliasing. Elles sont utilisées pour rendre l'image aussi lisse que possible afin de réduire l'effet de l'aliasing.
Le contrôleur d'affichage effectue donc toutes ces étapes pour que les valeurs d'intensité soient stockées dans la mémoire tampon ou la mémoire vidéo. Maintenant, ces étapes sont effectuées via un logiciel, bien sûr avec un support matériel approprié.
Pour un programmeur d'un système graphique, il n'est bien sûr pas nécessaire d'en apprendre davantage sur les détails complexes de toutes ces étapes, il y a beaucoup de concepts théoriques, beaucoup de modèles théoriques. Maintenant, si un programmeur graphique est amené avec toute cette théorie, les modèles alors la plupart du temps seront consommés en comprenant la théorie plutôt que de développer réellement le système. Donc, pour répondre à cette préoccupation d'un programmeur ce qui est fait est essentiellement le développement de bibliothèques, de bibliothèques graphiques.
Il y a donc ce contexte théorique qui est impliqué dans la génération d'une image 2D. Le programmeur n'a pas besoin de toujours mettre en œuvre les étapes du pipeline pour mettre pleinement en œuvre les connaissances théoriques, ce qui serait bien sûr trop d'efforts et une partie importante de l'effort de développement ira à la compréhension et à la mise en œuvre des étapes théoriques.
Au lieu de cela, le programmeur peut utiliser les interfaces de programmation d'application ou les API fournies par les bibliothèques graphiques. Lorsque ces étapes sont déjà implémentée sous la forme de fonctions diverses et que le développeur peut simplement appeler ces fonctions avec des arguments dans leur programme pour effectuer certaines tâches graphiques. Il existe de nombreuses bibliothèques de ce type, très populaires sont mentionnées ici OpenGL qui est une bibliothèque graphique open source largement utilisée.
Ensuite, il y a DirectX par Microsoft et il existe de nombreuses autres bibliothèques commerciales disponibles qui sont propriétaires, mais OpenGL étant une source ouverte est largement accessible et utile à de nombreuses situations.
Maintenant ce que contiennent ces bibliothèques? Ils contiennent des ensembles de fonctions prédéfinis qui, lorsqu'ils sont appelés avec des arguments appropriés, exécutent des tâches spécifiques. Le programmeur n'a donc pas besoin de connaître tous les détails de la plateforme matérielle sous-jacente, à savoir le processeur, la mémoire et le système d'exploitation pour construire une application.
Par exemple, supposons que nous voulions assigner des couleurs à un objet que nous avons modélisé. Devons-nous réellement mettre en œuvre les lois optiques pour effectuer le coloriage? Notez que cette implémentation de la loi optique implique également la connaissance des processeurs disponibles, la mémoire disponible et

De la même façon. Donc ce que nous pouvons faire, c'est au lieu d'avoir cette connaissance, on peut simplement aller pour utiliser une fonction glColor3f avec un argument r, g, b. Cette fonction est donc définie dans OpenGL ou dans la bibliothèque graphique ouverte qui attribue une couleur à un point 3D.
Nous n'avons donc pas besoin de connaître les détails tels que la façon dont la couleur est définie dans le système, la manière dont ces informations sont stockées, dans quelle partie de la mémoire et l'accès, comment le système d'exploitation gère l'appel, quel processeur processeur ou GPU gère la tâche et ainsi de suite. Donc tous ces détails compliqués peuvent être évités et le programmeur peut simplement utiliser cette fonction pour assigner la couleur. Nous revivirons à cette fonction OpenGL dans une partie ultérieure de la conférence où nous allons présenter OpenGL.
Maintenant des applications graphiques telles que des systèmes de peinture que vous connaissez probablement tous, les outils CAO que nous avons mentionnés dans nos conférences d'introduction plus tôt, les jeux vidéo, les animations, tous ces outils sont développés à l'aide de ces fonctions. Il est donc important d'avoir une compréhension de ces bibliothèques si vous voulez simplifier votre vie en tant que programmeur graphique. Et nous revivirons plus tard à ces fonctions de bibliothèque, nous discuterons en détail de certaines fonctions couramment utilisées dans le contexte d'OpenGL.