OpenGL["noël"]

OpenGL["noël"]

  • Intro et SDK
  • Bronze
  • Silver
  • Gold
  • Blog
  • OpenGL Documentation
  • OpenGL Wiki
  • GitHub
  • My glTF Viewer Tutorial

›3D - La théorie

3D - La théorie

  • Introduction
  • La Normal Matrix
  • Un exemple de Vertex Shader pour la 3D
  • La bibliothèque glm

3D - La pratique

  • Introduction
  • Les classes Sphere et Cone
  • Dessiner une sphere
  • Dessiner une lune
  • Dessiner la terre
  • Multi-texturing
  • Utiliser plusieurs shaders

Gestion de la caméra

  • Introduction
  • Trackball Camera
  • Freefly Camera

Put the lights on !

  • Introduction
  • Directional Light
  • Point Light
  • Aller plus loin

Projet(s)

  • Projet: IM(A)ineCraft

La Normal Matrix

Il existe un piège dans tout ce bel univers de transformations: la transformation des normales. Tout d'abord petit rappel: la normale d'un vertex est le vecteur unitaire perpendiculaire à la surface au point considéré. Les normales sont utilisés pour faire des calculs de lumière.

Lorsque l'on effectue des scales non-uniformes (c'est à dire dont le coefficient de scaling est différent sur chacun des axes), alors l'application brute de la transformation sur les normales d'un objet à pour effet de supprimer la relation d'orthogonalité: les normales ne sont alors plus des normales.

Afin de remédier à ce problème on utilise la NormalMatrix définit de la manière suivante:

$$ NormalMatrix=(MV^{−1})T $$

Pour rappel, \(MV\) est la ModelViewMatrix. Pour obtenir la NormalMatrix on l'inverse et on prend la transposée du résultat.

Ainsi, toutes les positions seront transformées en utilisant la ModelViewMatrix (et la ModelViewProjectionMatrix pour gl_Position) et toutes les normales seront transformées en utilisant la NormalMatrix.

← IntroductionUn exemple de Vertex Shader pour la 3D →
OpenGL["noël"]
About Me
Personal websiteGithub
About This Website
BlogopenglnoelPowered by Docusaurus
About OpenGL
Documentation (docs.gl)Wiki
Copyright © 2021 Laurent NOEL