Realtime 3D rendering & Virtual/Augmented/Mixed Reality

Dans le domaine de la Réalité Virtuelle depuis 2002, je propose des formations pour comprendre les technologies de rendu 3D temps, l’utilisation des systèmes de Réalité Virtuelle/Augmentée ou/et pour développer en utilisant des middlewares (Unity 3D, …) et des API/SDK (OpenGL, OpenVR, Oculus SDK, …). Je construis les formations en fonction du besoin du client en m’adaptant aux compétences et aux demandes des apprenants. La théorie est toujours entrecoupée de projets pratiques permettant d’ancrer les connaissances et de mieux appréhender les concepts abordés.

Il est possible de développer dans des dispositifs de Réalité Virtuelle, plusieurs matériels pouvant être mis à disposition lors des cours pour expérimenter l’immersion et pour tester les différentes possibilités de tels systèmes .

Modules

The areas of Virtual / Augmented / Mixed Reality are not as recent as one might think. Many systems have been imagined for about fifty years and many tools have been created to make the work of engineers or graphic designers easier. I propose to share my knowledge about these fields to train you to use these new tools which will be part of your daily life soon.

Virtual Reality

Ce module permet de faire un état de l’art des technologies ayant émergées depuis la création du premier système ayant permis d’immerger un utilisateur dans un monde virtuelle. Il présente autant les displays que les périphériques ou les systèmes permettant de faire fonctionner l’ensemble des dispositifs.

 

The purpose of this module is to provide an overview of technologies and their uses in order to understand their implementation/deployment and why not imagine new uses.

Realtime 3D rendering

La programmation 3D temps réel peut être abordée de diverses manières. J’ai choisi de présenter les principes de rendu en restant assez proche des commandes envoyées à la carte graphique. Pour ce faire on peut aborder le développement en utilisant plusieurs API (OpenGL, Vulkan, DirectX). J’ai choisi de traiter le sujet en utilisant l’API OpenGL, API historiquement choisie pour développer sur des systèmes de Réalité Virtuelle (en particulier sur les clusters graphiques) et disponible sur tous les OS (Windows, MacOS, Linux, Android, iOS, …). Elle permet de comprendre tous les concepts et leur mise en œuvre en ne demandant pas de compétences particulières en développement, des bases de C peuvent suffire.

 

Ce module permet d’apprendre à charger un objet sur la carte graphique, à lui appliquer des textures … Une fois les bases posées il est possible de charger des scènes complètes (objets, lumières, caméras, …) pour finir par les afficher dans un système immersif (CAVE ou casque).

 

Des notions mathématiques sont introduites dans ce module pour pouvoir manipuler les objets 3D et créer le rendu final en les projetant à l’écran : les espaces vectoriels et les matrices homogènes.

Shaders

Pour réaliser un rendu grâce à une carte graphique on applique aux objets 3D une suite d’étapes permettant de les transformer d’objets vectoriels 3D en pixels à l’écran. L’ensemble de ces étapes constitue ce qu’on appelle le pipeline graphique. Ce pipeline était jusqu’aux années 2000 fixe, il était alors impossible de changer les opérations effectuées dans ces étapes. Avec l’arrivée des GPU (Graphics Processing Unit) il est devenu possible de configurer et de programmer certaines étapes : ce sont les shaders. Plusieurs langages existent pour programmer des shaders (HLSL, CGFX, GLSL, …), ayant choisi OpenGL pour le rendu, GLSL est le langage qui s’est imposé pour la programmation des shaders. Il est à noter que les langages sont très similaires dans la syntaxe et qu’il est aisé de passer de l’un à l’autre une fois les concepts appréhendés.

 

La programmation des shaders est abordée en utilisant une application qui permet de tester les shaders en les recompilant à la volée pour visualiser immédiatement les modifications sans avoir besoin de relancer l’application.

Physic simulation introduction

Pour simuler des comportements (physiques) il est nécessaire de comprendre les mécanismes d’estimation des trajectoires, d’évolution des états de l’objet observé. Ce module permet de comprendre à comment se servir de la physique pour implémenter une simulation vraisemblable.

 

Les développements lors de ce module aboutissent à un petit moteur physique basé sur des particules qui permet de simuler un écoulement et de visualiser en temps réel les variations de vitesses dans l’ensemble des particules. Plusieurs paramètres peuvent être modifiés pour altérer le comportement des particules (entre elles et avec les objets de collision).

ESIEA

Fondée en 1958 et habilitée par la CTI pour ses deux campus de Paris et Laval, l’ESIEA forme des ingénieur(e)s généralistes des Sciences et Technologies du Numérique, adaptables à leur environnement technique et humain, ainsi qu’aux exigences de secteurs d’activité très diversifiés en France et à l’international.

 

Les formations ont été réalisées sur les campus de Paris & de Laval pour les niveaux BAC+4 et BAC+5.

I was in charge of modules as part of post-baccalaureate courses (engineering schools) or professional training.