Loading

Alison's New App is now available on iOS and Android! Download Now

Study Reminders
Support
Text Version

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 23 dans le cours Computer Graphics. Nous sommes donc en train de discuter du pipeline graphique et il y a cinq étapes dans le pipeline comme nous le savons tous.
La première étape est la représentation des objets, la deuxième étape est la transformation de la modélisation, la troisième étape est l'éclairage, la quatrième étape est l'affichage du pipeline, et la cinquième étape est la conversion d'analyse. Parmi eux, nous en sommes à la quatrième étape de la transformation. Les trois étapes précédentes que nous avons déjà discutées.
Maintenant, dans cette quatrième étape, comme vous pouvez le rappeler, il y a beaucoup de sous-étapes. Il y a donc 3 transformations et 2 sous-étapes liées à d'autres opérations. Les trois transformations sont la transformation de vue, la transformation de projection et la transformation d'affichage.
Ensuite, nous avons deux opérations, le découpage et l'enlèvement de surfaces cachées. Maintenant, parmi toutes ces transformations et opérations, nous avons déjà couvert les trois transformations et clipping.
Aujourd'hui, nous allons discuter de l'opération restante qui est cachée en surface. Voyons ce qui est caché l'enlèvement de la surface, quelle est l'idée de base, et comment nous pouvons le faire.
(Reportez-vous à la page Heure de la diapositive: 02:22) Plus tôt, lors de notre discussion sur le découpage, nous avons appris comment supprimer complètement ou partiellement des objets qui se trouvent à l'extérieur du volume de vue. Donc ceux que nous avons fait avec les algorithmes de découpe. Notez donc ici que l'écrêtage a été effectué sur des objets qui sont partiellement ou totalement en dehors du volume de vue. Parfois, nous avons besoin de retirer à nouveau complètement ou partiellement les objets qui se trouvent à l'intérieur du volume de la vue.
Donc en cas de coupure, nous avons affaire à des objets qui se trouvent à l'extérieur du volume de vue, alors qu'en cas de retrait de surface caché, nous traitons avec des objets qui se trouvent à l'intérieur du volume. Maintenant que les objets sont à l'intérieur du volume, il est clair que nous ne pouvons pas appliquer l'algorithme de clipping car les algorithmes de clipping sont conçus pour détecter les objets qui sont à l'extérieur, totalement ou partiellement.
Voyons un exemple. Considérez cette image. Ici, il y a deux objets ; c'est celui et ce cylindre est l'autre. Maintenant, idéalement, il y a une surface ici. Pour une génération d'image réaliste, si nous regardons cet objet à partir de cette direction, alors idéalement, nous ne devrions pas voir cette surface représentée par la ligne de frontière pointillée, cette surface. Donc si le spectateur est situé à ce point ici, cet objet Une surface, qui est derrière cet objet B ne doit pas être visible par le spectateur.
Donc avant que nous ne rende l'image pour avoir l'effet réaliste, nous devrions être capables d'éliminer cette surface de l'image rendue.
Ici, dans ce cas, nous ne pouvons pas utiliser le découpage, car ici nous supposons que les deux objets se trouvent dans le volume de vue. Les algorithmes de découpe ne sont donc pas applicables. Nous avons besoin d'un algorithme différent ou d'un ensemble d'algorithmes différents. Ces algorithmes sont maintenant connus sous le nom de méthodes de retrait de surface cachées ou de méthodes de détection de surface visibles.
Alors, pour prendre note de qui clipping, ce que nous faisons? Nous essayons de supprimer des objets qui sont partiellement ou totalement en dehors du volume de vue. Avec l'enlèvement des surfaces cachées, ce que nous faisons? Nous essayons de supprimer des objets ou des surfaces d'objets, qui se trouvent à l'intérieur du volume de vue mais qui sont bloqués de la vue en raison de la présence d'autres objets ou surfaces par rapport à une position d'observation particulière.
Donc, en cas de surface cachée, nous supposons une direction d'observation spécifique. Parce qu'une surface cachée à partir d'une position d'observation particulière peut ne pas l'être si nous le regardons d'une autre direction. Donc, en ce qui concerne la position d'affichage seulement, nous pouvons déterminer si la surface ou un objet est caché ou non.
Maintenant, avant d'entrer dans les détails des méthodes d'enlèvement des surfaces cachées, nous devons garder à l'esprit qu'il y a deux hypothèses que nous allons faire. Premièrement, nous utiliserons un système de coordonnées drois et nous supposerons que le spectateur regarde la scène le long de la direction négative de Z. Deuxièmement, les objets qui se trouvent sur la scène ont des surfaces polygonales, de sorte que toutes les surfaces de l'objet sont polygonales. Ces deux hypothèses que nous allons faire pour expliquer les méthodes cachées de retrait de surface.
Maintenant, allons dans les détails des méthodes qui sont là pour détecter et éliminer les surfaces cachées.
Maintenant il y a beaucoup de méthodes, toutes ces méthodes on peut diviser largement en deux types. La première est la méthode de l'espace objet, la seconde est la méthode de l'espace image. Alors, quelle est l'idée derrière ces méthodes que nous essayons de comprendre?
Dans le cas de la méthode de l'espace objet, nous comparons des objets ou des parties des objets les uns aux autres afin de déterminer les surfaces visibles. Ici, nous avons affaire à des objets au niveau de la 3D.
Et l'approche générale qui est suivie pour réaliser une suppression de surface cachée avec des méthodes d'espace objet se compose de deux étapes de manière générale. Donc, pour chaque objet de la scène ce que nous faisons est d'abord de déterminer les parties de l'objet dont la vue n'est pas obstruée par d'autres parties ou tout autre objet par rapport à la spécification d'affichage.
La première étape consiste donc à déterminer les pièces qui sont cachées par rapport à la position d'affichage. Et puis dans la seconde position, on rend les pièces qui ne sont pas cachées. Donc, essentiellement les pièces qui ne sont pas obstruées par la couleur de l'objet. Donc ces deux sont les étapes générales qui sont exécutées dans n'importe quelle méthode de l'espace objet, à savoir, la première étape est de déterminer les surfaces qui ne sont pas cachées et dans la seconde étape, on rend ces surfaces ou parties des objets avec la couleur particulière.
Comme ici nous avons affaire à des objets, donc essentiellement ces méthodes fonctionnent avant la projection, au niveau de l'objet 3D. N'oubliez pas qu'une fois la projection, les objets sont transformés en une description 2D. Nous ne pouvons donc pas avoir ces caractéristiques 3D.
Quels sont donc les avantages? Il y a un avantage. Ainsi, ces méthodes d'espace objet fournissent une méthode indépendante de l'unité et fonctionnent pour n'importe quelle résolution de l'écran, mais elle a aussi des inconvénients, c'est-à-dire que la détermination de ces surfaces qui sont cachées ou non cachées est un calcul intensif. Deuxièmement, en fonction de la complexité de la scène et des ressources disponibles.
Ces méthodes peuvent même devenir infaisables parce qu'elles exigent beaucoup de calcul et si les ressources ne sont pas suffisantes, nous ne pourrons peut-être pas les mettre en œuvre.
Habituellement, ces méthodes sont adaptées à des scènes simples avec un petit nombre d'objets. Les méthodes de l'espace objet sont donc mieux applicables lorsque la scène est simple et qu'il y a un petit nombre d'objets.
Dans le cas de la méthode de l'espace image, que se passe-il? Ainsi, comme le suggère le nom, la détection et le rendu ont lieu au niveau de l'image qui signifie après les projections. Donc ici, la visibilité est décidée point par point à chaque position de pixel sur le plan de projection. Ici, nous ne traitons plus dans l'espace 3D, nous avons affaire dans un plan de projection 2D au niveau des pixels.
Une fois de plus, l'approche générale compte deux étapes. Donc pour chaque pixel sur l'écran ce que nous faisons? Nous déterminons d'abord les objets qui sont les plus proches de l'observateur et qui sont percés par le projecteur à travers le pixel. Donc essentiellement, les objets les plus proches qui sont projetés sur ce point. Deuxièmement, la deuxième étape consiste à dessiner le pixel avec la couleur de l'objet.
Donc dans la première étape, nous déterminons qui est l'objet le plus proche qui est projeté sur le pixel, et dans la deuxième étape nous assignons la couleur des pixels comme la couleur de l'objet et que nous faisons pour chaque pixel à l'écran. Donc, pour comparer plus tôt ce que nous faions? Plus tôt, nous le faions pour chaque surface ici, nous le faisons pour chaque pixel.
De toute évidence, les méthodes fonctionnent après que les surfaces sont projetées et rasterisées ce qui signifie mappé à la grille de pixels, contrairement au cas précédent où nous étions dans le domaine 3D.
Ici, les calculs sont généralement moins comparés aux méthodes de l'espace objet. Cependant, la méthode dépend de la résolution d'affichage car nous faisons les calculs pour chaque pixel. Donc, s'il y a un changement dans la résolution, alors nous avons besoin de recalculer les couleurs des pixels. C'est donc la surcharge.
De façon générale, il y a ces deux méthodes, les méthodes de l'espace objet et les méthodes de l'espace image. Plus tard, nous verrons des exemples de chacune de ces méthodes qui sont très populaires. Mais avant d'entrer dans ce but, essayons de parler de certaines propriétés qui sont réellement utilisées pour trouver des méthodes efficaces de détection et de retrait de surfaces cachées.
Il y a donc beaucoup de propriétés de ce genre. Collectivement, ces propriétés sont appelées propriétés de cohérence, qui sont utilisées pour réduire les calculs dans les méthodes de suppression de surfaces cachées. Comme nous l'avons déjà dit, ces méthodes sont à forte intensité de calcul. Donc, si nous utilisons ces propriétés cohérentes, alors une certaine quantité de calculs peut être réduite comme nous le verrons plus tard.
Maintenant ces propriétés sont essentiellement liées à quelques similitudes entre des images ou des parties des images et si nous réalisons des calculs pour une partie alors en raison de ces propriétés, nous pouvons appliquer les résultats sur d'autres parties et c'est ainsi que nous réduisons le calcul.
Pour l'essentiel, nous exploitons les similitudes locales, c'est-à-dire l'utilisation des résultats que nous avons calculés pour une partie d'une scène ou une image pour les autres parties voisines. Donc nous effectuons le calcul pour une partie et nous utilisons le résultat pour d'autres parties sans répéter le même calcul et de cette façon, nous réduisons une certaine quantité de calcul.
Maintenant, il y a beaucoup de propriétés de cohérence de ce type ; en gros, de six types, la cohérence des objets, la cohérence de face, la cohérence de bord, la cohérence des lignes de balayage, la cohérence de la profondeur et la cohérence des cadres. Disons rapidement une discussion sur chacun de ces sujets pour une meilleure compréhension, mais nous n'allons pas entrer dans des discussions approfondies et comment elles sont liées à des méthodes différentes.
Tout d'abord, la cohérence des objets, ce qu'elle dit? Ici, nous véritons la visibilité d'un objet par rapport à un autre objet en comparant ses solides de cirage, qui sont dans de nombreux cas, de formes simples, telles que des sphères ou des cubes. Donc, seulement si les solides se chevauchent, nous allons poursuivre le traitement. S'il n'y a pas de chevauchement, cela signifie qu'il n'y a pas de surfaces cachées, de sorte que nous n'avons pas besoin de procéder à un traitement ultérieur. Il s'agit donc d'un moyen simple d'éliminer beaucoup de calculs en raison de cette propriété de cohérence des objets.
Ensuite, venez faire face à la cohérence. Ici, les propriétés de surface calculées pour une partie d'une surface peuvent être appliquées aux parties adjacentes de la même surface, c'est-à-dire quelle est l'implication de cette propriété de cohérence de face. Par exemple, si la surface est petite, on peut supposer que la surface est invisible pour un spectateur si une partie de celle-ci est invisible. Nous n'avons donc pas besoin de vérifier l'invisibilité pour chaque partie. Nous le véritons pour une partie et nous disons simplement que d'autres parties seront invisibles si cette partie est invisible.
Ensuite, la troisième est la cohérence de bord. Ici, cette propriété indique que la visibilité d'une arête ne change que lorsqu'elle traverse une autre arête. Si un segment d'une arête non-intersection est visible, nous déterminons sans autre calcul le bord entier est également visible. Ainsi, la cohérence de bord nous dit qu'il y aura un changement de visibilité seulement si l'arête croise un autre bord. En d'autres termes, si un segment d'une arête est visible et que le bord n'est pas intersectant avec un autre bord, cela signifie que nous pouvons dire que le bord entier est également visible.
Puis vient la cohérence de la ligne d'analyse, ce qu'elle dit? Il indique ou implique qu'une ligne ou un segment de surface visible sur une ligne d'analyse est également susceptible d'être visible dans les lignes d'analyse adjacentes et qu'il n'est pas nécessaire d'effectuer ces calculs de visibilité pour chaque ligne d'analyse. Nous le faisons pour une ligne d'analyse et appliquons le résultat pour les lignes de balayage adjacentes.
Ensuite, la profondeur de la profondeur, qui nous indique que la profondeur des parties adjacentes de la même surface est similaire. Il n'y a pas beaucoup de changement de profondeur dans les parties adjacentes d'une surface. Ces informations, à leur tour, nous aident à déterminer la visibilité des parties adjacentes d'une surface sans trop de calcul.
Ensuite, la cohérence du cadre, qui nous dit que les images de la même scène aux points successifs dans le temps sont susceptibles d'être similaires malgré les petits changements dans les objets et le point de vue, sauf près des bords des objets en mouvement. Cela signifie que les calculs de visibilité ne doivent pas être effectués pour chaque scène affichée à l'écran. La cohérence des cadres est donc liée au changement de scène. Les propriétés de cohérence antérieures étaient liées aux images statiques ici, nous parlons de changement dynamique des images et sur la base de cette propriété de cohérence, nous pouvons conclure que la visibilité peut être déterminée sans le calculer à nouveau et encore pour chaque scène.
Donc, c'est en bref les six propriétés de cohérence. Les cinq premières propriétés sont liées aux images statiques la dernière propriété peut être utilisée pour le rendu des animations, ce qui n'est de toute façon pas une partie de nos conférences ici et les méthodes cachées de retrait de surface utilisent ces propriétés pour réduire les calculs. Passons maintenant aux détails de ces méthodes.
Nous commençons donc par une méthode simple appelée méthode d'élimination face à face.
Quelle est cette méthode? C'est en fait la façon la plus simple de retirer un grand nombre de surfaces cachées pour une scène composée de polyèdres. Ici, nous supposons que chaque objet est un polyèdre, et en utilisant l'élimination de face arrière, nous pouvons enlever un grand nombre de surfaces cachées. L'objectif est de détecter et d'éliminer les surfaces qui se trouvent sur le dos des objets par rapport au spectateur.
Ainsi, lorsqu'une surface est sur la face arrière d'un objet à l'égard d'un afficheur particulier, lors de l'affichage de la surface arrière ne doit pas être affichée. Avec la méthode de l'élimination des faces arrière, nous pouvons détecter sur ces surfaces arrière et les retirer de toute autre considération lors de l'affichage.
Les étapes sont très simples pour cette méthode particulière. Il y a donc trois étapes. Dans la première étape, nous déterminons un vecteur normal pour chaque surface N représentée en termes de quantités scalaires a, b, c le long de l'axe des trois. Je suppose que vous savez tous comment calculer le vecteur normal d'une surface donnée, sinon vous pouvez vous référer à n'importe quel livre sur l'algèbre vectorielle, livre de base ; il s'agit d'un processus très simple et je ne discuterons pas des détails ici.
Maintenant, une fois que la normale est décidée, nous véritons pour ce composant Z. Si ce composant Z est inférieur à 0, le composant scalaire, alors nous éliminons cette surface particulière car lorsque le composant Z est inférieur à 0, la surface est de retour en face, alors que lorsqu'elle est égale à 0, le vecteur d'affichage broutent réellement la surface. Dans ce cas aussi, nous considérons qu'il s'agit d'une face arrière.
Maintenant, si c est supérieur à 0, alors nous conservons la surface ce n'est pas la face arrière et nous effectuons ces étapes une et deux pour toutes les surfaces dans une boucle. Donc, comme vous pouvez le voir, c'est une méthode très simple, nous prenons simplement une surface à la fois, calculez sa surface normale et vérifiez le composant Z le composant scalaire de Z. S'il est inférieur à 0, alors nous éliminons la surface sinon nous la conservons et nous le faisons pour toutes les surfaces.
Prenons un exemple. Supposons que c'est notre objet, il contient quatre surfaces ACB, ADB, DCB et ADC ; quatre surfaces sont là. Donc, pour chacune de ces surfaces, nous réalisons la méthode de l'élimination des faces arrière. Pour chacune de ces surfaces, nous calculons le composant Z de la surface normale comme indiqué dans les étapes précédentes.
Faisons ça pour les surfaces. Pour ACB, le composant z de la normale est -12, il est donc inférieur à 0. Donc ACB n'est pas visible comme vous pouvez le voir de ce côté ACB est sur le dos de la surface.
Pour ADB, DCB et ADC les composantes z de la normale sont respectivement -4, 4 et 2. Nous pouvons donc voir que pour DCB et ADC le composant z est supérieur à 0, donc ce sont des surfaces visibles. Mais pour la BAD, elle est moins de 0 de sorte qu'elle n'est pas une surface visible. C'est donc la façon simple de le faire.
Et vous devez noter ici que nous avons affaire à la description 3D des objets dans le système de coordonnées de vue, donc il fonctionne sur les surfaces, il s'agit donc d'une méthode d'espace objet. En pratique, en utilisant cette méthode très simple, nous pouvons éliminer environ la moitié de toutes les surfaces d'une scène sans autre calcul compliqué.
Cependant, il y a un problème avec cette méthode. Cette méthode ne considère pas l'obscurissement d'une surface par d'autres objets sur la scène. Alors ce que nous avons fait? Nous avons essentiellement éliminé les faces arrière d'un objet. Ici, la face arrière est obscurcie par la surface du même objet. Si une surface n'est pas une face arrière mais qu'elle est obscurcie par la surface d'un autre objet, ces surfaces ne peuvent pas être déterminées ou détectées à l'aide de la méthode d'élimination de la face arrière et nous avons besoin d'autres algorithmes.
Cependant, ces autres algorithmes sont utiles pour la détection d'une surface qui est obscurcie par d'autres surfaces d'objets et nous pouvons utiliser ces algorithmes en conjonction avec cette méthode.
Parlons de l'une de ces méthodes qui est un algorithme de tampon de profondeur ou aussi appelé algorithme de tampon Z.
Cet algorithme est une méthode d'espace image. Cela signifie ici que nous effectuons des comparaisons au niveau des pixels. Nous supposons donc ici que les surfaces sont déjà projetées sur la grille de pixels, puis nous comparons la distance de la surface à partir de la position du spectateur.
Plus tôt, nous avons mentionné qu'après projection, l'information sur la profondeur est perdue. Cependant, nous avons besoin des informations de profondeur ici pour comparer la distance de la surface à celle d'un observateur. Donc nous stockons cette information de profondeur même après projection et nous supposons un stockage supplémentaire, qui a cette information de profondeur, qui est appelée tampon de profondeur ou tampon Z. Ici, la taille de cette mémoire tampon est identique à la mémoire tampon de trame. Cela signifie qu'il y a un stockage pour chaque pixel dans cette mémoire tampon.
Une autre hypothèse que nous faisons est que nous avons affaire à des volumes canoniques. La profondeur de n'importe quel point ne peut pas dépasser la plage normalisée. Nous avons donc déjà une plage normalisée du volume et la profondeur ne peut pas dépasser cette gamme que nous supposons. Si nous supposons que nous pouvons alors fixer la taille de la mémoire tampon de profondeur ou le nombre de bits par pixel. Sinon, si nous autorisons une profondeur illimitée, nous ne connaissons pas le nombre de bits à conserver et cela peut créer des problèmes de mise en oeuvre. Nous allons donc pour quelques considérations standardisées.
Maintenant, c'est l'algorithme, l'algorithme de la profondeur de l'algorithme montré ici. L'entrée est la mémoire tampon de profondeur initialisée à 1 ; ensuite, nous avons la mémoire tampon de trame, qui est initialisée à la couleur d'arrière-plan, la liste des surfaces et la liste des points projetés pour chaque surface ; toutes ces entrées sont donc entrées. La sortie est une mémoire tampon de profondeur et une mémoire tampon de trame avec des valeurs appropriées. Cela signifie que la valeur de la mémoire tampon de profondeur continuera à changer et que la mémoire tampon de trame contiendra les valeurs finales à la fin de l'algorithme.
Alors ce que nous faisons? Pour chaque surface de cette liste de surfaces, nous réalisons quelques étapes. Maintenant, pour chaque surface, nous avons les positions de pixels projetées. Donc, pour chaque position de pixel projetée de la surface i, j à partir de la position de pixel la plus projetée, ce que nous faisons? Nous calculons la profondeur indiquée par d du point projeté sur la surface, puis comparez avec la profondeur déjà stockée de ce point.
Si d est inférieur à ce qui est déjà stocké dans la mémoire tampon de profondeur à l'emplacement correspondant, nous mettez à jour les informations de la mémoire tampon de profondeur, puis nous mettez à jour les informations de la mémoire tampon de trame avec la couleur de la surface particulière et ceci nous continuons pour tous les pixels de cette surface projetée et nous le faisons pour toutes les surfaces. La phase cruciale ici est le calcul de la profondeur, comment pouvons-nous le faire?
Nous pouvons le faire de façon itérative. Voyons comment.
Considérons ce scénario ici. C'est une façon d'illustrer cette méthode itérative. Nous envisageons cette surface triangulaire qui, après projection, ressemble à ça. Maintenant, l'équation de surface que nous connaissons que nous pouvons représenter sous forme de ax + par + cz + d = 0. Encore une fois, si vous ne le connaissez pas, vous pouvez vous référer aux manuels de base sur les vecteurs et les plans.
Maintenant, compte tenu de cette équation de surface, nous pouvons trouver les valeurs z en termes de b c comme indiqué ici. Et la valeur z est la profondeur de ce point particulier, de sorte que c'est la profondeur de n'importe quel point sur la surface. Maintenant, nous supposons un volume de vue canonique. Cela signifie que toutes les projections sont des projections parallèles. Donc la projection est simple, si un point est x, y, z puis après projection, il devient x, y nous lâchez le composant z. C'est donc notre hypothèse.
Maintenant, considérons un pixel i, j de la surface particulière. Donc x est i, y est j. Maintenant, la profondeur du point d'origine z est alors donnée par cette expression où on remplace x et y avec i et j a, b, c et d sont des constantes.
Maintenant, alors que nous avons progressé le long de la même ligne de scan, considérons ce point et ce point. Le pixel suivant est à i + 1, et j. Maintenant, la profondeur du point de surface correspondant à l'emplacement de pixel suivant est donnée par cette expression où on remplace i par i + 1. Après l'expansion et la réorganisation, nous pouvons obtenir ce formulaire.
Cette partie, nous le savons déjà, c'est la profondeur du point i, j. Donc on peut simplement dire que z'profondeur est (z-a/c), et ici vous pouvez voir que c'est un terme constant. Ainsi, pour les points successifs, nous pouvons calculer la profondeur en soustrayant simplement un terme constant de la profondeur précédente qui est la méthode itérative.
Donc c'est le long d'une ligne de scan. Que se passe-il entre les lignes d'analyse? Une méthode itérative similaire que nous pouvons formuler. Maintenant, supposons que le point x, y sur le bord d'une surface projetée, dit, ici. Maintenant dans la prochaine ligne de scan, x devient (x-1/m) dans ce cas, et la valeur y devient y moins 1 ; m est la pente de la ligne de bord.
Ensuite, nous pouvons calculer une nouvelle profondeur à ce nouveau point comme indiqué ici et si nous élargissons et réorganisons ce que nous allons obtenir? Cette nouvelle profondeur en termes de profondeur antérieure et d'un terme constant. Encore une fois, nous voyons que, entre les lignes de balayage, nous pouvons calculer la profondeur aux arêtes en ajoutant un terme constant à la profondeur précédente, puis le long de la ligne de balayage, nous pouvons continuer en soustrayant un terme constant de la profondeur précédente.
Il s'agit donc de la méthode itérative de calcul de la profondeur et de cette méthode que nous suivons dans l'algorithme Z-buffer pour calculer la profondeur à un point donné. Essayons de comprendre cet algorithme avec un exemple.
Supposons qu'il y a deux surfaces triangulaires s1 et s2. Il est clair qu'ils se trouvent dans le volume de vue. Maintenant, les sommets de s1 sont donnés comme ces trois sommets, s2 est aussi donné comme ces trois sommets. Comme avant, nous supposons une projection parallèle due à la transformation de volume de vue canonique et aussi, nous pouvons dériver des points de projection ou les sommets projetés de s1 et s2 sur le plan de vue pour être dénoté par ces sommets montrés ici, ce qui, pour l'essentiel, nous pouvons obtenir en déposant simplement le composant z. Maintenant, c'est la situation montrée dans cette figure.
Maintenant, on nous donne un point (3, 1) et on veut déterminer la couleur à ce point. Notez que ce point fait partie des deux surfaces, de sorte que la couleur de surface qu'il doit obtenir, nous pouvons déterminer à l'aide de l'algorithme. Supposons maintenant que cl1 et cl2 sont les couleurs de s1 et s2 et bg est la couleur d'arrière-plan.
Maintenant, dans un premier temps, les valeurs de la mémoire tampon de profondeur sont définies à une valeur très élevée et les valeurs de la mémoire tampon de trame sont de couleur d'arrière-plan, et ensuite nous suivons les étapes de l'algorithme, nous processus les surfaces une à la fois dans l'ordre s1 suivi de s2.
Maintenant commençons par s1, qu'est-ce qui se passe? A partir des sommets donnés, nous pouvons déterminer l'équation de surface s1 à x + y + z-6 = 0. Ensuite, nous déterminons la profondeur du pixel de surface le plus projeté à gauche sur la ligne de balayage topmost qui est le pixel (0, 6) ici, qui est z à être 0.
Maintenant, c'est le seul point sur la ligne de scan le plus haut comme vous pouvez le voir dans la figure, puis nous allons à la prochaine ligne de scan ci-dessous qui est y=5. Et de cette façon, en utilisant la méthode itérative, nous déterminons la profondeur du pixel le plus projeté à gauche sur cette ligne de balayage à être, en utilisant cette expression pour être 1 car ici m est très haut, l'infini. Et donc, l'équation de surface c'est ça.
Ensuite, l'algorithme procède au calcul de la profondeur et de la détermination de la couleur le long de y= 5 jusqu'au bord droit. A ce stade, il va à la prochaine ligne de scan qui est y= 4 ici. Maintenant, on peut sauter toutes ces étapes et on peut aller directement à y= 1, cette ligne sur laquelle se trouve le point d'intérêt.
Maintenant, à la suite de cette procédure itérative que nous avons décrite plus haut à travers les lignes d'analyse, nous calculons d'abord la profondeur du point le plus à gauche ici comme z=5. Nous sautons ces étapes, vous pouvez faire les calculs vous-même et découvrir. Ensuite, nous allons suivre cette ligne d'analyse dans cette direction. Donc nous allons au point suivant ici, puis ici, et donc jusqu'à ce point, (3, 1), et calculons qu'à ce point z est 2.
Maintenant, cette valeur de profondeur est inférieure à la valeur déjà stockée qui est l'infini. Nous avons donc défini cette valeur à l'emplacement de la mémoire tampon de profondeur correspondante, puis réinitialisé la valeur de la mémoire tampon de trame de l'arrière-plan à la couleur de la surface 1.
Ensuite, notre traitement continue pour tous les points, mais ceux-ci ne sont pas très pertinents ici parce que nous ne sommes préoccupés que par ce point, donc nous sauterons ces traitements. Donc une fois que le traitement se termine pour s1 pour tous les points projetés, nous allons à s2 et nous réalisons des étapes itératives similaires. Ensuite, nous trouvons la couleur à ce point particulier pour s2, puis nous effectuons des comparaisons et attribuons la couleur.
Donc nous sautons ici tous les autres calculs et il est laissé comme un exercice pour vous pour compléter les calculs. C'est donc l'idée derrière l'algorithme de tampon de profondeur ou l'algorithme Z-buffer.
Maintenant, un point est là. Avec cet algorithme particulier, un pixel peut avoir une couleur de surface. Ainsi, étant donné plusieurs surfaces, un pixel à la fois ne peut avoir qu'une de ces couleurs de surface. A partir de n'importe quelle position d'affichage, cela signifie qu'une seule surface est visible. Cette situation est donc acceptable si nous avons affaire à des surfaces opaques.
Si les surfaces ne sont pas opaques, si elles sont transparentes alors définitivement, nous obtenons des surfaces multiples qui n'est pas possible avec cet algorithme de tampon de profondeur particulier. En cas de surfaces transparentes, la couleur des pixels est une combinaison de la couleur de surface plus la contribution des surfaces derrière, et notre mémoire tampon de profondeur ne fonctionne pas dans ce cas car nous n'avons qu'un seul emplacement pour stocker la valeur de profondeur pour chaque pixel. Nous ne pouvons donc pas stocker toutes les contributions de surface à la valeur de couleur.
Il existe une autre méthode appelée "méthode de la mémoire tampon" qui peut être utilisée pour surmonter cette limitation particulière. Nous n'allons pas entrer dans les détails de cette méthode, vous pouvez vous référer au matériel, au matériel de lecture. C'est donc, en résumé, ce que nous pouvons faire avec la méthode de la mémoire tampon de profondeur.
Donc pour récapitulation, aujourd'hui nous avons appris l'idée de base de l'enlèvement de surfaces cachées. Nous avons appris des propriétés différentes qui peuvent être utilisées pour réduire les calculs. Puis nous avons appris à propos de deux grandes classes d'algorithmes cachés de retrait de surface, l'un est la méthode de l'espace objet, l'autre est la méthode de l'espace image. Nous avons appris à propos d'une méthode d'espace objet qui est la méthode d'élimination de la face arrière, et nous avons aussi appris sur une méthode d'espace image qui est l'algorithme de tampon de profondeur ou l'algorithme de tampon Z.
Tout ce que nous avons discuté aujourd'hui peut être trouvé dans ce livre, vous pouvez vous référer au chapitre 8, articles 8.1 à 8.4. Et si vous voulez en savoir plus sur l'algorithme A-buffer, vous pouvez aussi vérifier l'article 8.5. C'est tout pour aujourd'hui. Merci et au revoir.