filière 2 : génie logiciel et systèmes informatiques

85
Rapport d’élève ingénieur Stage de 2 ème année Filière 2 : Génie Logiciel et Systèmes Informatiques Visualisation en réalité virtuelle de simulations d’écoulements volcaniques Présenté par Jordan DAFFIX Responsable OPGC : Emmanuel DELAGE Responsable ISIMA : Jonas KOKO Date de soutenance : 24/08/2020 Durée du stage : 5 mois Campus des Cézeaux. 1 rue de la Chébarde. TSA 60125. 63178 Aubière CEDEX

Upload: others

Post on 23-Jun-2022

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Filière 2 : Génie Logiciel et Systèmes Informatiques

Rapport d’élève ingénieurStage de 2ème année

Filière 2 : Génie Logiciel etSystèmes Informatiques

Visualisation en réalitévirtuelle de simulations

d’écoulements volcaniques

Présenté par Jordan DAFFIX

Responsable OPGC :Emmanuel DELAGE

Responsable ISIMA :Jonas KOKO

Date de soutenance : 24/08/2020Durée du stage : 5 mois

Campus des Cézeaux. 1 rue de la Chébarde. TSA 60125. 63178Aubière CEDEX

Page 2: Filière 2 : Génie Logiciel et Systèmes Informatiques

1

Page 3: Filière 2 : Génie Logiciel et Systèmes Informatiques

Remerciements

Je souhaite remercier sincèrement mon tuteur Emmanuel Delage,qui m’a proposé ce sujet et m’a soutenu chaque jour durant pour me-ner ce projet à bien, ainsi que Benjamin van Wyk de Vries, qui a permisl’existence de ce projet et dont les encouragements furent précieux.

Je remercie également mon tuteur académique, Jonas Koko, pourm’avoir accompagné lors de ce stage.

Enfin, je tiens à remercier Murielle Mouzat, enseignante de commu-nication à l’ISIMA, qui m’a transmis les documents et connaissancesnécessaires pour la réalisation de ce rapport.

2

Page 4: Filière 2 : Génie Logiciel et Systèmes Informatiques

Table des matières

Remerciements

Table des matières

Tables des figures

Résumé

Abstract

Glossaire

Introduction

1 Contexte du projet1.1 Présentation de la structure d’accueil . . . . . . . . . . . . 111.2 Présentation du projet 3DTeLC . . . . . . . . . . . . . . . . 141.3 Arrière-plan du projet . . . . . . . . . . . . . . . . . . . . . 141.4 Rappel du sujet . . . . . . . . . . . . . . . . . . . . . . . . . 15

2 Réalisation du projet2.1 Présentation de l’existant . . . . . . . . . . . . . . . . . . . 16

2.1.1 Logiciel 3DTeLC . . . . . . . . . . . . . . . . . . . . 162.1.2 Logiciel 3DTeLC-Clermont . . . . . . . . . . . . . . 172.1.3 VolcFlow . . . . . . . . . . . . . . . . . . . . . . . . . 18

2.2 Gestion de projet . . . . . . . . . . . . . . . . . . . . . . . . 192.3 Moteurs de jeu . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.3.1 Qu’est-ce qu’un moteur de jeu? . . . . . . . . . . . 212.3.2 Unreal Engine 4 . . . . . . . . . . . . . . . . . . . . 222.3.3 Unity . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.3.4 Choix du moteur . . . . . . . . . . . . . . . . . . . . 23

2.4 Cas d’étude géologique . . . . . . . . . . . . . . . . . . . . 272.4.1 Lemptégy . . . . . . . . . . . . . . . . . . . . . . . . 272.4.2 Puy-de-Dôme . . . . . . . . . . . . . . . . . . . . . . 272.4.3 Meager . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.5 Modèle topographique . . . . . . . . . . . . . . . . . . . . . 292.5.1 LiDAR et photogrammétrie . . . . . . . . . . . . . . 292.5.2 Mesh procédural . . . . . . . . . . . . . . . . . . . . 32

2.6 Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

3

Page 5: Filière 2 : Génie Logiciel et Systèmes Informatiques

2.7 Simulations . . . . . . . . . . . . . . . . . . . . . . . . . . . 412.7.1 Simulations précalculées . . . . . . . . . . . . . . . 412.7.2 Simulations temps réel . . . . . . . . . . . . . . . . 45

2.8 Optimisation . . . . . . . . . . . . . . . . . . . . . . . . . . 472.9 Outils géologiques . . . . . . . . . . . . . . . . . . . . . . . 49

2.9.1 Boussole . . . . . . . . . . . . . . . . . . . . . . . . . 492.9.2 Carte miniature . . . . . . . . . . . . . . . . . . . . . 502.9.3 GPS . . . . . . . . . . . . . . . . . . . . . . . . . . . 502.9.4 Échelle de couleurs . . . . . . . . . . . . . . . . . . 51

2.10 Développement de la Réalité virtuelle . . . . . . . . . . . . 522.10.1 Matériel utilisé . . . . . . . . . . . . . . . . . . . . . 522.10.2 Intégration dans Unity . . . . . . . . . . . . . . . . . 53

2.11 Outils développeur . . . . . . . . . . . . . . . . . . . . . . . 552.12 Tests et validation . . . . . . . . . . . . . . . . . . . . . . . 582.13 Valorisation . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

2.13.1 Diffusion . . . . . . . . . . . . . . . . . . . . . . . . . 582.13.2 École 3DTeLC . . . . . . . . . . . . . . . . . . . . . . 60

3 Bilan du projet3.1 Problèmes rencontrés . . . . . . . . . . . . . . . . . . . . . 613.2 Résultats et perspectives . . . . . . . . . . . . . . . . . . . 62

Conclusion

Sources documentaires

A Organigramme de l’OPGC (partie 1)

B Organigramme de l’OPGC (partie 2)

C Diagramme de Gantt prévisionnel

D Diagramme de Gantt réel

E Product Backlog

4

Page 6: Filière 2 : Génie Logiciel et Systèmes Informatiques

Table des figures

1 Infrastructures de l’OPGC . . . . . . . . . . . . . . . . . . . 132 Modèle 3D du Lemptégy avec 3DTeLC . . . . . . . . . . . 173 Simulation en perspective isométrique avec VolcFlow . . . 184 Moteurs les plus utilisés sur Steam . . . . . . . . . . . . . 245 Moteurs les plus utilisés sur itch.io . . . . . . . . . . . . . 256 Principe du LiDAR . . . . . . . . . . . . . . . . . . . . . . . 297 Fichier ASC de coordonnées LiDAR . . . . . . . . . . . . . 308 Maillage d’un dauphin . . . . . . . . . . . . . . . . . . . . . 329 Lissage d’un maillage . . . . . . . . . . . . . . . . . . . . . 3310 Attribution des triangles . . . . . . . . . . . . . . . . . . . . 3411 Puy-de-Dôme avec texture par défaut . . . . . . . . . . . . 3512 Orthoimage du Puy-de-Dôme . . . . . . . . . . . . . . . . . 3613 Cartographie UV d’un dé . . . . . . . . . . . . . . . . . . . 3714 Application d’une orthophotographie sur le Puy-de-Dôme . 3815 Images 2D issues de VolcFlow . . . . . . . . . . . . . . . . 4116 Simulation avant et après coefficient . . . . . . . . . . . . 4217 Simulation sans et avec épaisseur . . . . . . . . . . . . . . 4318 Pseudo-couleurs blue, hot, et texture réaliste . . . . . . . . 4419 Points cardinaux dans Unity . . . . . . . . . . . . . . . . . 4920 Boussole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4921 Cartes miniatures des trois cas d’étude . . . . . . . . . . . 5022 Échelles de couleurs . . . . . . . . . . . . . . . . . . . . . . 5123 Oculus Rift . . . . . . . . . . . . . . . . . . . . . . . . . . . 5224 Outils en réalité virtuelle . . . . . . . . . . . . . . . . . . . 5425 Antenne du Puy-de-Dôme et chalet de l’OPGC . . . . . . . 5726 Simulation près du chalet . . . . . . . . . . . . . . . . . . . 5727 Organigramme de l’OPGC (partie 1) . . . . . . . . . . . . . 6928 Organigramme de l’OPGC (partie 2) . . . . . . . . . . . . . 7029 Diagramme de Gantt prévisionnel . . . . . . . . . . . . . . 7130 Diagramme de Gantt réel . . . . . . . . . . . . . . . . . . . 72

Page 7: Filière 2 : Génie Logiciel et Systèmes Informatiques

Résumé

Les principaux buts de ce projet sont de comparer les moteurs dejeu Unity et Unreal Engine 4, et d’incorporer dans le logiciel choisi lacréation d’un maillage* avec texture représentant une topographie devolcan dans lequel l’utilisateur peut naviguer en réalité virtuelle (VR).Il s’agit ensuite d’utiliser ce maillage pour réaliser des simulations decoulées volcaniques représentées par des pseudo-couleurs ou bien unetexture réaliste. Celles-ci sont visualisables en réalité virtuelle avecles casques Oculus Rift et Oculus Rift S.Il a ensuite été ajouté à ce projet des outils utiles aux géologues telsqu’une boussole, une carte miniature et des coordonnées GPS, ainsique diverses fonctionnalités permettant de montrer des pistes possiblespour les améliorations futures, comme la division des simulations surdifférentes dalles ou le téléchargement de modèles via Internet direc-tement depuis le moteur.

Mots-clés : Moteur de jeu, Unity, Unreal Engine 4, Maillage, RéalitéVirtuelle, Simulation

Abstract

The main goals of this project is to compare the Unity and UnrealEngine 4 game engines, and to incorporate the creation of a volcanomesh* with texture into the chosen software on which the user couldnavigate thanks to virtual reality (VR). It is then a question of using thismesh to carry out simulations of volcanic flows that can be viewed invirtual reality, represented by pseudo-colors or a realistic texture.Then, useful geologists tools were added to the project such as It wasthen added to this project useful tools for geologists such as compass,minimap and GPS coordinates, as well as various functionalities allo-wing to show possible improvements, as the division of simulations ondifferent tiles or downloading models via the Internet directly from theengine.

Keywords : Game Engine, Unity, Unreal Engine 4, Virtual Reality, Si-mulation

Page 8: Filière 2 : Génie Logiciel et Systèmes Informatiques

Glossaire

— Agile : les méthodes agiles sont des groupes de pratiques de pi-lotage et de réalisation de projets.

— Cartographie UV : processus de modélisation 3D consistant àprojeter une image 2D sur la surface d’un modèle 3D pour lui ap-pliquer une texture.

— Daily-scrum : le daily-scrum est une réunion de planification «juste à temps » et permet aux développeurs de faire un pointde coordination sur les tâches en cours et sur les difficultés ren-contrées. Seule l’équipe de développement intervient. Le scrummaster peut intervenir comme facilitateur en début de mise enplace de Scrum. Toute autre personne peut assister mais ne peutpas intervenir.

— GPS : Global Positioning System; est un système de géolocalisa-tion mondial par satellites, comprenant une latitude et une longi-tude, suivant respectivement la localisation nord/sud et est/ouest.

— Isométrique : s’emploie en représentation de l’espace quand lestrois directions de l’espace (longueur, largeur, profondeur) sontreprésentées avec la même importance.

— Lambert93 : projection conique conservant les angles principa-lement utilisée en France.

— LiDAR : appareil qui émet un faisceau laser et en reçoit l’écho,permettant de déterminer la distance d’un objet.

— Logiciel libre : logiciel qui peut être utilisé, modifié et redistri-bué sans restriction.

— Marketplace : marché numérique où les développeurs peuventacheter et vendre des ressources et environnements 2D et 3D.

7

Page 9: Filière 2 : Génie Logiciel et Systèmes Informatiques

— Mesh : un mesh (ou "maillage" en Français), est un objet tridi-mensionnel constitué de sommets, d’arêtes et de faces triangu-laires.

— MPI : Message Passage Interface (littéralement "Interface depassage de messages") ; est un standard de communication pourexécuter des programmes parallèles sur des systèmes à mémoiredistribuée ; c’est-à-dire qu’elle permet de répartir les processusde calcul entre plusieurs ordinateurs distants par exemple.

— Multiplateforme : fonctionne sur plusieurs plateformes, que peuventêtre les systèmes d’exploitation Windows, Linux, macOS sur or-dinateur, les systèmes d’exploitation mobiles tels qu’Android ouiOS, ou même des plateformes tels qu’un navigateur Web ou uneconsole de jeux par exemple.

— OBJ : format de fichier ouvert contenant la description d’une géo-métrie 3D.

— Orthophotographie : image aérienne ou satellitale de la sur-face terrestre, se présentant sous forme de dalle couvrant unezone de la Terre ; elle peut être géoréférencée dans n’importequel système de coordonnées.

— Photogrammétrie : ensemble des techniques permettant de re-constituer en trois dimensions des objets à partir de photogra-phies.

— Plateforme de distribution numérique : permet de fournir enligne des logiciels, jeux, musiques de manière dématérialisée.

— Plugin : composant logiciel qui complète un logiciel existant enlui apportant de nouvelles fonctionnalités.

— Prefab : objet Unity sauvegardé qui permet de stocker d’autresobjets avec leurs composants, valeurs de propriétés... Il sert demodèle que l’on peut dupliquer.

— Preuve de concept : réalisation d’une certaine méthode ou idée

8

Page 10: Filière 2 : Génie Logiciel et Systèmes Informatiques

afin de démontrer sa faisabilité, ou une démonstration de prin-cipe dans le but de vérifier qu’un concept ou une théorie a unpotentiel pratique ; elle est généralement petite et peut être com-plète ou non.

— Royalties : redevance payée à un inventeur, un auteur en fonc-tion du pourcentage d’un chiffre d’affaires.

— Script : fichier de code qui permet de déclencher des événe-ments de jeu, modifier les propriétés des composants au fil dutemps et répondre aux entrées de l’utilisateur.

— Scrum : méthode agile itérative, incrémentale et adaptative ; ellerepose sur des cycles de développement courts, elle part du prin-cipe que l’ensemble d’un projet complexe ne peut être planifiéentièrement, et permet un pilotage flexible.

— Sprint : intervalle de temps pendant lequel les équipes vont réa-liser un travail préparé au début de cet intervalle de temps enétant guidé par un objectif.

— Système géodésique : système de référence sur trois axes per-mettant d’exprimer les positions au voisinage de la Terre.

— Texture : image 2D appliquée sur un mesh 3D.

— Topographique : qui est relatif à la représentation de la formeet du relief d’un terrain sur un plan.

9

Page 11: Filière 2 : Génie Logiciel et Systèmes Informatiques

Introduction

Dans le cadre du projet européen 3DTeLC, pour l’enseignement,l’apprentissage et la communication des risques naturels au moyen dela réalité virtuelle, l’Observatoire de Physique du Globe de Clermont-Ferrand (OPGC) m’a confié le développement de la visualisation de si-mulations de coulée volcanique en réalité virtuelle.

Le projet 3DTeLC, financé par Erasmus+ et piloté par l’universitéde Portsmouth en Angleterre, est porté par l’Université Clermont Au-vergne (UCA) pour le groupe France.

Le Laboratoire Magmas et Volcans (LMV), un des deux laboratoiresde l’OPGC, est porteur du Challenge : risque naturels catastrophiqueset vulnérabilité socio-économique dans le cadre du projet I-Site Cler-mont. Il effectue ainsi une partie de sa recherche sur les risques natu-rels comme les éruptions volcaniques et les glissements de terrain.

C’est notamment dans ce cadre qu’entre mon projet, puisqu’il a pourbut de modéliser en 3D un volcan afin de pouvoir l’étudier à distanceet d’analyser la géologie du site, ainsi que de simuler des écoulementsvolcaniques.

Ainsi, ma tâche est de permettre la visualisation de simulations decoulées volcaniques sur différents sites, au moyen d’un casque de réa-lité virtuelle.

Pour présenter ce projet, j’aborde d’abord l’organisation globale etson déroulement. Ensuite, je détaille mes réalisations, en expliquant lesoutils utilisés, les décisions prises et les méthodes employées pour lesimplémenter. Enfin je présente les résultats obtenus et les perspectives.

10

Page 12: Filière 2 : Génie Logiciel et Systèmes Informatiques

1 Contexte du projet

1.1 Présentation de la structure d’accueil

L’Observatoire de Physique du Globe de Clermont-Ferrand (OPGC)est fondé en 1876 par Émile Alluard, et est actuellement dirigé par Na-thalie Huret.

Il est un Observatoire des Sciences de l’Univers (OSU) dépendantde l’Institut National des Sciences de l’Univers (INSU) du Centre Na-tional de la Recherche Scientifique (CNRS), ainsi que de l’UniversitéClermont Auvergne (UCA).

Au sein de l’UCA, l’École de l’OPGC porte les formations en sciencesde la Terre, de l’atmosphère et du climat, et de l’environnement.

Il regroupe également une Unité Mixte de Service (UMS), ainsi quedeux laboratoires :

— le Laboratoire de Météorologie Physique (LaMP), où le thème gé-néral de la recherche concerne l’impact des processus nuageuxsur l’évolution du climat

— le Laboratoire Magmas et Volcans (LMV), où le thème général dela recherche concerne les magmas et la dynamique des volcans

Il a un site instrumenté, le Cézeaux - Opme - Puy De Dôme (COPDD),qui est un élément essentiel du dispositif national d’observation de l’at-mosphère tant sur le plan du contrôle de la qualité de l’air (pollutionlongue distance) que sur le plan de la recherche sur le climat (nuageset particules, aérosols, gaz à effet de serre) et la météorologie (précipi-tations). La station de mesure du sommet du Puy-de-Dôme est stationde référence (Global-GAW) du programme Global Atmospheric Watchde la WMO (World Meteorological Organization).

11

Page 13: Filière 2 : Génie Logiciel et Systèmes Informatiques

Il possède également deux instruments nationaux :— la Plateforme de Mesures Aéroportées (PMA), ensemble d’instru-

ments microphysiques, optiques et physicochimiques aéroportés,dédié à l’observation in situ des nuages

— La Presse multi-enclumes, principalement employée en pétrolo-gie expérimentale

L’OPGC regroupe également des services nationaux d’observation :— CLimate relevant Aerosol Properties from near surface observa-

tions (CLAP), dédié au suivi de paramètres climatiques liés à l’aé-rosol atmosphérique

— Le Service National d’Observation en Volcanologie (SNOV), quiregroupe des moyens d’analyse et d’étude au sol, ainsi que desmoyens d’acquisition et de traitement de données satellites, grâceà son pôle de télédétection des volcans

— Service National d’Observation en Sismologie (SNOS), qui s’oc-cupe du réseau sismologique d’Auvergne

— AUVER-WATCH, réseau de mesures hydrologiques et hydrochi-miques sur les eaux de surface et souterraines

— PuyCloud, dédié à l’étude microbiologique de l’eau nuageuse— PuyGaz, dont le domaine scientifique est l’environnement, la phy-

sique de l’atmosphère et les sciences de la Terre

12

Page 14: Filière 2 : Génie Logiciel et Systèmes Informatiques

Figure 1 – Infrastructures de l’OPGC

L’OPGC compte 213 personnes, dont 151 permanents, 33 doctorantset 29 non-permanents (post-doctorants et autres CDD). Parmi ces per-sonnels, 30 sont affectés à l’UMS 833, 53 au LaMP et 130 au LMV. Sesdifférents locaux se situent actuellement sur le campus universitairedes Cézeaux à Aubière. Son organigramme se situe en annexe.

13

Page 15: Filière 2 : Génie Logiciel et Systèmes Informatiques

1.2 Présentation du projet 3DTeLC

3DTeLC est un projet sur une durée de 3 ans qui vise à dévelop-per un produit de réalité virtuelle pour gérer le risque naturel, grâceà des expériences d’enseignement, d’apprentissage et de communica-tion. Celui-ci se termine cette année.

Des photographies aériennes et des données LiDAR* sous-marinessont combinées pour créer des modèles 3D avec des maillages et destextures adaptées à leur intégration en réalité virtuelle. Les modèlesreprésentent des sites géologiques à risque. Le LMV s’occupe de la vol-canologie dans le cadre du projet 3DTeLC.

Le cas d’étude principal est le volcan de Lemptégy en raison desa proximité et de son intérêt scientifique. En amont de l’intégrationen réalité virtuelle, le flux de travail “Workflow” consiste en plusieursétapes élaborées en fonction de la cible choisie. La première étapeconsiste à prendre de nombreuses photographies par drone. ÉdouardRegis de l’OPGC s’occupe de cette partie avec le drone MAVIC PRO 2.Le modèle 3D est ensuite construit par Emmanuel Delage à l’aide dulogiciel Metashape de la société Agisoft.

1.3 Arrière-plan du projet

Il existe une demande de professionnels hautement qualifiés dansles secteurs de l’environnement et des géosciences, qui peuvent êtrenovateurs, créatifs avec des compétences dans l’analyse spatiale 3D, lapluridisciplinarité, la gestion de données, la réalité virtuelle, la géomé-trie appliquée aux géosciences, et en particulier la volcanologie numé-rique.

D’un autre côté, le travail sur le terrain et les compétences d’ob-servations des scientifiques sont très enrichissants. Ce projet européencherche à aborder ces manques par un programme de partage de don-nées, par une collaboration scientifique et technique et par le déve-loppement de programmes d’études pour les étudiants post-licence,concentrés autour de l’étude de risques naturels sur terre et en mer.

14

Page 16: Filière 2 : Génie Logiciel et Systèmes Informatiques

L’objectif du projet est de développer une série de modèles de réa-lité virtuelle 3D à très haute résolution de catastrophes naturelles ob-servées dans des environnements terrestres ou marins à l’aide de don-nées acquises à partir de drones aéroportés et de plates-formes sub-mersibles. Ceux-ci peuvent ensuite être utilisés dans les classes pourenseigner les environnements terrestres et marins.

Pour ce faire, le projet vise à élaborer une série de boites à outils,de documents pédagogiques et d’ensembles de données librement dis-ponibles qui permettront aux étudiants en géologie et aux populationssujettes aux risques naturels de naviguer dans ces environnements àl’aide de casques de réalité virtuelle, de cartographier et de mesurerles caractéristiques sur la surface du sol et sur le fond marin pour simu-ler les activités de cartographie réelle sur le terrain, pour les exporteret les intégrer ensuite à d’autres ensembles de données spatiales.

1.4 Rappel du sujet

L’objectif de ce projet est de proposer un univers en 3D avec le-quel nous pouvons interagir, construit à l’aide de données publiques quiportent sur la gémorphologie de différents sites. Le but est aussi d’ap-porter un élément supplémentaire au projet 3DTeLC dont la finalité estd’avoir des applications en réalité virtuelle où l’on pourra principale-ment étudier les environnements reconstruits. En effet, les utilisateursde notre logiciel pourront lancer des simulations précalculées ou calcu-lées en temps réel. Il nous sera ainsi possible d’observer la dynamiquedes coulées volcaniques avec un casque de réalité virtuelle.

15

Page 17: Filière 2 : Génie Logiciel et Systèmes Informatiques

2 Réalisation du projet

2.1 Présentation de l’existant

2.1.1 Logiciel 3DTeLC

Il a été conçu par des ingénieurs de l’Université de Porthsmouth auRoyaume-Uni et de l’Université de Catane en Italie. Son utilisation estseulement possible avec les casques de réalité virtuelle.

Le logiciel 3DTeLC permet d’importer dans le moteur Unity des mo-dèles 3D de sites géologiques dans un format standard et ouvert.Une fois intégrés, on peut naviguer dessus de trois manières diffé-rentes :

— vue à la première personne— vue aérienne depuis un drone (proche de la terre)— vue aérienne depuis un avion (éloignée de la terre)

Il offre également une large boite d’outils utiles aux géologues :— une carte miniature— la prise de photographies— marquer un lieu et prendre des notes— faire des calculs sur la morphologie— calculer la distance entre deux points— calculer l’aire d’un polygone— enregistrer des coordonnées GPS

Je n’ai pas eu beaucoup l’occasion d’utiliser ce logiciel. J’ai pu le dé-couvrir juste avant l’école ERASMUS de Clermont-Ferrand. Néanmoins,il a pu inspirer notre projet, dans les outils à ajouter et certains choixd’implémentation comme la navigation ou le menu en réalité virtuelle.

A l’écriture de ce rapport, le groupe France ne dispose pas du codesource associé car notre équipe n’a pas de responsabilité dans le dé-veloppement du logiciel et les développeurs sont assez réticents aupartage de ce code avant la fin du projet. L’équipe a donc décidé dedévelopper à partir de rien une application de réalité virtuelle équiva-lente intitulée 3DTeLC-Clermont. Ainsi, l’équipe a pu reproduire une

16

Page 18: Filière 2 : Génie Logiciel et Systèmes Informatiques

application répondant partiellement aux besoins du livrable défini dansle cadre du projet Erasmus. De plus, j’ai développé des fonctionnali-tés connexes répondant plus précisément aux demandes de l’équipe devolcanologie à Clermont-Ferrand et en lien avec la politique de site del’UCA.

Le logiciel a notamment été utilisé par mon tuteur avec l’intégrationdes versions été et hiver du volcan de Lemptégy pour parfaire le dé-veloppement de sa solution logicielle 3DTeLC-Clermont, comme nousallons le voir ci-après.

Figure 2 – Modèle 3D du Lemptégy avec 3DTeLC

2.1.2 Logiciel 3DTeLC-Clermont

L’année précédent mon stage, un projet tutoré de dernière annéea été confié à deux élèves confrères de l’ISIMA afin d’implémenter lemodèle 3D du volcan de Lemptégy dans Unity. Le modèle est importéau format OBJ, et ce indépendamment du logiciel 3DTeLC.

Ainsi il existait un projet Unity basique où l’utilisateur pouvait navi-guer sur ce site de trois manières :

17

Page 19: Filière 2 : Génie Logiciel et Systèmes Informatiques

— vue à la première personne (vue subjective)— vue à la troisième personne (vue objective)— vue aérienne drone (proche de la terre)

L’utilisation d’un casque de réalité virtuelle Oculus était égalementintégrée. C’est à partir de ce logiciel que j’ai effectué mes développe-ments.

2.1.3 VolcFlow

VolcFlow est un programme créé sur Matlab par Karim Kelfoun,enseignant-chercheur au LMV, qui permet de calculer des simulationsde coulées volcaniques en fonction de la morphologie du terrain ainsique divers paramètres physiques de l’écoulement. On peut ainsi obte-nir sur Matlab une représentation 2D ou en perspective isométrique*de l’écoulement.

Figure 3 – Simulation en perspective isométrique avec VolcFlow

Ce programme a ensuite été réécrit en C par Emmanuel Delage.Cela permet notamment de multiplier par deux fois et demi la vitessedes calculs et d’exploiter la simulation dans d’autres environnementscomme les moteurs 3D.

18

Page 20: Filière 2 : Génie Logiciel et Systèmes Informatiques

2.2 Gestion de projet

Dans le contexte de la crise sanitaire, j’ai travaillé pratiquement toutle long du stage en télétravail depuis mon domicile. Pour remédier àcette situation, nous organisions quotidiennement des réunions avecmon tuteur sur Discord. Nous avons également organisé une réunionSkype avec Benjamin Van Wyk de Vries, responsable 3DTeLC pour legroupe France.

Lorsque mon tuteur est retourné travailler en présentiel courantjuillet sur le site de l’OPGC, nous avons remarqué un problème tech-nique - causé certainement par un serveur proxy - qui ne permettaitpas l’utilisation de Discord. Nous avons donc utilisé également Micro-soft Teams pour pallier ce problème.

J’ai été suffisamment encadré au début du stage pour aborder ceprojet et répondre aux besoins et attentes efficacement. Suite à un étatdes lieux, j’ai compris les fondements et la vision du projet. L’interac-tion entre mon tuteur et moi-même a permis de dégager de nombreusespistes de développement.

Au niveau rédactionnel, je prends régulièrement des notes organisa-tionnelles et techniques (données, algorithmes) ainsi que des demandesd’implémentation... J’annote quotidiennement mes tâches, et ce de ma-nière hiérarchisée par ordre d’importance et de complexité. J’ai alorspu organiser précisément mon activité. Ma rédaction des diagrammesde Gantt prévisionnel (LIEN) et réel (LIEN) m’a ainsi été facilitée. J’aiégalement rédigé d’autres documents tels qu’un wiki ou une documen-tation technique.

Pour débuter mon stage, je fus chargé d’établir un comparatif entreles deux moteurs de jeu que sont Unreal Engine 4 et Unity, en établir laliste des avantages et inconvénients de chacun et ainsi décider lequeldes deux était le plus adéquat à utiliser. Le reste de mon stage devaitensuite être consacrée à développer la visualisation de simulations decoulées volcaniques sous Unity.

Lors de nos échanges, de nombreuses idées de fonctionnalités ontémergées. De plus, les idées prévues initialement ont été enrichies au

19

Page 21: Filière 2 : Génie Logiciel et Systèmes Informatiques

fil de l’eau, en les classant selon leur pertinence. Concernant la métho-dologie de travail, nous avons fonctionné avec une méthode agile* detype daily-scrum*, et nous avons partagé la période en quatre sprints*.Tous ces développements étaient donc répartis entre ces quatre sprintsd’une durée d’un mois, plus trois semaines prévues à la fin pour lesderniers tests et pour clore le projet. Le cahier des charges ("ProductBacklog") qui s’y rapporte est fourni en annexe.

En ce qui concerne mes diagrammes de Gantt, on peut remarquerquelques différences. En effet, une fois ma tâche principale effectuéedurant le premier mois, nous avons ajouté de multiples idées de déve-loppement. Certaines n’ont finalement pas pu être réalisées - commeappliquer la carte volcanique sur le modèle, dont je ne disposais pas -ou n’ont finalement pas été jugées très importantes. Certaines tâchesont également étaient plus complexes que prévues et m’ont ainsi faitdépenser plus de temps, comme le déploiement sur le Web.

Le code source de mes développements est disponible au moyen dela forge de Clermont Université dans deux répertoires publics :

— http ://forge.clermont-universite.fr/projects/vr-simu pourla visua-lisation en réalité virtuelle de simulations précalculées

— http ://forge.clermont-universite.fr/projects/vrgeomorph-web pourla visualisation 3D d’une simulation précalculée dans un naviga-teur Web compatible.

Seuls mes développements de la visualisation en réalité virtuelle dessimulations en temps réel n’est pas disponible en raison de la problé-matique de valorisation que j’aborderai dans ce rapport.

20

Page 22: Filière 2 : Génie Logiciel et Systèmes Informatiques

2.3 Moteurs de jeu

2.3.1 Qu’est-ce qu’un moteur de jeu?

Un moteur de jeu est un ensemble de composants logiciels permet-tant de fournir aux développeurs de jeux vidéo un solide socle d’outilspour programmer plus rapidement et efficacement.

Les fonctionnalités de base généralement fournies comprennent unmoteur de rendu pour les graphismes 2D ou 3D, un moteur physique etde détection de collision, le son, les scripts, l’animation, l’intelligenceartificielle, le portage sur différentes plateformes...

Cet outil permet ainsi d’aider énormément les équipes de dévelop-pement en économisant du temps sur le processus de développement,et leur permettent ainsi de se concentrer sur le contenu et le déroule-ment du jeu plutôt que la résolution de problèmes informatiques.

Ces plateformes permettent ainsi d’accélérer le processus de dé-veloppement, se concentrant sur le contenu et sur le scénario du jeuplutôt que sur la résolution de problèmes techniques bas niveaux.

La plupart des grosses entreprises vidéo-ludiques possèdent leurpropre moteur, qu’ils font évoluer pour les besoins utiles à la créationde leurs œuvres. En exemple le moteur Anvil, développé et utilisé eninterne par les employés d’Ubisoft pour leurs créations uniquement.

Toutefois certaines d’entre elles partagent leur moteur à la com-munauté, généralement en se rémunérant avec des royalties sur unpourcentage des bénéfices générés. C’est par exemple le cas d’UnrealEngine de la société Epic Games, Source de Valve et CryEngine de Cry-tek, qui font partie des moteurs les plus utilisés.

Certains moteurs ont été créé dès le départ pour être uniquementutilisé par la communauté. C’est le cas d’Unity, développé par UnityTechnologies - qui tire également des bénéfices de ses royalties - ou delogiciels libres comme Godot.

21

Page 23: Filière 2 : Génie Logiciel et Systèmes Informatiques

2.3.2 Unreal Engine 4

Epic Games est un studio américain de jeux vidéo fondé en 1991,connu entre autres pour avoir créé le jeu Unreal et plus récemment lesuccès commercial Fortnite.

Le studio a également sorti depuis 2018 l’Epic Games Store, uneplateforme de distribution en ligne, venant concurrencer directementSteam de la société Valve, jusqu’à là leader incontesté sur le marché.Epic Games propose ainsi sur sa plateforme de nombreux jeux, ainsique le moteur qu’elle a développé : Unreal Engine 4.

La première version de ce dernier est publié en 1998, avec la sortiedu jeu Unreal, qui donnera son nom au moteur et lui servira de vitrine.

Unreal Engine est réputé auprès des grandes entreprises, et utiliséfréquemment pour des jeux dits "AAA", c’est-à-dire des jeux à très grosbudget. En effet il est adapté pour des équipes de taille importante.

Il a une "Licence Créateur", qui permet la libre utilisation du logi-ciel aux créateurs de secteurs dans le domaine de l’enseignement et larecherche.

Il possède des tutoriels sur son site, et quelques-uns fournis par lacommunauté, et est également pourvu d’un marketplace*, l’EpicStore,qui propose du contenu gratuit et payant.

Ses principales caractéristiques sont qu’il est programmé en C++,facilitant l’intégration du code de simulation Volcflow, et en un langagede script baptisé "UnrealScript". Il propose également un langage deprogrammation visuel appelé Blueprint. Le moteur utilise la "concep-tion orientée objet", à l’image du langage qu’elle utilise. Il se veut ainsiextrêmement modulaire, permettant d’isoler le code lié aux plateformesdans des bibliothèques logicielles séparées, facilitant le portage multi-plateforme.

Il n’y a pas de compatibilité entre Unreal Engine 3 et 4. La version5 est annoncée pour 2021, et devrait permettre la compatibilité avecUnreal Engine 4.

22

Page 24: Filière 2 : Génie Logiciel et Systèmes Informatiques

2.3.3 Unity

Unity est un moteur de jeu multiplateforme développé par UnityTechnologies dont la première version date de 2005.

Il est principalement utilisé par des développeurs indépendants, néan-moins il n’est pas non plus boudé par les grands studios. Il a par exemplepermis de concevoir les jeux Pokémon GO et Hearthstone des géantsNintendo et Blizzard Entertainment. Il est également le leader incon-testable sur les jeux mobiles.

Il propose une licence gratuite dite "Personnal", avec quelques limi-tations de technologie avancée au niveau de l’éditeur, mais sans limita-tion au niveau du moteur.

Sa communauté est extrêmement importante, notamment dans lasphère francophone. L’entreprise possède sa propre chaîne YouTube etun forum et propose des tutoriels à la fois vidéos et textuels. La commu-nauté met également à disposition beaucoup d’aides. Il possède aussiun marketplace, l’AssetStore, qui propose du contenu gratuit et payanten abondance.

Ses principales caractéristiques sont qu’il utilise le langage C# surla plateforme .NET. Il suit donc également les paradigmes objets, estmodulaire, et est réputé pour permettre le portage multiplateforme.

2.3.4 Choix du moteur

Les deux moteurs ont beaucoup de similitudes. Ils sont tous lesdeux gratuits pour le domaine de la recherche, jouissent d’une commu-nauté importante, et ainsi d’un marketplace et de tutoriels. Ils utilisenttous les deux la programmation objet et sont modulaires, et permettentle développement multiplateforme, les deux plateformes m’intéressantque sont le casque Oculus et le système d’exploitation Windows étant

23

Page 25: Filière 2 : Génie Logiciel et Systèmes Informatiques

concernés.

Pour faire mon choix, j’ai parcouru beaucoup de forums. Je me suisnotamment intéressé à l’attractivité de ces deux logiciels. Ces chiffressont à prendre avec des pincettes, mais j’ai pu déduire selon les statis-tiques de la plateforme de distribution Steam que la plus grande partiedes jeux était développée avec Unreal Engine 4.

Figure 4 – Moteurs les plus utilisés sur Steam

Cela s’explique par le fait que les grands studios, quand ils n’uti-lisent pas leur propre moteur, ont tendance à préférer Unreal Engine.Toutefois d’autres chiffres viennent contrebalancer cela. Il s’agit des

24

Page 26: Filière 2 : Génie Logiciel et Systèmes Informatiques

statistiques sur la plateforme de jeux indépendants itch.io.

Figure 5 – Moteurs les plus utilisés sur itch.io

Ainsi cela vient confirmer que la plupart des jeux indépendants sontdéveloppés avec Unity, grand vainqueur, alors qu’Unreal Engine est loinderrière.

De ce que j’ai pu déduire des forums, Unity est plus simple d’utilisa-tion, et plus adapté pour les petites équipes, ce qui correspond plus àmon projet. Le langage C# est également réputé plus simple d’utilisa-tion que le C++.

En outre, le grand point fort d’Unity est sa communauté. Ses tuto-riels sont vraiment très nombreux, son marketplace extrêment fourni ;il existe rarement une question que l’on se pose qui n’a pas déjà étéposée sur un forum. Il est également très populaire en France, alorsqu’Unreal peine encore à séduire le public francophone. Cela est égale-ment sûrement dû au fait qu’Unity propose une licence gratuite depuis

25

Page 27: Filière 2 : Génie Logiciel et Systèmes Informatiques

beaucoup plus longtemps qu’Unreal, et est ainsi mieux implanté dansla communauté.

Ainsi dans la recherche, notamment francophone, c’est Unity qui estlargement préféré. C’est d’ailleurs avec ce moteur qu’a été réalisé le lo-giciel 3DTeLC. C’est également lui qui a déjà été utilisé pour débuterle projet, ainsi cela ne m’oblige pas à repartir de zéro avec 3DTeLC-Clermont. Le fait de garder un logiciel qui a cours dans ce milieu estaussi un moyen d’assurer la pérennité du projet.

D’un point de vue personnel, j’avais déjà eu l’occasion d’utiliserUnity dans mes projets privés ainsi que lors d’un projet tutoré à l’IUT.Concernant Unreal Engine 4, je connaissais son existence et avais déjàvisionné des tutoriels par curiosité bien avant mon stage, et désirais endécouvrir plus à son sujet, j’ai ainsi suivi plusieurs tutoriels de ce der-nier en début de stage pour découvrir ses fonctionnalités. J’ai cepen-dant pensé qu’il était plus intéressant pour moi de se professionaliserd’abord avec Unity, celui-ci offrant plus d’emplois en France, d’autantque cette branche est celle où je souhaite m’orienter après mes études.

Enfin, ce qu’il est important de préciser à propos de ce projet, c’estque son principal but est de montrer les possibilités qu’apportent laréalité virtuelle dans le domaine de la recherche scientifique. Il s’agitdonc de tout d’abord effectuer une preuve de concept*, puis un proto-type car le livrable est opérationnel pour certains cas d’études. . Ainsij’ai effectué mes développements sur Unity, laissant possible un por-table sur Unreal Engine 4.

Le principal avantage d’Unreal Engine dans notre cas est qu’il per-met de programmer en C++. Or le programme VolcFlow déjà existantpermettant de calculer une simulation de coulée volcanique est écriten C, qui est le langage de départ du langage C++. Il serait ainsi trèsaisé d’inclure le calcul des simulations dans UE4, alors que pour Unityil faut soit réécrire le code en C#, soit lancer un exécutable en paral-lèle. Cependant je n’ai pas accès au code source de VolcFlow, puisquecelui-ci n’a pas encore été publié dans une revue scientifique. J’ai doncmis en œuvre la solution de lancer un exécutable à partir de mon appli-cation Unity.

26

Page 28: Filière 2 : Génie Logiciel et Systèmes Informatiques

2.4 Cas d’étude géologique

2.4.1 Lemptégy

Ce volcan à ciel ouvert correspond à une ancienne carrière qui n’estplus en exploitation. Cela permet de bien distinguer les formes particu-lières de l’intérieur d’un volcan et donc très utile pour l’enseignementet la recherche en volcanologie.

Nous disposons de deux types de modèle :— Le modèle 3D issu des photographies aérienne par drone car

l’équipe drone de l’OPGC, piloté par Édouard Régis, a pu effec-tuer un nombre suffisant de vols et obtenir des photographiesexploitables en photogrammétrie. La précision du modèle obtenuest centimétrique, d’environ 4 cm par pixel, pour une région d’en-viron 1 hectare et demi.

— D’un autre côté, le modèle 2.5D issu du LiDAR est disponibleau CRAIG. Celui-ci correspond à une grille carré de résolution 5mètres par pixel.

2.4.2 Puy-de-Dôme

Le Puy-de-Dôme est le volcan emblématique de la Chaîne des Puysdont la dernière éruption s’est produite il y a environ 8500 ans. Avec leLemptégy, il fait partie du patrimoine mondial de l’UNESCO « Chaînedes Puys Faille de Limage ». C’est également le point culminant de laChaîne des Puy sur lequel se trouve le chalet de observatoire de l’OPGC.

Nous disposons d’un relevé LiDAR téléchargeable sur le site Web duCRAIG, d’une résolution de 0.5 mètre par pixel.

Malgré la proximité de ce volcan, la législation et l’utilisation du sitepar les parapentistes empêche l’équipe drone de l’OPGC d’effectuer desacquisitions.

27

Page 29: Filière 2 : Génie Logiciel et Systèmes Informatiques

2.4.3 Meager

Situé au Canada, le Mont Meager est un volcan actif sur lequel seproduit régulièrement des éboulements représentant un risque naturelpour les équipements et la population locale.

Le modèle, d’une résolution de 2 mètres par pixel, nous a été confiépar Dr. Gioachino Roberti, Section Manager à Minerva Intelligence.Cette société est très intéressée par nos travaux de visualisation desécoulements volcaniques en réalité virtuelle.

28

Page 30: Filière 2 : Génie Logiciel et Systèmes Informatiques

2.5 Modèle topographique

2.5.1 LiDAR et photogrammétrie

Le LiDAR (Light Detection and Ranging) est un appareil qui émet unfaisceau laser depuis un avion ou un drone vers la surface d’un objet.En mesurant le temps que met la lumière pour atteindre l’objet et re-venir à l’émetteur après réfraction, on peut calculer à quelle distance ilse situe.

Figure 6 – Principe du LiDAR

Ainsi, en survolant un site tel que le Puy-de-Dôme et en utilisant cesystème, on peut obtenir une matrice de coordonnées de ce lieu surtrois axes.

On ne parle pas à proprement parler ici de 3D, mais de 2.5D. Eneffet, pour chaque couple de coordonnées sur le plan, on obtient uneseule hauteur. Cela signifie par exemple que si l’on avait affaire à unegrotte, l’unique hauteur gardée serait le haut de la grotte, et le sol se-rait ignoré, caché par le toit.

29

Page 31: Filière 2 : Génie Logiciel et Systèmes Informatiques

Cette précision peut être importante quand on a des morphologiesconcaves. Ce n’est heureusement pas le cas sur le Puy-de-Dôme, donton a tiré les coordonnées avec un système LiDAR, mais il n’en est pasde même pour le volcan de Lemptégy.

C’est pourquoi ce dernier a été traité différemment ; sa représen-tation 3D n’est ainsi pas le fruit du LiDAR avec un avion, mais d’unesuite de photographies prises avec un drone. Au moyen d’un logicielde photogrammétrie* tel que Metashape d’Agisoft, on peut à partird’une multitude d’images créer un terrain 3D. Le logiciel repère surchaque photographie les points clés et les compare à ceux trouvés dansles autres, et peut ainsi appareiller des points caractéristiques d’uneimage à l’autre. Les photographies sont alors orientées et positionnéescorrectement. Ensuite, l’algorithme calcule un nuage de points à partirduquel est construit un maillage dans un format de modèle 3D tel queOBJ*, ainsi que la texture associée.

Les coordonnées obtenues avec le LiDAR sont stockées dans des fi-chiers de type ASC.

Figure 7 – Fichier ASC de coordonnées LiDAR

30

Page 32: Filière 2 : Génie Logiciel et Systèmes Informatiques

Ceux-ci possèdent tout d’abord un en-tête avec les paramètres sui-vants :

— NCOLS : nombre de colonnes de cellules— NROWS : nombre de lignes de cellules— XLLCENTER ou XLLCORNER : coordonnées X de l’origine (centre

ou coin inférieur gauche de la cellule)— YLLCENTER ou YLLCORNER : coordonnées Y de l’origine (centre

ou coin inférieur gauche de la cellule)— CELLSIZE : taille de cellule— NODATA_VALUE (Optionnel) : valeurs en entrée destinées à être

des valeurs NoData dans le raster en sortie. Facultatif. La valeurpar défaut est -9999.

Les troisième et quatrième lignes correspondent à des coordonnéesdu système de coordonnées Lambert 93* ou WGS 84. Ces systèmes decoordonnées permettent de décrire les systèmes géoïdésiques*. Il estainsi une norme très utilisée chez les géologues, et permet de situer lesite concerné sur la planète étudiée.

Concernant les données, le numéro de la ligne correspond à la co-ordonnée x, le numéro de la colonne à la coordonnée z, et la valeurindiquée la hauteur, notée y dans le système de coordonnées de Unity.Le pas en mètres entre deux lignes ou deux colonnes est indiqué par leparamètre "cellsize". Celui-ci est donc également indicateur de la pré-cision du modèle.

Comme dit précédemment, mes camarades avaient importé un mo-dèle photogrammétrique du Lemptégy en format OBJ dans Unity. J’aid’abord fait de même avec le modèle issu du relevé LiDAR Puy-de-Dôme, avant de créer un maillage à partir des fichiers ASC et en lui pla-quant une orthophotographie*, comme nous allons le voir ci-dessous.

31

Page 33: Filière 2 : Génie Logiciel et Systèmes Informatiques

2.5.2 Mesh procédural

Un mesh - ou maillage - représente le squelette d’un objet. Il est dé-fini par des sommets, des arêtes et des triangles. Par la multiplicationde ces éléments, on obtient une représentation de l’objet plus ou moinsprécise et réaliste en 3D.

Figure 8 – Maillage d’un dauphin

À noter que pour obtenir un résultat plus réaliste sans changer lagéométrie du mesh, on peut utiliser une fonction "lissage" - ou "smooth"en Anglais - sur notre objet. Cela consiste à jouer avec la luminosité dela surface pour donner l’illusion que l’objet est lissé, et ce sans mo-difier le mesh, ce qui est une solution très économique en ressourcespour l’ordinateur sur les maillages de grande taille.

32

Page 34: Filière 2 : Génie Logiciel et Systèmes Informatiques

Figure 9 – Lissage d’un maillage

Ainsi, le modèle du Puy-de-Dôme au format OBJ que j’ai importé endébut de stage a subi ce lissage dans un logiciel tiers qu’est Blender -un logiciel libre de création 3D.

Ensuite, il s’agissait de créer un "mesh procédural" à partir d’un fi-chier de coordonnées obtenu par LiDAR dont nous parlions précédem-ment. S’il est procédural, c’est parce qu’il est créé à l’exécution d’Unity,à partir d’un script C#. Ce dernier va s’occuper de parcourir le fichierASC et d’en tirer toutes les informations qui nous intéressent. Il va ainsicréer pour chaque cellule un sommet, auquel on affecte une coordon-née grâce au numéro de la ligne, de la colonne, la valeur indiquée et lepas.

Ces sommets se totalisent au nombre de lignes fois le nombre de co-lonnes. Ils sont ensuite ajoutés dans un tableau qui sert de paramètreau mesh en construction. On ajoute également un tableau six fois plusgrands, qui va contenir les arêtes des triangles, et ce dans un ordrebien défini.Prenons en exemple le rectangle ci-dessous.

33

Page 35: Filière 2 : Génie Logiciel et Systèmes Informatiques

Figure 10 – Attribution des triangles

Chaque trio d’arêtes devra être ajouté dans le sens horaire. Ici nousdevons d’abord ajouter les sommets 0-1-3, puis 3-1-2, afin d’obtenirdeux triangles.

J’ai conçu un algorithme qui décrit un cas plus complexe avec unnombre variable de lignes et de colonnes, et s’adapte ainsi à tous lescas.

Algorithme 1 : Attribution des triangles

pour z de 0 à nombre colonnes pas 1 fairepour x de 0 à nombre lignes pas 1 faire

//Premier triangletriangles[cptTriangles] = cptSommets ;triangles[cptTriangles + 1] = cptSommets + nbLignes ;triangles[cptTriangles + 2] = cptSommets + 1 ;//Deuxième triangletriangles[cptTriangles + 3] = cptSommets + 1 ;triangles[cptTriangles + 4] = cptSommets + nbLignes ;triangles[cptTriangles + 5] = cptSommets+nbLignes+1 ;cptSommets++;cptTriangles += 6 ;

fincptSommets++;

fin

34

Page 36: Filière 2 : Génie Logiciel et Systèmes Informatiques

Voici le mesh de la topographie de volcan construit ; une texture pardéfaut lui est ajoutée, de couleur blanche.

Figure 11 – Puy-de-Dôme avec texture par défaut

Une fois ceci fait, nous pouvons améliorer le rendu en utilisant uneorthophotographie*. Tout comme le fichier de coordonnées LiDAR, onpeut trouver ce dont on a besoin pour le Puy-de-Dôme sur le site duCRAIG (Centre Régional Auvergne-Rhône-Alpes de l’Information Géo-graphique) [3]. Celui-ci comptabilise tous les fichiers ASC LiDAR et or-thophotographies de la Chaîne des Puys.

35

Page 37: Filière 2 : Génie Logiciel et Systèmes Informatiques

Figure 12 – Orthoimage du Puy-de-Dôme

Nous pouvons avec ceci faire une cartographie UV* - ou UV map-ping. Il s’agit d’attribuer à des pixels d’une image ceux de la surfaced’un polygone. L’image est alors appelée "carte de texture UV".

Lorsqu’un modèle est créé en tant que maillage, nous pouvons gé-nérer des coordonnées UV - ou coordonnées de texture - pour chaquesommet. Le maillage peut être déplié et mis automatiquement à plat,en faisant une projection. Une fois le modèle déplié, il peut être peint.

Prenons l’exemple basique qu’est un dé. Celui-ci étant un cube, nouspouvons le déplier et former une croix. En appliquant une texture àcette croix et en l’étirant sur un cube, on obtient bien un dé à six faces.

36

Page 38: Filière 2 : Génie Logiciel et Systèmes Informatiques

Figure 13 – Cartographie UV d’un dé

Le concept est similaire avec un modèle plus complexe comme notrevolcan. Dans Unity, j’ai associé un tableau d’UVs au maillage, d’unetaille égale à notre nombre de sommets. Elles vont constituer les co-ordonnées de texture précédemment citées. Il s’agit alors d’affecter àchaque coordonnée UV une valeur située en 0 et 1, qui correspondra àl’emplacement de l’image qui doit la colorier. Le chiffre 0 correspondainsi au pixel le plus à gauche sur l’axe horizontal, et au plus bas surl’axe vertical - et inversement pour le chiffre 1. Une fois ce processusterminé, l’image 2D est parfaitement étirée sur le maillage 3D.

J’ai développé un algorithme qui permet cet étirement de l’image :

Algorithme 2 : Étirement d’une image sur un modèle 3D

pour i = 0, z de 0 à nbColonnes pas 1 fairepour x de 0 à nbLignes pas 1 faire

//Vector2 tableau de deux flottantsuvs[i] = new Vector2(x / (nbLignes - 1), z / (nbColonnes -1)) ;

i++ ;fin

fin

37

Page 39: Filière 2 : Génie Logiciel et Systèmes Informatiques

Après application d’une orthophotographie sur le le mesh précédem-ment construit, voici ce qu’on obtient pour le modèle du Puy-de-Dôme :

Figure 14 – Application d’une orthophotographie sur le Puy-de-Dôme

Une fois notre modèle obtenu, nous pouvons lui ajouter un compo-sant Unity qui se nomme "collider". Celui-ci gère les collisions à partirdu mesh que l’on lui donne en paramètre.

Ainsi, deux objets qui possèdent un collider et se rencontrent sebloquent l’un l’autre. C’est pourquoi nous avons également sur notrepersonnage un collider, ce qui lui permet de ne pas traverser le volcan,et de marcher dessus.

Afin de simplifier les calculs, le mesh de son collider prend la formede celui d’une capsule. En effet, plus un mesh est complexe, plus lestraitements de la physique sont lourds. Ainsi le mesh d’un collider n’estpas obligé d’être le même que l’objet auquel il est attaché, d’autantqu’il est invisible.

J’ai pu alors joindre mon travail avec celui de mes prédécesseurs, etpermettre la navigation sur le Puy-de-Dôme ainsi généré.

38

Page 40: Filière 2 : Génie Logiciel et Systèmes Informatiques

2.6 Navigation

Il était déjà possible de naviguer sur le modèle du Lemptégy, surécran d’ordinateur ou en réalité virtuelle. Le choix était possible entrela première personne, la troisième personne et la vue aérienne. De plus,si le personnage tombait d’une certaine hauteur, il était téléporté à sonpoint de départ.

J’ai apporté mes propres améliorations à l’existant, dont une grandepartie est réalisable grâce aux données que nous apportent le fichierASC.

Tout d’abord, la hauteur minimum et maximum du volcan sont cal-culées et sauvegardées lors de notre parcours de ce fichier. Ainsi, j’aidécidé que la limite inférieure du sol ne serait plus une valeur arbitrairecodé en dur, mais une valeur un peu en deçà de la hauteur minimum.

Ce cas est d’ailleurs censé arriver très rarement, car j’ai mis enplace des bordures automatiques. Connaissant la largeur et la longueurdu lieu, j’empêche le personnage d’aller plus loin que les coordonnéesles plus hautes et les plus basses. Nous verrons prochainement que j’aimis en place un moyen de créer plusieurs maillages - plusieurs "dalles"- avec différents fichiers ASC. Celles-ci sont placées automatiquementgrâce aux paramètres xllcorner et yllcorner de l’en-tête des ASC. Jecalcule ainsi la bordure sur l’ensemble de ces dalles, en allant collecterdes informations sur chacune d’entre elles.

Bien que le personnage soit bloqué à l’approche de la bordure etqu’on ait l’impression qu’il rencontre une barrière invisible, et doncun objet muni d’un collider (collisionneur entre le personnage et lemaillage), cela fonctionne en réalité avec une simple vérification descoordonnées dans le script de navigation. Ainsi, s’il dépasse une va-leur donnée, l’utilisateur sera ramené automatiquement au maximumde cette valeur (ou au minimum pour les limites inférieures). Cela estainsi bien plus léger en ressources nécessaires.

39

Page 41: Filière 2 : Génie Logiciel et Systèmes Informatiques

Cette restriction n’est effective que pour la navigation terrestre. Eneffet, il semblait judicieux de pouvoir naviguer autour du site commebon nous semble en vue aérienne.

Lorsque l’utilisateur passe de la vue aérienne à la vue terrestre, lepersonnage tombait jusqu’à atteindre le sol. Ayant en tête l’intégrationde la réalité virtuelle, j’ai décidé de supprimer cette limitation. En effet,cela produit un effet de vertige désagréable. J’ai donc fait en sorte detéléporter directement le personnage jusqu’à la position terrestre où ilest censé tomber. Là encore j’aurais pu chercher les coordonnées dupoint à atteindre au prix d’un calcul coûteux, mais j’ai usé d’un strata-gème plus simple. Unity utilise une fonction "Update" qui est appeléeà chaque rafraîchissement d’image. Dans cette dernière, j’applique aupoids du personnage une valeur infinie le temps d’une image, ce quilui donne l’illusion d’être téléporté automatiquement du ciel à la terreentre deux rafraîchissements.

De plus, lors de la construction de notre scène dans Unity, il n’est pasévident de placer le personnage au bon endroit pour qu’il ne tombe pas.Non seulement cela est pénible car il faut attendre que le personnageatteigne le sol avant de pouvoir se déplacer, mais c’est également tou-jours vertigineux en réalité virtuelle. J’ai alors utilisé la même astuce :je place le personnage à une hauteur supérieure à celle maximale duvolcan, et j’applique un poids infini lors du tout premier rafraîchisse-ment d’image.

Ainsi la construction d’un maillage avec un fichier ASC nous permetd’améliorer la navigation, mais elle va surtout prendre tout son inté-rêt en permettant d’afficher des simulations de coulées volcaniques,comme nous allons le voir ci-dessous.

40

Page 42: Filière 2 : Génie Logiciel et Systèmes Informatiques

2.7 Simulations

2.7.1 Simulations précalculées

Pour commencer, je crée un second mesh avec un fichier ASC commeprécédemment. Je lui affecte une texture qui le rend transparent pardéfaut.

Ensuite, j’utilise VolcFlow-C pour calculer une simulation monosource.Je dipose d’un exécutable que je peux lancer depuis un terminal Win-dows comme ceci :

./volcflow_c_vr.exe param.in 80 30 10

Nous avons dans l’ordre :— l’appel de l’exécutable— le fichier de paramètres param.in, qui contient les divers para-

mètres physiques de l’écoulement— les deux coordonnées de la source et son rayon en mètres

J’obtiens alors un dossier qui contient les images de chaque itéra-tion de la simulation. Je ne m’en sers pas dans Unity, mais elles sontutiles pour savoir à quoi ressemble notre simulation et si elle a bienfonctionné avant de commencer à la traiter.

Figure 15 – Images 2D issues de VolcFlow

Également pour chaque itération, j’obtiens un fichier binaire de nombresqui représentent la hauteur de l’écoulement. Je lis alors chacun de ces

41

Page 43: Filière 2 : Génie Logiciel et Systèmes Informatiques

fichiers à intervalle de temps donné. Comme pour le fichier ASC, le nu-méro de la ligne et de la colonne correspondent aux coordonnées (x,z).Si la hauteur est égale à 0, alors il n’y a pas de coulée à cet endroit etle mesh reste invisible. Au contraire, si elle est strictement positive, jecolorie cette partie du mesh.

Afin de déterminer la couleur utilisée, j’utilise une "colormap", quiest un tableau de 64 couleurs. Pour une hauteur de 7.2 mètres parexemple, j’utilise la septième couleur du tableau. Les valeurs négativesn’existent pas et ne seraient pas prises en compte le cas échéant. J’af-fecte également à toute valeur dépassant la borne supérieure la valeurde cette borne.

Il s’agit d’une représentation par pseudo-couleurs, chacune d’entreelles représentant une valeur de hauteur, indépendamment de la tex-ture réelle.

La valeur maximale d’une coulée peut être assez faible. En exemplesur le Puy-de-Dôme, celle-ci est de l’ordre de la dizaine de mètres.Sur une échelle allant de 1 à 63 mètres, les couleurs affectées sontalors toujours très proches, et nous ne distinguons guère d’informa-tions au milieu de tout cela. J’ai donc ajouté un coefficient multipli-cateur qui permet d’élargir cet intervalle. Par exemple, en ayant unehauteur maximale de 10 et en multipliant par 6 les valeurs, une soixan-taine de couleurs serait affectée, contre une dizaine précédemment ; ladynamique des couleurs s’en trouve améliorée. L’image qui suit illustrecet exemple.

Figure 16 – Simulation avant et après coefficient

42

Page 44: Filière 2 : Génie Logiciel et Systèmes Informatiques

Si nous pouvons distinguer la hauteur des écoulements avec cet ou-til, des améliorations sont possibles. À ce stade, les mesh de la simula-tion et du volcan sont les mêmes, la coulée étant légèrement surélevéepour qu’on puisse la visualiser. La couleur est ainsi comme plaquéeau sol. Ainsi, à chaque itération, je modifie le maillage de la simula-tion en ajoutant aux sommets concernés la hauteur de la coulée lue.Nous avons alors une représentation volumique 3D de l’écoulement.J’ai laissé le choix à l’utilisateur d’enlever ou rajouter cette épaisseuraprès pression d’une touche.

Figure 17 – Simulation sans et avec épaisseur

L’utilisateur a également d’autres possibilités. Il peut mettre en pauseet relancer la simulation à sa guise. Il peut décider de marcher sur lalave, ou directement sur la topographie. Il détermine également l’échellede couleurs à utiliser pour la représentation par pseudo-couleurs, oupeut la remplacer par une texture réaliste.

Pour obtenir cette dernière, j’ai utilisé une texture dite procédu-rale. Une telle texture résulte d’un algorithme plutôt que de donnéesstockées. Cette approche a l’avantage d’imposer un faible coût de sto-ckage, de permettre une résolution illimitée et de mapper facilement latexture. Elles sont souvent utilisées pour modéliser des surfaces d’élé-ments naturels, tels que le bois ou le métal. Les algorithmes utilisentgénéralement des bruits et fonctions fractales pour représenter le ca-ractère aléatoire de la nature et donner un aspect plus authentique.

43

Page 45: Filière 2 : Génie Logiciel et Systèmes Informatiques

Le plugin* qui permet cela dans Unity est Substance de la sociétéAllegorithmic - qui se trouve être une entreprise locale fondée par unancien étudiant de l’Université d’Auvergne, et racheté récemment parAdobe. Substance était d’abord nativement dans Unity, et est désormaisimportable depuis l’Asset Store [2]. L’entreprise possède également uneplateforme [13] qui permet de partager les créations des utilisateurs,et sur laquelle j’ai trouvé une texture procédurale de lave.

Nous avons donc actuellement trois possibilités. Une représentationpar pseudo-couleurs avec des couleurs allant du bleu au rouge ("blue"),une autre avec des couleurs chaudes (hot), et une dernière avec unetexture procédurale réaliste.

Figure 18 – Pseudo-couleurs blue, hot, et texture réaliste

Si j’ai commencé par faire des simulations précalculées avec uneseule source, j’ai ajouté la possibilité d’en ajouter plusieurs afin d’im-plémenter les simulations en temps réel. Ainsi, je n’utilise plus un maisdeux exécutables. Le premier permet de lancer la simulation (sans pre-mière source). Le second permet d’ajouter des sources à la volée. Nouspouvons également les appeler dans des terminaux Windows :

./volcflow_c_vr.exe param.in

./volcflow_add_source.exe param.matsource 80 30 10

./volcflow_add_source.exe param.matsource 50 60 8

Dans le cas ci-dessus, je lance la simulation, j’ajoute une premièresource de coordonnées (80, 30) et de rayon 10 mètres, puis une se-conde de coordonnées (50, 60) et de rayon 8 mètres. La source n’est

44

Page 46: Filière 2 : Génie Logiciel et Systèmes Informatiques

donc prise en compte par la simulation qu’au moment où l’exécution devolcflow_add_source.exe a eu lieu.

Le fichier param.in contient toujours les divers paramètres physiquesde l’écoulement. L’autre fichier param.matsource contient quant à luiune matrice qui indique pour chaque coordonnée la présence ou nond’une source.

Cette possibilité d’ajouter des sources à la volée va être d’une grandeutilité pour les simulations en temps réel.

2.7.2 Simulations temps réel

Le premier cas possible est de remplir à l’avance les paramètresconcernant les sources. J’ai implémenté plusieurs tableaux dans Unitypour les décrire. Il s’agit de tableaux :

— de coordonnées x— de coordonnées z— de rayons— de moments d’apparition

Chacun est de taille équivalente, égale au nombre de sources. L’in-dice d’une source correspond au même indice dans ces quatre tableaux.Lors du calcul de la simulation, la source est ajoutée à la volée aux co-ordonnées et moment indiqués, avec le rayon spécifié.

L’intérêt s’accroît encore en permettant d’ajouter des sources à lavolée au cours de l’exécution d’Unity, à partir d’une position détermi-née par l’utilisateur.

En premier lieu, j’ai conçu un script qui permet de lancer une si-mulation depuis la position du personnage. En cliquant sur le boutonaffecté au lancement de simulation, l’exécutable de VolcFlow-C est dé-marré, suivi de celui ajoutant à la volée la position susdite. À chaquenouveau clic, une source est ajoutée.

Plus utile encore, l’utilisateur peut choisir la position de la nouvellesource avec le curseur de la souris. À l’aide de la molette, il peut chan-ger le rayon qu’elle aura. En outre, le curseur de la souris est modifiéet s’entoure de feu lorsqu’il survole une zone où une simulation peut

45

Page 47: Filière 2 : Génie Logiciel et Systèmes Informatiques

être lancée. J’ai trouvé cela pertinent d’autant que ces zones ne corres-pondent pas forcément à l’ensemble du terrain représenté.

Dans ces trois cas, Unity va lancer un processus PowerShell en pa-rallèle de son exécution. Celui-ci étant un invite de commandes, il peutlancer l’exécutable de VolcFlow-C, avec les paramètres provenant deUnity. Il s’agit des informations sur les sources dont nous avons déjàparlé (positions et rayons), mais également :

— du nombre de lignes et colonnes— du pas— du nombre d’itérations— du temps réel entre deux itérations— du moment où la source cesse d’émettre— d’un coefficient multiplicateur de la source d’entrée— du fichier ASC (VolcFlow-C s’en sert en effet pour ses calculs

grâce à la connaissance de la géomorphologie du volcan)— du répertoire où stocker la simulation

Un PowerShell est également lancé à l’ajout d’une source à la volée.Lorsque que l’exécution d’Unity se termine, les processus sont clos.

Une simulation est un processus coûteux, et il est essentiel qu’ellesoit légère au possible, en particulier dans le cas des simulations entemps réel. Nous allons ainsi voir les stratégies d’optimisation que j’aimises en place.

46

Page 48: Filière 2 : Génie Logiciel et Systèmes Informatiques

2.8 Optimisation

Dès acquisition du projet 3DTeLC-Clermont, j’ai cherché les optimi-sations qui pouvaient être effectuées. Le projet ayant été refusé surla plateforme Oculus à cause d’une taille trop élevée, le gain de sto-ckage fait ainsi partie de mes préoccupations. Il m’était ainsi naturelde découvrir le contenu du projet tout en me questionnant sur son ex-ploitation ou ses améliorations possibles.

J’ai par exemple remarqué que les fichiers gérant le ciel pesaientplus de 350 mo inutilement, nous l’avons ainsi allégé à 17 mo.

De même, j’ai préconisé l’utilisation du format OGG pour les fichierssons à la place du WAV. Non seulement la différence est quasimentimperceptible, mais il n’est en plus pas nécessaire d’utiliser une trèshaute qualité audio pour des sons naturels. Cela réduit également notrestockage par 20. L’utilisation de fichiers audio allégés est aussi moinsgourmande en ressources, ce qui est gagnant sur deux fronts.

J’ai également conçu des scripts, d’abord C++ puis C#, pour allé-ger les fichiers ASC. En effet, ceux-ci contiennent des nombres flottantsavec en moyenne une douzaine de chiffres derrière la virgule. En negardant qu’une précision au centième, ce qui est largement suffisantd’un point de vue physique, la taille est réduite par 2.5 environ.

Le développeur peut également alléger les fichiers ASC en réduisantla précision du maillage. En exemple pour le Puy-de-Dôme, la précisiondu LiDAR est initialement de 50cm, mais nous estimons qu’une pré-cision de 2m est suffisante. Mon script permet dans ce cas-là de neprendre qu’une valeur sur quatre pour chaque ligne et colonne. L’al-légement peut également être ajusté autrement. En divisant par 4 laprécision du pas, la taille est donc divisée par 16. En utilisant ces deuxfaçons d’alléger les fichiers ASC, on passe par exemple de 75 à 4 mopour le cas du Puy-de-Dôme. En divisant par 4 le pas du Meager, onpasse de 233 à 6 mo, ce qui devient acceptable pour les traitements.

S’il permet un gain de place, ce deuxième script est surtout utile àl’accélération des calculs. En effet, effectuer une simulation est parti-culièrement gourmand en ressources. Il faut donc garder un maillage

47

Page 49: Filière 2 : Génie Logiciel et Systèmes Informatiques

adapté pour obtenir un temps de calcul raisonnable, tout en conservantune simulation réaliste. Les calculs de simulation sont pour l’instanttrop longs pour permettre d’avoir 30 images par seconde et une visua-lisation en temps réel pour l’œil humain.

Pour accélérer la simulation dans Unity, j’ai pris soin d’écrire mapropre fonction de lecture de fichiers binaires, plutôt que d’utiliser cellenative au langage C#. Rappelons que c’est en lisant ces derniers quel’on peut changer la couleur du maillage et ainsi afficher l’écoulement.Volcflow-C produisait à la base des fichiers binaires de flottants. J’aiainsi demandé à mon tuteur de le modifier pour obtenir à la place desentiers non signés. Ceux-ci sont représentés sur 16 et non 32 bits, cequi divise par deux la taille des fichiers. Mais cela m’est surtout indis-pensable pour pouvoir utiliser ma nouvelle fonction de lecture optimi-sée pour Unity. J’ai ainsi effectué plusieurs comparatifs pour vérifier lapertinence d’une telle mise en place, et en suis arrivé à la conclusionque les calculs sont accélérés par 8 environ.

La bibliothèque MPI permet un partitionnement des calculs sur plu-sieurs processus. Il est possible de partitionner le tableau initial dela topographie en plusieurs tableaux afin d’améliorer l’exécution dechaque processus MPI. Cette fonctionnalité n’est pas encore implémen-tée, cependant, j’ai développé le partitionnement nécessaire à la priseen compte de plusieurs dalles dans Unity pour permettre sa future in-tégration.

48

Page 50: Filière 2 : Génie Logiciel et Systèmes Informatiques

2.9 Outils géologiques

2.9.1 Boussole

Selon les conventions des géologues, la représentation en 3D doitêtre bien particulière. Il est par exemple d’usage que le Soleil se situeau nord-ouest. Se trouvant par défaut à l’est, je lui ai donc fait faireune rotation. Les points cardinaux sont aussi spécifiques. Ainsi, plus lacoordonnée x est faible, plus on se dirige vers le nord. Plus la coordon-née z est élevée, plus en se dirige vers l’est. Rappelons également quela coordonnée y correspond dans Unity à la hauteur. Voici comment lereprésenter plus facilement :

Figure 19 – Points cardinaux dans Unity

Pour que l’utilisateur se repère plus facilement sur le site géologiquequ’il explore, j’ai créé une boussole qui indique les quatre points cardi-naux et quatre valeurs intermédiaires. Je l’ai conçue moi-même sur lelogiciel Inkscape, afin d’échapper à des problèmes de droits. L’orienta-tion du personnage est vérifiée systématiquement pour ajuster la bous-sole et indiquer la direction.

Figure 20 – Boussole

49

Page 51: Filière 2 : Génie Logiciel et Systèmes Informatiques

2.9.2 Carte miniature

J’ai ajouté une carte miniature - ou minimap - pour que l’on puissedistinguer l’ensemble du modèle. Celle-ci est adaptée automatiquementen connaissant les longueur et largeur du modèle, une fois de plus grâceaux données du fichier ASC. En donnant une longueur maximale à lacarte, je calcule ainsi sa longueur, et l’endroit où elle doit s’affichersur l’écran. Pour obtenir le contenu de cette minimap, j’utilise une ca-méra que je place également automatiquement pour pouvoir "filmer"l’entièreté du site. La perspective est supprimée, il est alors questionde projection orthogonale. À noter qu’il ne s’agit pas d’une image sta-tique mais bien dynamique, et que l’utilisateur peut visualiser l’évolu-tion de l’écoulement volcanique évoluer l’ensemble du site. J’ai égale-ment ajouté une flèche qui suit le joueur, ce qui permet de connaître saposition et son orientation.

Figure 21 – Cartes miniatures des trois cas d’étude

2.9.3 GPS

Afin que l’utilisateur puisse se situer au niveau de la planète, les co-ordonnées GPS sont affichées, ainsi que la hauteur à laquelle il se situe.

En effet, le fichier ASC contient deux paramètres, xllcorner et yll-corner. Elles correspondent dans notre cas aux coordonnées Lambert93 du modèle, et plus précisément du coin inférieur gauche de celui-ci.On peut ainsi déduire les coordonnées en Lambert 93 du personnage.

J’ai développé un script C permettant de convertir les coordonnéesLambert 93 en GPS, à partir d’un algorithme en Javascript [5] que j’ai

50

Page 52: Filière 2 : Génie Logiciel et Systèmes Informatiques

traduit en C#. En effet, le système de coordonnées GPS est plus connudu grand public.

2.9.4 Échelle de couleurs

Comme indiqué précédemment, nous pouvons représenter l’écoule-ment avec des pseudo-couleurs. Il existe actuellement deux tableauxde couleurs, que l’on peut choisir avant l’exécution. On peut égalementbasculer entre la pseudo-couleur choisie et la texture réaliste à l’exécu-tion.

J’ai également mis en place un coefficient multiplicateur pour élar-gir la bande de couleurs utilisées lorsque la hauteur n’est pas suffisante.

Une échelle de couleurs est affichée parmi les autres outils géolo-giques, et qui s’adapte selon le coefficient et la colormap utilisés. J’aiégalement conçu les images sur Inkscape.

Figure 22 – Échelles de couleurs

51

Page 53: Filière 2 : Génie Logiciel et Systèmes Informatiques

2.10 Développement de la Réalité virtuelle

2.10.1 Matériel utilisé

J’ai utilisé deux casques de réalité virtuelle à tour de rôle. D’abordl’Oculus Rift, puis l’Oculus Rift S, qui est la version la plus récente.

Concernant le premier, le matériel total comprend :— le casque de réalité virtuelle, que l’on branche sur l’ordinateur ;

il n’est donc pas autonome— deux capteurs, qui doivent se situer à au moins un mètre de dis-

tance— deux manettes avec des boutons, qui détecte également la posi-

tion des doigts

Figure 23 – Oculus Rift

À la différence de son prédécesseur, l’Oculus Rift S a ses capteursdirectement intégrés sur le casque, ce qui simplifie son emploi. Il peutégalement indiquer le niveau du sol en le touchant tout simplementavec la manette, alors qu’il n’était possible que qu’indiquer la taille dela personne précédemment.

L’utilisateur doit s’assurer une zone de sécurité d’au moins un mètrecarré. Il la trace avec une manette. S’il s’en approche dangereusementen jeu, une bordure lui est affichée sous la forme d’une grille.

52

Page 54: Filière 2 : Génie Logiciel et Systèmes Informatiques

L’OPGC dispose également d’un Oculus GO, qui est lui un casqueautonome. Le temps m’a hélas manqué pour l’utiliser.

2.10.2 Intégration dans Unity

Pour intégrer la réalité virtuelle à mon projet, j’ai utilisé un plugindisponible sur l’Asset Store : l’Oculus Integration [1] - ou OVR.

Cela nous prodigue plusieurs prefabs* et scripts utiles à l’utilisationdu matériel. À mon objet personnage, j’ai ainsi inclus un prefab quipermet de le suivre en réalité virtuelle. J’ai également fait en sorte d’af-ficher les mains et les manettes.

Ma philosophie a été de faire en sorte que le logiciel soit utilisableen réalité virtuelle ou non, c’est-à-dire avec un écran d’ordinateur, sansavoir à changer de version. Je me suis en effet rendu compte que le logi-ciel 3DTeLC ne fonctionnait pas sans casque, ce qui est dommageable.Ainsi des vérifications sont faites dans le code pour savoir si le casqueest branché, et il s’en suit un nombre conséquent d’automatisations.Cela permet par exemple de savoir s’il faut afficher ou non les mains,et plus généralement si le prefab gérant la réalité virtuelle doit être ac-tif.

Également, les outils géologiques dont j’ai précédemment parlé nepeuvent pas être affichés en réalité virtuelle comme sur un écran. Ainsi,j’ai conçu une version particulière, non seulement pour qu’ils puissentfonctionner, mais aussi pour que leur affichage soit adapté à la VR. J’aidonc réalisé deux prefabs, un d’outils pour la version ordinateur, et unautre pour la version réalité virtuelle. Selon si le casque est branché, lebon prefab est instancié. L’affichage des outils suit le regard de l’utili-sateur et se place au centre de son champ de vision.

53

Page 55: Filière 2 : Génie Logiciel et Systèmes Informatiques

Figure 24 – Outils en réalité virtuelle

Également pour faciliter le multiplateforme, les touches à actionnerne sont pas codées en dur et on utilise à la place des termes explicites.Ainsi il est écrit dans le code qu’on sautera lors de l’appuie de la touche"Jump", et non "espace". On peut alors affecter dans l’éditeur d’Unityque la touche espace sur le clavier et la gâchette de la manette Oculuscorrespondent à "Jump". Un fichier InputManager permet de sauvegar-der les contrôles et les partager d’un projet à l’autre.

En testant d’autres applications en VR pour étudier la faisabilité, j’aiconstaté l’importance du son pour gagner en immersivité.

J’ai ainsi ajouté des sons d’oiseaux et de vent pour l’ambiance, ainsique des bruits de pas. Ces derniers comportent deux sons, un pour lajambe faible et l’autre pour la jambe forte, de niveau sonore plus élevé.J’ai également écrit un script pour suivre le front de l’écoulement, et yattribuer une source sonore en 3D de lave. Ainsi, si la coulée se rue surnous pour ensuite s’éloigner, nous aurons un crescendo et decrescendo,tel un effet doppler, qui rend cette présence plus réelle.

J’ai également travaillé sur la téléportation, car il peut être rela-tivement vertigineux de faire déplacer son personnage en réalité vir-

54

Page 56: Filière 2 : Génie Logiciel et Systèmes Informatiques

tuelle. L’effet est toutefois moins important lors de la vue à la troisièmepersonne. Je n’ai malheureusement pas eu l’oppportunité de terminerce développement car il est complexe d’allier le déplacement sur or-dinateur et la téléportation en VR. J’ai tout de même créé des scènespermettant la téléportation avec les manettes, en pointant la situationdésirée avec un laser courbé, mais ne l’ai pas intégré à l’ensemble duprojet.

Pour éviter cet effet vertigineux, j’ai également fait des choix deconception décrits plus tôt comme le fait de ne plus pouvoir tomber.C’est ainsi que j’ai mis en place les limites du terrain, la téléportationdu personnage sur le sol quand il cesse de voler, ou cette même télé-portation au début de l’exécution pour qu’il soit bien placé dès le com-mencement et non en vol involontaire.

En plus de permettre cette visualisation d’écoulement volcanique enréalité virtuelle et d’outils géologiques, j’ai également implémenté desoutils développeur.

2.11 Outils développeur

Chaque cas d’étude est contenu dans ce qu’on appelle une scène, quipourrait être apparentée à un niveau dans le milieu vidéoludique. J’aiainsi permis de pouvoir passer d’une scène à l’autre, du Puy-de-Dômeau Meager, du Meager au Lemptégy et du Lemptégy au Puy-de-Dôme.La sélection de scènes a vocation à être plus générique dans le futur.

D’un autre côté, le développeur peut créer plusieurs dalles de ma-nière générique. Dans le cas du Puy-de-Dôme, le fichier ASC utilisé re-présente 1500m x 1500m. Le développeur peut également utiliser 9fichiers pour représenter la même surface, de 250m x 250m, et ce enrépétant l’opération de création d’un maillage 9 fois. Comme la manipu-lation était laborieuse, j’ai créé un générateur de dalles, qui comprendun tableau de tous les fichier ASC utilisés ainsi que toutes les ortho-photographies. Leur position est ajustée automatiquement grâce auxcoordonnées Lambert 93 connues et leur surface.

Si l’on décompose le modèle en dalles, c’est pour permettre d’ef-

55

Page 57: Filière 2 : Génie Logiciel et Systèmes Informatiques

fectuer une simulation sur chaque partie, et ainsi alléger fortement letemps de calcul. Cela a été mis en place pour permettre de faire dessimulations en temps réel. En plus de cela, l’objectif était de préparerl’utilisation d’un MPI pour s’approcher un peu plus d’une exécution ducalcul en temps réel. En effet, cela signifie que les calculs pour chaquedalle pourront être divisés sur plusieurs ordinateurs distants.

Nous pouvons ainsi permuter à l’exécution trois modèles pour le casd’étude du Puy-de-Dôme :

— une dalle générée— plusieurs dalles générées— modèle au format OBJ

J’ai écrit plusieurs scripts pour manipuler les fichiers. D’abord pourconvertir des fichiers binaires de flottants en entiers non signés - ce quim’était utile lorsque VolcFlow ne générait que ces premiers. Ensuite,pour alléger les fichiers ASC, je supprime les décimales inutiles et ré-duis la précision du maillage.

J’ai également mis en place la création de modèle dans Unity enpassant en paramètre l’URL du fichier ASC situé sur le Web - et plusprécisément dans mon cas sur le site du CRAIG. À l’exécution d’Unity,ce fichier est téléchargé, puis le maillage et la simulation temps réelsont construits à partir de lui. Il est également possible de réduire laprécision du modèle téléchargé.

Enfin, pour le cas plus particulier du Puy-de-Dôme, j’ai ajouté l’an-tenne emblématique du lieu et le chalet de l’OPGC. J’ai conçu l’antenneavec des cylindres sous Unity, alors que le modèle du chalet est issu dela photogrammétrie.

56

Page 58: Filière 2 : Génie Logiciel et Systèmes Informatiques

Figure 25 – Antenne du Puy-de-Dôme et chalet de l’OPGC

Pour que ces deux éléments soient pris en compte dans la simula-tion, j’ai créé un script qui permet de modifier le fichier ASC en ajoutantà certains points une hauteur. J’ai ainsi modelé le maillage en mettantune forme de parallélépipède rectangulaire pour le chalet et un cylin-drique pour la base de l’antenne. Il est à rappeler que le mesh n’est pasforcément très précis - précision de deux mètres dans mon cas d’utili-sation -, mais nous observons tout de même des résultats intéressants.

Figure 26 – Simulation près du chalet

57

Page 59: Filière 2 : Génie Logiciel et Systèmes Informatiques

2.12 Tests et validation

J’ai mis en œuvre différents types de tests dans le but d’identifierles comportements problématiques de l’application, de les corriger etd’améliorer la qualité :

— Test unitaire : ces tests sont documentés dans l’annexe F

— Test d’intégration : nous vérifions le bon fonctionnement d’unepartie précise ou un module de l’application, tels que la lecture etla visualisation des différents modèles de topographie, la naviga-tion, l’intégration de la simulation et la boîte à outils de géologie.

— Test système (validation globale) : les tests système prennentcomme entrée tous les composants logiciels intégrés précédem-ment mais aussi le système logiciel dans son ensemble dans lessystèmes matériels compatibles (Windows, Station de travail, CasqueOculus, Web...). Nous testons ici le déploiement sur les systèmescibles. En pratique, je mets à jour les systèmes conçus sur laforge de Clermont université : Version « Simulation temps réel »,version « Simulation précalculées » et version « Simulation pré-calculées sur le Web ».

Le test d’acceptation n’a pas pu être réalisé par la maîtrise d’ou-vrage, les enseignants et les chercheurs.

Toutefois le logiciel a été présenté au grand public, afin de lui per-mettre une valorisation.

2.13 Valorisation

2.13.1 Diffusion

Il existe tout d’abord une version WebGL [15] que chacun peut fairefonctionner sur son navigateur. Pour l’instant, seul le modèle du Puy-de-Dôme est disponible, sans réalité virtuelle, avec une simulation précal-culée. Ceci avait juste une valeur de communication, et je n’avais paspour tâche de l’explorer en profondeur. En effet sa mise en place a étédifficile, car l’exportation en WebGL impose beaucoup de restrictions,

58

Page 60: Filière 2 : Génie Logiciel et Systèmes Informatiques

principalement sur la lecture des fichiers. Ainsi, la création de meshprocédural et la lecture de fichiers à la volée pour la simulation poseproblème car le système de fichiers d’un serveur Web n’est pas per-missif. Plus que cela, la texture procédurale réaliste subit égalementdes problèmes. Pour y pallier, j’ai créé en un générateur de scripts C#où sont codées en dur les coordonnées du maillage et les hauteurs del’écoulement.

Il existe sur la forge trois sous-projets [?] :— le premier contient tout le projet (simulations temps réel + pré-

calculées), mais est pour l’instant privé, car VolcFlow n’a pas en-core été publié

— le deuxième permet de recréer des simulations précalculées enVR

— le troisième permet de recréer la version WebGL

Concernant les deux versions publiques, l’utilisateur peut téléchar-ger les scripts et les ressources nécessaires pour reconstruire le projet.J’ai rédigé un wiki sur la forge pour guider les utilisateurs. En effet, lareproductibilité est précieuse dans le domaine de la recherche.

Afin de faciliter cela, j’ai constitué de multiples automatisations dansUnity pour que l’utilisateur ait le moins de travail à effectuer, et qu’ilpuisse prendre en main le logiciel plus facilement.

Par exemple, certains composants Unity sont indispensables pourles applications ; leur existence est vérifiée et ils sont ajoutés le caséchéant. J’ai également créé des prefabs - des modèles - automatique-ment chargés et générés. Concernant les outils géologiques, le prefabadapté est chargé suivant si la visualisation est effectuée en réalité vir-tuelle ou non, s’il n’est pas déjà présent. S’en suit le calcul automatiquedes coordonnées GPS, de la taille de la carte miniature et de sa posi-tion, des valeurs de l’échelle de couleurs... La bordure est égalementcalculée, ainsi que la juste position des dalles.

Pour que mon code soit réutilisable, je l’ai rédigé et commenté enAnglais. J’ai pris soin de partager mon code en diverses méthodes, enrespectant les bonnes pratiques de la programmation orientée objet,structurant mes classes pour éviter la duplication par exemple.

59

Page 61: Filière 2 : Génie Logiciel et Systèmes Informatiques

Il était également prévu une publication dans les archives ouvertesHAL, mais cela n’a pas pu se faire avant la fin de mon stage. Publier sontravail est en effet la meilleure façon de pérenniser son travail dans lacommunauté scientifique.

Enfin j’ai pu défendre le projet lors de l’école 3DTelC, dont nousallons parler plus bas.

2.13.2 École 3DTeLC

Cette école devait initialement se tenir début avril à Clermont-Ferrand,avant d’être reportée pour cause de crise sanitaire. Elle fut ainsi vir-tuelle, et eu lieu pendant la semaine du 20 juillet 2020.

Elle a regroupé des chercheurs, ingénieurs et élèves de différentesnationalités, principalement du Royaume-Uni, de France, d’Italie et deGrèce. Les professionnels ont ainsi fait des séminaires en ligne via CiscoWebex pour expliquer leurs travaux, tous liés à la géologie et à la réa-lité virtuelle. Les chercheurs utilisent le logiciel 3DTelC pour leurs re-cherches. Le but principal était de montrer les perspectives qu’offre laréalité virtuelle dans ce domaine.

J’ai pour ma part fait partie à la fois des animateurs et du grouped’étudiants côté France. J’ai ainsi présenté en Anglais les résultats demon travail, en essayant de rester pédagogue pour que les non dévelop-peurs suivent. Mon passage se trouve d’ailleurs sur la chaîne YouTubede 3DTelC [11]. J’ai également aidé mes collègues de l’OPGC lorsqueceux-ci ont fait une présentation en drone puis en réalité virtuelle duvolcan de Lemptégy en simultané.

Les groupes d’étudiants avaient également des travaux de recherchesà effectuer en collaboration sur certains sites présentés. Bien qu’il s’agis-sait pour la plupart de géologues, j’ai apporté mon aide avec mon re-gard d’informaticien.

60

Page 62: Filière 2 : Génie Logiciel et Systèmes Informatiques

3 Bilan du projet

3.1 Problèmes rencontrés

La crise sanitaire a causé une situation exceptionnelle qui m’a im-posé de travailler depuis mon domicile. Toutefois, nous avons trouvéun rythme de travail très satisfaisant avec mon tuteur, et celle-ci nousa peu affectés, bien qu’il ne fut pas toujours évident de communiquersans se voir sur Discord. Heureusement j’avais fait depuis peu l’acqui-sition d’un ordinateur personnel performant, qui m’a été indispensablejusqu’à ce que je puisse profiter de la plateforme de travail fournie parl’OPGC courant juin. Je n’ai donc pas pu tester la réalité virtuelle avantcette période, mais cela n’a pas été dérangeant car j’avais d’autrestâches ne nécessitant pas ce type de matériel. Si le télétravail n’a pasété dérangeant, voire même plutôt efficace en terme de productivité, jeregrette toutefois de ne pas avoir pu fréquenter le personnel de l’OPGCplus amplement.

Nous avons eu un problème informatique qui nous a empêché l’uti-lisation de Discord quand mon tuteur était à l’OPGC; nous avons palliéle problème en le remplaçant par Microsoft Teams qui traverse le proxymis en place à l’OPGC.

Autre problème technique : mon antivirus supprimait l’exécutablede VolcFlow sans prévenir, considérant que c’était une menace. Unefois m’en être rendu compte, j’ai dû récupérer l’exécutable et l’empê-cher d’être supprimé en ajoutant des autorisations.

Concernant le projet, certaines tâches furent particulièrement com-plexes. Ce fut en premier lieu l’exportation en WebGL, qui imposaitbeaucoup de contraintes et m’a obligé à faire une version particulièreet pour l’instant peu maintenable. Ce fut également la téléportation enVR, que je n’ai pas réussi à intégrer complètement. De plus j’ai trouvéque le plugin Oculus était assez compliqué d’utilisation et manquait declarté.

J’ai constaté que la fonctionnalité de marcher sur la lave amène l’or-dinateur à ralentir considérablement si le maillage est trop complexe.C’est d’autant plus dommageable en réalité virtuelle, car cela donne le

61

Page 63: Filière 2 : Génie Logiciel et Systèmes Informatiques

vertige. J’ai donc fait en sorte que l’utilisateur puisse activer cette fonc-tionnalité ou non.

Enfin, certains problèmes ne sont pas réglés. L’épaisseur de l’écou-lement est enlevée uniquement lorsque la simulation est en pause outerminée. Également, si le répertoire où se situent les fichiers possèdeun espace dans son chemin, une erreur est générée. Il ne s’agit pas for-cément de complications insurmontables, mais je n’ai pas eu l’occasionde m’y attarder.

Ainsi les résultats sont nombreux, tout comme le sont les possiblesaméliorations.

3.2 Résultats et perspectives

Nous disposons de trois cas d’étude : le Puy-de-Dôme, le volcan deLemptégy et le Mont Meager. Nous pouvons passer de l’un à l’autre.

Plusieurs modèles sont disponibles. L’utilisateur peut ainsi importerun volcan au format OBJ, ou bien générer des mesh procéduraux grâceà un ou des fichiers ASC. Un outil permet de générer plusieurs dallesplus facilement. L’utilisateur peut permuter ces trois modèles lors del’exécution, en choisissant lequel est actif.

Nous pouvons effectuer des simulations en temps réel. Soit les sourcessont préremplies avec leurs coordonnées, rayon et moment d’appari-tion, soit elles sont ajoutées à la volée. Dans ce cas, la position dupersonnage ou du curseur de la souris peuvent déterminer la posi-tion de la nouvelle source, et la molette de souris permet d’ajuster sonrayon. Il est également possible de lancer des simulations précalculées,que nous avons obtenues soit depuis un terminal Windows, soit depuisune simulation en temps réel que nous avons sauvegardée. Par défaut,l’écoulement est représenté par des pseudo-couleurs. Nous pouvons dé-terminer quelle colormap utiliser, puis à l’exécution si nous voulons laremplacer par une texture procédurale réaliste.

La navigation est possible de trois manières : vue subjective, vueobjective et vue aérienne. Le modèle est délimité par des bordures au-

62

Page 64: Filière 2 : Génie Logiciel et Systèmes Informatiques

tomatiquement, et empêche le personnage de les traverser s’il est envue terrestre. S’il tombe en dessous de la hauteur minimale du volcan,il est téléporté à son point de départ. Il est également placé sur la terreferme au début de l’exécution, peu importe s’il a été mal placé par ledéveloppeur.

La visualisation et la navigation en réalité virtuelle sont égalementintégrées. Les mains et manettes sont affichées le cas échéant.

Il existe plusieurs outils géologiques : les coordonnées GPS, uneboussole, une carte miniature et une échelle de couleurs. Ces outilssont affichés différemment en VR pour être ergonomique.

En outre, des outils développeur sont mis en place. Il s’agit de conver-sion de fichiers binaires flottants à des entiers non signés, de décima-tion de fichiers ASC pour réduire la précision du maillage et augmen-ter la vitesse des calculs. L’utilisateur peut également télécharger unfichier ASC depuis Unity, ce qui crée automatiquement le maillage cor-respondant et la possibilité d’effectuer des simulations.

Enfin, nous nous sommes efforcés de valoriser le projet. Les scripts,ressources et wiki sont fournis sur la forge logicielle de Clermont Uni-versité pour permettre au projet d’être reproductible. J’ai égalementinclus beaucoup d’automatisations pour que l’utilisation soit la plussimple possible. Une simulation précalculée est disponible sur naviga-teur Web. Enfin, j’ai défendu le projet lors de l’école 3DTeLC.

Les améliorations possibles sont encore nombreuses. Concernant laréalité virtuelle, la téléportation pourrait être mise en place. Il seraitsouhaitable de pouvoir lancer une simulation en temps réel avec un la-ser, tout en réglant le rayon, en se passant de la souris. Il pourrait êtreindiqué dans le casque l’utilité des boutons des manettes.

Au niveau des simulations, la morphologie des sources pourrait êtreplus complexe ; il s’agit en effet seulement de cercles pour l’instant,et la source pourrait être formée en fonction de la topographie avoisi-nante. Les textures réalistes pourraient être améliorées, et diversifiées.Par exemple, l’écoulement sur le mont Meager est en réalité gris. Nouspourrions également ajouter une carte volcanoligique ou les lignes de

63

Page 65: Filière 2 : Génie Logiciel et Systèmes Informatiques

niveaux, plutôt que d’afficher une orthophotographie seule. L’exporta-tion en WebGL pourrait être approfondie, afin de permettre la réalitévirtuelle Web et d’ajouter d’auters cas d’étude. Le MPI a vocation à êtremis en place pour l’accélération des calculs.

Lorsque VolcFlow-C sera publié, nous pourrions intégrer le code dela simulation au moteur, voire effectuer un portage sur Unreal Engine4, ainsi que proposer la version temps réel du projet sur la forge pu-blique. 3DTeLC-Clermont pourrait également être pré-publié dans lesarchives ouvertes HAL.

Enfin, il serait possible de permettre à plusieurs utilisateurs de seconnecter en réseau simultanément sur le même modèle. C’est d’ailleursce que compte proposer mon tuteur comme projet tutoré à l’ISIMA pourl’année qui suit.

64

Page 66: Filière 2 : Génie Logiciel et Systèmes Informatiques

Conclusion

L’observatoire OPGC et le laboratoire LMV sont des structures effi-caces pour la recherche pluridisciplinaire alliant volcanologie, simula-tion et réalité virtuelle. De plus, les conditions de réalisation de monstage ont été plus que satisfaisantes. Malgré la crise sanitaire, nousavons su nous adapter et nous organiser efficacement pour mener ceprojet à bien.

Ce stage m’a beaucoup apporté d’un point de vue méthodologique,organisationnel et technique. J’ai pu notamment me professionnaliseravec le moteur Unity et aborder pour la première fois la réalité virtuelle.Ceci m’est d’un intérêt particulier, car il s’agit de la branche dans la-quelle je souhaite m’orienter.

La problématique de visualisation des simulations en réalité vir-tuelle est très enrichissante, et a suscité mon intérêt tout au long dustage. De plus les développements réalisés sont très prometteurs ; puis-qu’il n’existe pas d’équivalent pour la recherche et l’enseignement envolcanologie.

Les objectifs du stage ont été atteints et dépassés. Le projet 3DTeLC-Clermont est cependant loin d’être clos, car il reste de nombreusesfonctionnalités à mettre en œuvre.

65

Page 67: Filière 2 : Génie Logiciel et Systèmes Informatiques

Sources documentaires

Références

[1] Asset de l’Oculus sur l’Asset Store d’Unityhttps://assetstore.unity.com/packages/tools/integration/oculus-integration-82022

[2] Asset de Substance sur l’Asset Store d’Unityhttps://assetstore.unity.com/packages/tools/utilities/substance-in-unity-110555

[3] Catalogue de données du CRAIGhttps://ids.craig.fr/geocat/srv/fre/catalog.search/home

[4] Comparatifs entre Unity et UE4https://www.developpez.net/forums/d1642968/applications/developpement-2d-3d-jeux/comparatif-unity-unreal/https://www.e-tribart.fr/blog/secteur-3d/logiciels-techniques/unity-vs-unreal-engine: :text=Unreal%20propose%20des%20visuels%20haute,lisse%20que%20celui%20d’Unity.https://sundaysundae.co/unity-vs-unreal/

[5] Conversion du Lambert 93 au GPShttps://gist.github.com/blemoine/e6045ed93b3d90a52891

[6] Documentation Oculushttps://developer.oculus.com/documentation/

[7] Documentation Microsoft sur le langage C#https://docs.microsoft.com/fr-fr/dotnet/csharp/

[8] Documentation Unreal Engine 4https://docs.unrealengine.com/en-US/index.html

[9] Documentation Unityhttps://docs.unity3d.com/Manual/index.html

[10] Forum d’aide Unityhttps://forum.unity.com/

[11] Mon passage à l’école 3DTeLChttps://www.youtube.com/watch?v=gzaOvn1gjJg

[12] Statistiques des moteurs les plus utilisés.https://www.gamasutra.com/blogs/MarcusToftedahl/20190930/350830/Which_are_the_most_commonly_used_Game_Engines.php

[13] Textures Substances partagéeshttps://share.substance3d.com/

Page 68: Filière 2 : Génie Logiciel et Systèmes Informatiques

[14] Version prétraitée publique sur la forge de l’OPGChttps://forge.clermont-universite.fr/projects/vr-simu

[15] Version WebGL disponible sur navigateur (le mot-de-passe est3DTeLC2021)http://opgc.fr/vobs/3DTeLC/VRgeomorph-Simulation-Demo/index.php

[16] VolcFlowhttp://lmv.uca.fr/volcflow/

[17] VRVolchttps://www.opgc.fr/vobs/VRVolc/home.php

[18] Wikipediahttps://fr.wikipedia.org/wiki

Page 69: Filière 2 : Génie Logiciel et Systèmes Informatiques

Annexes

Table des annexes

A Organigramme de l’OPGC (partie 1)

B Organigramme de l’OPGC (partie 2)

C Diagramme de Gantt prévisionnel

D Diagramme de Gantt réel

E Product Backlog

Page 70: Filière 2 : Génie Logiciel et Systèmes Informatiques

A Organigramme de l’OPGC (partie 1)

Figure 27 – Organigramme de l’OPGC (partie 1)

69

Page 71: Filière 2 : Génie Logiciel et Systèmes Informatiques

B Organigramme de l’OPGC (partie 2)

Figure 28 – Organigramme de l’OPGC (partie 2)

70

Page 72: Filière 2 : Génie Logiciel et Systèmes Informatiques

C Diagramme de Gantt prévisionnel

Figure 29 – Diagramme de Gantt prévisionnel

71

Page 73: Filière 2 : Génie Logiciel et Systèmes Informatiques

D Diagramme de Gantt réel

Figure 30 – Diagramme de Gantt réel

72

Page 74: Filière 2 : Génie Logiciel et Systèmes Informatiques

E Product Backlog

Cahier des charges31 Juillet 2020

Révision 4

* L’objectif est de développer une application complète pour visua-liser les écoulements volcaniques en réalité virtuelle

* Acteurs— Benjamin Van Wyk de Vries : [Ben] Chercheur principal, Risques

volcaniques, Geomorphologie— Emmanuel Delage : [ED] Scientifique technique, Simulation temps-

réel, VolcFlow C— Jordan Daffix : [JoDX] Développeur Unity 3D / WebGL— Karim Kelfoun : [KK] VolcFlowMatlab, Expert simulation, Volca-

nologie numérique— Gioachino Roberti : [Gio] Risques volcaniques, Geomorphologie,

Utilisateur VolcFlow, Cas d’étude Mont Meager

* Thèmes ou regroupement de fonctionnalités— Réalité Virtuelle (1000 technique)— Visualisation de simulations VolcFlow C (1000 technique)— Simulation temps-réel (200 technique)— Valorisation (1000 scientifique et 1000 technique)— WebGL (500 technique) et communication scientifique (500 scien-

tifique)— Risques volcaniques (800 scientifique)— Cas d’étude Puy de Dôme (600 scientifique)— Cas d’étude Mont Meager (600 scientifique)— Ecoulements volcaniques (500 scientifique)— Géologie Virtuelle (400 scientifique)— Géomorphologie (200 scientifique)

Définition user stories : décrit les interactions de l’utilisateur avecle système de façon plus ou moins détaillées

Définition d’un sprint : Un périmètre de développement (liste defonctionnalités, évolutions, corrections à apporter au code existant)

73

Page 75: Filière 2 : Génie Logiciel et Systèmes Informatiques

Remarques :Pas de sprint 0. Pas de planning par sprint. Pas de userstories. Pas de tableau des tâches. Un dailyscrum.

Le planning général est composé de 4 sprints d’un mois suivis de 3semaines pour la fermeture du projet : Description du livrable, rapportde stage et soutenance blanche

Sprint 1

∗ Unity vs Unreal [OK]

∗ Lecture des simulations, conversion/simplification de fichiers DEM(Modèles Numériques d’Elevation)au format asc (raster ASCIIEsri) [OK]

∗ Déclinaison en 3 implémentations de DEM pour la visualisationdes écoulements et application d’une texture issue d’une orthophotographie aérienne=> [Cas 1] Modèle généré directement sous Unityà partir du fi-chier DEMasc [OK]=> [Cas 2] Modèle issue de la transformation dans une applica-tion ad-hoc asc vers STL, puis simplifié avec Blender. Ce modèleest ensuite lu sous Unity. Ce cas correspond au cas le plus géné-rique car il permet de lire les modèles issus du workflow photo-grammétrique tel que prévu dans le projet 3DTeLC [OK]=> [Cas 3] Modèle décomposé en 9 tuiles 1000x1000 pixels poureffectuer des simulations temps réel sur des matrices 250x250pixels [presque OK]

∗ Intégration de la navigation 3DTeLC Clermont [OK]

∗ Export WebGL [KO]

∗ Démonstration [presque OK]

74

Page 76: Filière 2 : Génie Logiciel et Systèmes Informatiques

Sprint 2

∗ Rétrospection du sprint 1 en vert : + Ajout de la fonctionnalitéfenêtre miniature de visualisation de la coulée au nadir + Ajoutde la fonctionnalité Boussole + Ajout d’une texture réaliste pourla coulée + Démonstration vidéo

∗ [JoDX] Export WebGL pour [Cas 1] ou [Cas 2] [OK Cas 1]

∗ [JoDX] Étude de la VR dans un navigateur web [KO] :https ://hacks.mozilla.org/2018/02/create-vr-on-the-web-using-unity3d/,https ://assetstore.unity.com/packages/tools/integration/webxr-exporter-109152

MNT https ://ids.craig.fr/geocat/srv/fre/catalog.search/metadata/29bdef03-c163-4be1-8804-f16ee2cca3c9

∗ Orthophotos https ://ids.craig.fr/geocat/srv/fre/catalog.search/metadata/1550d5b8-8fbc-4876-

a649-62b08746a318

∗ [JoDX] pour [Cas 3] Au démarrage de l’exécutable ‘build desktop’Unity : Téléchargement des fichiers MNT (asc) et orthophotos as-sociées (ecw) depuis les FTP du CRAIG dans un répertoire struc-turé à l’avance => Lecture affichage des MNT avec un gradientniveaux de gris. [KO]

∗ [ED] les Orthophotos devront être converties via un script win-dows batch en GeoTiff puis être réduites à la taille 1000x1000pixels (png,jpg ou tif) pour servir de texture aux dalles MNT cor-respondantes (à la place du gradient niveaux de gris). [KO]

∗ [JoDX] Amélioration de la Boussole avec bouton ON/OFF [OK]

∗ [JoDX] Création d’un GPS avec bouton ON/OFF[OK]

∗ [JoDX] Amélioration de la texture de la coulée, hauteur de la lave[OK]

∗ [ED] Contacter Allegorithmic pour texture procédurale [OK]

∗ [ED] Etude d’affichage d’un géoïde pour la terre, la lune et mars...[KO]

75

Page 77: Filière 2 : Génie Logiciel et Systèmes Informatiques

Circé France v5.1SRTM 3 http ://srtm.csi.cgiar.org/srtmdata/

Digital Elevation, SRTM, SRTM 1 Global, SRTM1N45E002V3 needa login https ://earthexplorer.usgs.gov/

Fichier .DEM https ://dds.cr.usgs.gov/srtm/version1/SRTM30/w020n90/

Lune https ://astrogeology.usgs.gov/search/map/Moon/LRO/LOLA/Lunar_LRO_LOLA_Global_LDEM_118m_Mar2014

Mars https ://astrogeology.usgs.gov/search/map/Mars/Topography/HRSC_MOLA_Blend/Mars_HRSC_MOLA

_BlendDEM_Global_200mp_v2

Geotiff to STL (looks only for planar DEM) https ://github.com/anoved/phstl

Idem http ://planetarygis.blogspot.com/2017/03/dem-raster-to-3d-ply-format.html

Paraview globe vizu https ://medium.com/@pechnikov/visualization-on-the-globe-d4d316e64dd2

Projection de Mollweidepreserve les airesGrille de 1km https ://www.ngdc.noaa.gov/mgg/topo/gltiles.html

TO TRY => Code GeoTiff to vertices https ://www.geofx.com/visualization/geotools/tiffmapper/

tiffmapper.html : geotiff to asc, then asc to vertices

∗ [ED] Rédaction d’un pre-print HAL [KO]

∗ [ED] Réception du cas d’étude Mont Meager[OK]

∗ Chargement de texture pour les cas d’études ou nous dispose-rions de plusieurs cartes (exemple carte volcanologique du Puyde dome) [KO]

∗ Démonstration [OK] sur le web

Sprint 3

+Ecriture des coordonnées GPS à partir du Lambert93https ://gist.github.com/blemoine/e6045ed93b3d90a52891 [OK]

+générer param.in sous Unity, [OK]+Temps réel (appel de volcflow VR, avec prise en compte des parametresparam-

t-stop-source, param_dx_horiz,param_dy_horiz, param_dt, param_dt_mult),[OK]

+[JoDX] Ajout du paramètre du rayon de la source avec la molette dela sourie dans le cas d’une simulation temps-réel avec ajout de sourceà la volée [OK],

+Switch texture procédurale, [OK]

76

Page 78: Filière 2 : Génie Logiciel et Systèmes Informatiques

+échelle de couleur adaptative, [OK]+soleil à l’ouest, [OK]+Génération du Meager et switch entre Meager et PDD, [OK]+Simplification du code (automatisation, lectureasc, prefab pour les

tools. . . ), [OK]

∗ Changer de texture du modèle automatique [KO]

∗ Changer d’échelle de couleur (pas à la volée) [OK]

∗ Amélioration de la texture procédurale de l’écoulement (E->W ouW->E) [OK]

∗ Passation de la station de travail DELL avec le matériel de réalitévirtuelle [OK]

∗ [JoDX] Amélioration de la minimap (rectangulaire, placer la posi-tion du joueur...) [OK]

∗ [JoDX] Etude de la VR dans un navigateur web[KO]

∗ [JoDX] pour [Cas 3] Au démarrage de l’exécutable ‘build desk-top’ Unity : Téléchargement des fichiers MNT (asc) et orthopho-tos associées (ecw) depuis les FTP du CRAIG dans un répertoirestructuré à l’avance => Lecture affichage des MNT avec un gra-dient niveaux de gris. [Presque OK car ED n’a pas automatisé laconversion ECW=>TIF]

∗ [JoDX] Manager de création de dalles (cas 3) avec tableau conte-nant tous les points asc et un tableau avec les orthoimages etpositionnement automatique dans la scène. [OK]

∗ [ED]SubmittingYour App to the Oculus Quest Store https ://scriptable.com/blog/oculus-

go-unity-setup-quick-start [KO]

∗ [ED] Rédaction d’un pre-print HAL document de travail VR simu-precalculée[KO]

∗ Adaptation de fonctionnalités (Ergonomie) à la VR : outils mini-map, GPS, Echelle et bousole (avec ‘centereye’)[OK]

77

Page 79: Filière 2 : Génie Logiciel et Systèmes Informatiques

∗ Intégration VR [OK]

∗ Tests VR[Presque OK]

∗ Développement du cas d’étude Mont Meager, et Lemptegy avecla simulation[OK]

∗ Passage / Chargement générique (pas que Meager et PDD) d’uncas d’étude à un autre [KO]

∗ Amélioration du chargement de texture de cartes avec gestion dela transparence (type SIG)[KO]

∗ Gestion de collision de la lave parametrable [OK]

∗ Multiplayer et Networking[KO]

∗ IntéragationChalet (Photogrammetrie) et antenne Puy de dôme(Modélisation géométrique dans Unity), et intégration des mo-dèles dans le ASC [OK]

∗ Gestion de plusieurs source d’écoulement à la volée, (avec ta-bleau prérempli (rayon X Y), avec position du personnage, cur-seur de la souris (presque OK en VR, voir Steam VR)) [OK]

∗ [JoDX] Ajout du modèle chaine des Puy [presque OK defaut Mini-map]

∗ [JoDX] Le personnage ne peut pas sortir de la zone en mode FPSTPS[OK]

∗ [JoDX] Depuis le mode vol vers le mode sol, le personnage setéléporte (Poids infini)[OK]

∗ [JoDX] Téléportation presque OK en VR, fonctionne sur la sce-nePDD_testavec pointeur laser [presque OK]

∗ [JoDX] Téléportation en 3D clic gauchesur minimap [presque OKfonctionne sur PDD (problème de rotation du modèle]

78

Page 80: Filière 2 : Génie Logiciel et Systèmes Informatiques

∗ [JoDX] Ajout du son (oiseau, lave)[OK]

∗ [JoDX] Taille adaptative de la minimap[OK]

∗ [JoDX] Script de décimation de modèles asc [OK]

∗ DémonstrationEcole 3DTeLC Erasmus+ [OK]

Sprint 4 (final)

∗ Déploiement pour casque Oculus Quest

∗ Tests VR

∗ Robustesse VR

∗ ValorisationWeb, Forge logicielle, HAL preprint, Déploiement surla plateforme Oculus, et Démonstrations (Vulcania, Journée Ré-seau ARAMIS 2020 Visualisation de données annulées à causede la crise sanitaire, VolcaPot...)

∗ Documentations (Développeur, Utilisateur, Perspectives...)

79

Page 81: Filière 2 : Génie Logiciel et Systèmes Informatiques

F Tests

Tests unitaires

Emmanuel Delage et Jordan Daffix

31juillet 2020

Hypothèse de fonctionnement : les données en entrée, l'objet à tester et les observations attendues

Résultat : Conformité aux attentes de la fonctionnalité (valide, invalide, inopportuns…)

Commentaire (optionnel) : Proposition de correction, suggestion d’amélioration

Module Hypothèse Résultat Commentaire Gestion des modèles

Lire un modèle issue de la photogrammétrie : Cas d’étude Lemptégy

Lire un modèle issue de LiDAR: Cas d’étude Puy de Dôme

Lire un modèle issue de LiDAR: Cas d’étude Mont Meager

Réduire la résolution des MNT LiDAR de type asc

Présence d’artéfacts sur le modèle

Affichage des modèles ajoutées sur la topographie : Modèle du chalet et antenne

…si tu penses à d’autres tests Navigation First Person (FP) : vérifier le

mode de déplacement au sol avec le clavier

FP : vérifier le mode de déplacement au sol avec lestouch

FP : déplacement en dehors du modèle

FP Accélération de la vitesse de déplacement

FP : Saut Third Person (TP) : vérifier le

mode de déplacement au sol avec le clavier

TP : vérifier le mode de

Page 82: Filière 2 : Génie Logiciel et Systèmes Informatiques

déplacement au sol avec les touch

TP : déplacement en dehors du modèle

TP Accélération de la vitesse de déplacement

TP : Saut Vol : Déplacement avec les

touches clavier et les manettes

Vol : Blocage de la visualisation au-delà de 20 degrés au-dessus de l’horizon

Vol : Accélération de la vitesse de déplacement

…si tu penses à d’autres tests Simulation Intégration de la simulation avec

une source prédéfinie dans les paramètres

Intégration de la simulation avec une source définie à la souris

Intégration de la simulationmultisources

… si tu penses à d’autres tests Outils Boussole Carte miniature GPS Echelle de Couleur … si tu penses à d’autres tests

Page 83: Filière 2 : Génie Logiciel et Systèmes Informatiques

G Touches

Keyboard and mouse Action Z, Q, S, D

Up, Left, Down, Right Move character

Mouse move Rotate view C Change view mode

(First Person, Third Person, Flight) V Enable/Disable fly mod

Space Jump Up in flymod

Left Alt Down in flymod Left shift Run

F Pause / Unpause simulation Case RealTimeCharacterPosition : add source

Left Click Mouse Case RealTimeCursorPosition : add source T Show/Hide tools R Switch Pseudo-Colors/Realistic lava

Alt F4 (CTRL+Q) Quit

Page 84: Filière 2 : Génie Logiciel et Systèmes Informatiques

Xbox Controller Action 1 (Left analog stick) Move character

10 (Right analog stick) Rotate view Y

Change view mode (First Person, Third Person, Flight)

X Enable/Disable fly mod B Jump

Up in flymod A Down in flymod

7 (Right bumper) Run 2 Pause / Unpause simulation

Case RealTimeCharacterPosition : add source 10 Click Show/Hide tools

6 Quit

Page 85: Filière 2 : Génie Logiciel et Systèmes Informatiques

Oculus Controllers Action

1 Move character 4 Rotate view Y

Change view mode (First Person, Third Person, Flight)

X Enable/Disable flymod B Jump

Up in flymod A Down in flymod 6 Run 9 Pause / Unpause simulation

Case RealTimeCharacterPosition : add source

Click 1 Pause/Unpause Simulation Click 4 Show/Hide tools

5 Quit