Projet Cartylion
Partageons notre passion Communauté
Catégorie :
Date : 5 mars 2022

Moteur physique et moteur graphique

– Hey Mathieu de quoi on parle aujourd’hui ?

– Comme d’habitude Raph, de programmation autour de Conseil de Guerre en ligne, et plus particulièrement des notions de moteur physique et moteur graphique pour un jeu vidéo.


– Un moteur physique peut être occasionnellement dissocié du moteur graphique mais ça veut dire quoi Mathieu concrètement ?

Cela veut simplement dire que la partie graphique n’est pas liée à la partie physique. J’espère que c’est clair, bonsoir, à la prochaine.


Reprenons l’explication : D’un point de vue intuitif, on ne voit effectivement pas de lien entre les deux parties, c’est pourquoi on peut se demander pourquoi Unity, Unreal Engine et d’autres les associent presque systématiquement. Comme son nom l’indique, le moteur physique sert à gérer la physique : il s’agit de représenter les données et de faire les calculs pour simuler certains phénomènes comme les chutes, ou tout simplement les mouvements. Quant au moteur graphique, il dessine surtout des formes géométriques simples en 2 dimensions ou 3 dimensions : carré, rond, cube, sphère, etc.

Zoom intérieur d'un moteur avec engrenages
Vous avez dit moteur ? Oui mais moteur de jeu vidéo et non moteur de voiture !

Réfléchissons un moment quel objet connu de tous doit être représenté par un dessin mais est un phénomène visible ?

– La lumière Mathieu ?

– Exactement Raph ! La lumière est physique et graphique et sans lumière impossible de voir quoique ce soit. On comprend donc bien mieux cette association.

La physique

Dans notre monde tout est régi par la physique et la chimie.
Les mathématiques les modélisent très bien et produisent des formules qui vous donneront cette tête :


Bon, je vais un peu simplifier les formules mathématiques pour vous en donner une idée. Il faut imaginer comment les faire évoluer dans le temps.


Pour un objet solide normalement déformable :


On va le découper en une somme de petits ressorts virtuels pour former un système masse-ressort dont vous trouverez facilement les formules sur Wikipedia. Avec ces formules, on peut faire des simulations d’objets assez convaincantes pour un jeu vidéo.


Pour les objets liquides ou gazeux à particules, que faire ?


On peut rajouter les effets de déformations des objets gélatineux ça ira bien pour les liquides un peu gluants et si on les lisse un peu, paf ça fait tout liquide. Découper tout ça en tout petit, paf un gaz. C’est simple, n’est-ce pas ?


On a donc toutes les familles d’objets. En simplifiant on dira que même l’air est un objet physique donc on doit juste faire la « collision » entre deux objets pour modéliser tout mouvement.

Concrètement c’est en faisant la collision entre un rayon lumineux et chaque carte qu’on peut détecter l’adjacence, ce que fait notre œil avec le cerveau en une fraction de seconde. C’est beaucoup plus rapide que les possibilités de l’ordinateur mais il faut faire avec, donc on va ruser.


Mais comment Mathieu ?

La « magie » du GPU ou processeur graphique qui – contrairement au CPU du processeur de la carte mère qui fait tous les calculs pour faire tourner votre ordinateur – ne fait que les calculs liés à la partie graphique. Comme cet outil est spécialisé il est extrêmement rapide ! Et c’est là que l’on voit arriver la partie graphique.

Photo d'Albert Einstein tirant la langue
La physique sera-t-elle aussi facile pour vous que pour Einstein ?

Le graphisme

Bien, nous avons démystifié la physique.

On dit que les artistes ont énormément de talent, ne leur enlevons pas cela mais nuançons un peu, il y a également une dimension technique et scientifique. Je veux vous parler ici de l’algorithme du peintre : on commence par peindre le fond puis on recouvre au fur et à mesure que l’on s’approche du point de vue de l’artiste. Bien, mais comment on fait pour les ombres et la lumière ? Ça ne se limite pas à de simples aplats de couleurs.

En effet, on peut considérer la lumière de deux points de vue, ondulatoire et particulaire.
Du point de vue ondulatoire, nous voyons du violet au rouge, c’est-à-dire de la longueur d’onde 380 à 750 mais pas au-delà (infrarouge) ni en-dessous (ultraviolet).
Si on voulait étudier le particulaire, cela demanderait d’examiner les atomes de lumière, les photons.

Schéma du spectre visible du violet au rouge compris dans le spectre des longueurs d'onde
Spectre visible parmi les longueurs d’ondes de la lumière (fichier Wikipedia commons)

Parlons donc de raycasting, la méthode est simple : prenons un objet et une source de lumière éloignée, le soleil par exemple, son ombre sur le sol n’a généralement pas exactement la forme de l’objet. Les rayons solaires réfractés par l’objet vont à l’œil et renvoient la forme perçue au cerveau, comme ceci :


Schéma de lumière rentrant dans l'oeil après être passée par un objet
Vue simplifiée des rayons lumineux

Pour nous, le calcul de l’adjacence revient à considérer chaque carte comme émetteur de lumière « invisible » et comme récepteur « solide ». En théorie, cela fonctionne ainsi mais il faut pouvoir « diriger » cette lumière, là interviennent les layers, des panneaux « miroir » dont on ajuste l’opacité pour ne toucher que les bons objets et pas tous les objets.



L’heure est à la conclusion : pour faire un jeu de nos jours un moteur est physique et graphique, ces outils sont indispensables et ont été développés par des informaticiens qui n’en disposaient pas mais qui avaient de riches connaissances en mathématiques et physique. J’espère que cet article vous a plu, et comme le rappelle le T800 « I will be back! »

Mathieu
 
Rencontrez Mathieu, le développeur de jeux vidéo de l'équipe du Projet CarTylion. Il vous présente son parcours et sa place dans l'équipe.
Développement
 

Laisser un commentaire

Cette section n'est pas encore disponible.

Mot de passe oublié ?

Vous n'avez pas encore de compte ?

Créer un compte

Pour rester informé-e des évolutions du site, laissez-nous votre email.

À bientôt !