Calculer la distance entre deux vertex d’un objet sous Blender

Au col­lège, on apprend à cal­culer la dis­tance entre deux points dans un espace dit “eucli­di­en” (la norme du vecteur for­mé par ces deux points, peut importe le nom­bre de dimen­sions de l’e­space). Le plus court chemin entre deux points dans cet espace est un une ligne “droite” (enfin, en 3D tout du moins). Toute­fois, si vous avez fait un peu de rel­a­tiv­ité générale par exem­ple, vous avez appris à tra­vailler avec les espaces courbes. En rel­a­tiv­ité générale, l’e­space est cour­bé par la masse. Ain­si, la terre suit une tra­jec­toire rec­tiligne dans un espace cour­bée par le soleil. Bon, c’est une façon de présen­ter les choses. Mais quel rap­port avec la 3D me direz-vous  ?

Le prob­lème revient au même lorsqu’il faut cal­culer la dis­tance entre deux points sur une sphère par exem­ple. Comme la sphère est un objet “idéal” et sim­ple, c’est rel­a­tive­ment facile à trou­ver. Mais qu’en est-il s’il s’ag­it d’une sur­face comme un paysage défor­mé par une Heightmap ? Au pas­sage, le tra­jet “courbe” pas­sant d’un point à un autre dans un espace non-eucli­di­en (comme la sur­face d’un objet non-platj) est appelé une géodésique.

Patmo141 a tra­vail­lé sur un script python qui per­met de cal­culer la dis­tance entre 2 points sur un mesh.

Il s’ag­it d’une fonc­tion “geodesic_walk” qui par­cours le mesh d’un point A à un point B en util­isant un sys­tème de plusieurs itéra­tions. Cela rap­pelle beau­coup l’al­go­rithme en A* que l’on utilise pour faire du pathfind­ing: La sur­face de l’ob­jet peut-être assim­ilée à un mesh des nav­i­ga­tion. En tous cas, si je devais créer cela très vite, c’est l’al­go que j’u­tilis­erai. Mais peut-être l’au­teur du script a préféré explor­er d’autres pistes vu les lec­tures accom­pa­g­nant son tra­vail (ci-après).

D’ailleurs son algo­rithme sem­ble cal­culer à l’a­vance des “flux” de mou­ve­ment comme l’il­lus­tre la pho­to ci-après:

Capture d'écran 2016-04-26 10.38.56

C’est prob­a­ble­ment une sorte de “cache” per­me­t­tant d’ac­célér­er les cal­culs durant les dif­férentes itéra­tions. A la fin de la vidéo, il fait le test sur Suzanne et reste sur­pris que l’al­go­rithme passe par le sour­cil au lieu d’aller tout droit vers les front. Erreur d’al­go ou véri­ta­ble­ment plus court chemin ? Il n’est pas tou­jours évi­dent d’avoir le résul­tat escomp­té.

Bref, sujet très intéres­sant si vous vous intéressez aux cal­culs en 3D, moins sinon.

Vous trou­verez un exem­ple à télécharg­er ici, ain­si que de la doc­u­men­ta­tion:

Cette deux­ième vidéo mon­tre comme utilis­er rapi­de­ment le plu­g­in, avec un dessin en temps-réel de la géodésique:

Vous pou­vez aus­si suiv­re le thread sur BlenderArtists.org

 

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.