Archives pour la catégorie Rendu graphique

Les différents espaces de rendu graphique

transfor

Intro :

Avant d’effectuer un rendu en deux dimensions à l’écran (qui est une matrice de pixels), il est nécessaire d’effectuer certaines conversions de coordonnées entre des repères bien spécifiques.

DirectX a besoin de 3 matrices pour effectuer ce rendu.

Prérequis :

– Savoir ce qu’est une matrice

– Savoir ce qu’est un vecteur

– Savoir ce qu’est une transformation d’un système coordonnées dans un autre

Explications :

Tous les objets 3D sont composés d’un ensemble de triangles. Ces triangles sont composés de vertices. Ce qui fait que les objets 3D (appelés aussi meshes) sont représentés simplement une liste de vertices.

Model Space :

[image bonhomme avec axe model space]

Pour repérer correctement les vertices d’un modèle, nous avons besoin d’un repère ou d’un système de coordonnées.

Chaque modèle (ou mesh) a un système de coordonnée appelé en anglais « Space » .

L’artiste qui a créé ce modèle avec un logiciel de modélisation 3D (comme Maya, Blender ou 3D Studio Max)
a défini ses vertices dans cet espace (qui se nomme comme le Model Space).

World Space :

Notre scène a aussi un système de coordonnées (ou repère) qui se nomme le « World Space » et chaque modèle / objet a une position relative à ce dernier repère.

C’est dans cet espace que nous pouvons effectuer des translations, des rotations et des agrandissements.

View Space :

Nous avons besoin que la scène soit vue d’une certaine position dans celle-ci. Cette position s’appelle l’œil (the eye en anglais) ou la caméra.

Projection Space :

Nous avons besoin d’afficher le contenu de la scène en fonction de la position de la caméra à l’écran ou au framebuffer.

Résumé :

Références :

– https://fr.wikipedia.org/wiki/Rast%C3%A9risation

– https://en.wikipedia.org/wiki/Rasterisation

– https://takinginitiative.files.wordpress.com/2010/08/2.pdf

Le Frustum de la caméra

frustum

Intro :

Appelé aussi « view frustum », ce volume décrit la façon dont la caméra effectue le rendu 2D.

En effet, pour effectuer du rendu 3D à l’écran, il faut définir une « camera » virtuelle qui pourra se mouvoir et se déplacer dans la scène.

Prérequis :

– Savoir initialiser DirectX 10.1

Explications :

camera_view_volume

Cette caméra spécifie quel volume, depuis l’observateur de la scène, elle peut observer.

L’espace compartimenté entre le « near clip plane » et le « far clip plane » définit le volume que la caméra peut voir. Cet espace s’appelle le « frustum » de la caméra, et comme on peut le voir c’est une sorte de pyramide tronquée.

Le clipping :

Les objets (ou les parties d’objets) qui ne sont pas à l’intérieur de ce volume doivent être ignorés avant d’être traités vers le rendu 2D. Ce procédé s’appelle le « clipping » (ou coupage en français).

Le « near clip plane » définit jusqu’à quelle distance les objets les plus proches de la caméra sont ignorés, en effet les objets situés entre le « near clip plane » et la caméra sont « coupés » (clipped).

Le « fear clip plane » définit jusqu’à quelle distance les objets les plus loins de la caméra sont ignorés, en effet les objets situés au delà du « far clip plane » sont « coupés » (clipped).

Les triangles situés en partie dans ce volume sont séparés en deux parties.

Les propriétés de ce volume « frustum » dépendent du FOV (Field of View) et des positions des near clip plane et fear clip plane.

La nature du frustum va modifier la façon dont le rendu sera effectué à l’écran 2D. C’est-à-dire depuis l’espace de la caméra 3D vers l’espace de projection 2D.

Composition :

Le frustum est composé de 6 plans formant une pyramide tronquée.

Pour savoir savoir si un point est dans le volume on utilise le produit scalaire sur ces 6 plans. Si les valeurs correspondent après avoir calculer les produits scalaire, le point est à l’intérieur du frustum.

Résumé :

Le frustum de la caméra représente le volume de vue que l’observateur peut voir dans la scène (graphe qui est formée de tous les modèles visibles).

Référence :

– https://msdn.microsoft.com/en-us/library/ff634570.aspx

– https://en.wikipedia.org/wiki/Viewing_frustum

– Shader Approach – Franck D.Luna