CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Mesh generation triangulaire

Lagrangien
Lagrangien
Niveau 8
25 février 2015 à 15:18:21

Salut,

Je dispose d'une (très longue) liste de coordonnées représentant des points dans l'espace.
J'aimerais en faire un mesh de triangles. Cependant, je n'ai AUCUNE autre infos que la liste de points.
Connaissez-vous une manière efficace de faire cela ? Dans MeshPy, il faut apparemment donner une liste de triangles, alors que je ne les connais a priori pas.

Si vous ne connaissez pas de manière de le faire en Python, pouvez-vous me conseiller un algo pour que je l'implémente moi-même ?

Merci :ok:

guyver2
guyver2
Niveau 10
25 février 2015 à 17:29:13

Si tu n'as aucune information a priori sur ton nuage de point alors tu peux essayer de faire une triangulation de delaunay 3D, une reconstruction de poisson ou essayer un algo de ball pivoting. C'est pas forcement des approches triviales mais il y a peut etre des libs en python qui font ca. En C/C++ tu as CGAL ou PCL qui propose ce genre de chose.

Si tu arrives a exporter ton nuage de point dans un format un peu standard (.ply par exemple), tu peux essayer ces differents algo via le logiciel meshlab.

Si tes points viennent d'une kinect par exmple tu peux exploiter plus d'infos pour grandement simplifier la construction d'un maillage assez propre.

LGV
LGV
Niveau 28
25 février 2015 à 17:31:54

Generer l'information surfacique a partir d'un point cloud arbitraire uniquement est un probleme TRES complique qui donne des resultats non deterministes selon l'algo utilise (il n'y a pas unicite des solutions)

Si le modele semble "intuitif" et qu'il y a peu de points, une approche manuelle donnera le meilleur resultat en terme de qualite/temps.

Si tu as des informations complementaires (conxevite locale du modele recherché, uniformite ou non de la tesselation, etc.) on peut plus ou moins deduire des interieurs/exterieurs qui peuvent servir dans une representation par marching cubes ou minimisation de fonction d'energie. Ce genre d'approche est souvent utilise pour certains scanner 3D ou les camera types kinect pour reconstruire la scene a partir des depth maps

Perso je ne connais pas de solution "facile" a ce probleme.

godrik
godrik
Niveau 30
25 février 2015 à 19:46:56

Perso je ne connais que delaunay pour faire ca.

droidz
droidz
Niveau 2
28 février 2015 à 18:56:27

Bonjour,

J'ai peut être mal compris votre question, mais j'ai l’impression que les réponses données sont hors sujet (ou trop poussé).

Si tu as bien une liste de positions (du genre p1=x,y,z ; p2=x2,y2,z2 ; p3=x3,y3,z3 ; p4=...), tu as juste à regrouper les positions pour en faire des triangles (face) ( Triangle1=p1,p2,p3 ; triangle2=p4,p5,p6 ;...). Avec directx tu as juste à faire un DrawUserPrimitives de type PrimitiveType.TriangleList. Si tu veux créer un mesh que tu peux lire avec des logiciels tiers (blender, 3dsmax) convertis la liste en fichier Wavefront (.obj) (utilise que "v" et "f"), je pense que c'est le plus simple.

Désolé si je suis hors sujet.

godrik
godrik
Niveau 30
28 février 2015 à 22:23:58

droidz, et comment tu sais comment grouper les points en triangle pour reconstruire un mesh coherent? Ce que tu propose a l'air de generer des triangle qui sont deconnecte. Ca ne va pas faire un mesh de l'objet.

droidz
droidz
Niveau 2
28 février 2015 à 23:35:01

Godrik : Le résultat n’est vraiment pas garanti, mais c’est la solution la plus logique et c’est comme ça que directx gère si l’on ne donne pas les informations sur les triangles. Il peut aussi tester le type TriangleStrip ( https://msdn.microsoft.com/en-us/library/microsoft.xna.framework.graphics.primitivetype.aspx ).

Lagrangien : D’où vient ce fichier ? Peux-tu le partager (ca nous aidera à te donner une réponse plus adaptée).

godrik
godrik
Niveau 30
01 mars 2015 à 00:18:17

Non, ce n'est pas une solution logique. Ce n'est meme pas une solution du tout. Ca ne va pas construire le mesh d'un objet. Le probleme est clair et classique, tu as un ensemble de point qui sont extrait de la surface d'un objet et tu veux reconstruire un modele 3d a partir de ca.

Ca apparait par exemple quand tu construit une carte topographique ou quand tu "scan" un objet 3d a partir de plusieurs image.

Lagrangien
Lagrangien
Niveau 8
01 mars 2015 à 00:37:10

Bien vu Godrik, c'est justement des points topographiques que je dois transformer en mesh.
Merci pour vos réponses : j'ai utilisé delaunay pour faire des triangles à partir du nuage de points (j'ai utilisé scipy, et non-pas implémenté l'algo moi-même).

godrik
godrik
Niveau 30
01 mars 2015 à 00:48:50

Lagrangien, ca te donne le resultat que tu veux la triangulation de delaunay? Ton objet n'est pas trop concave? De memoire si tu applique delaunay sur un objet concave (genre pacman) ca ne se passe pas tres bien et un algo a base de nearest neighbor est plus approprie.

droidz
droidz
Niveau 2
01 mars 2015 à 11:36:56

Godrik: Oui, autan pour moi, je pensais que ça liste était ordonné (qu'il y avait une logique dans l'ordre dans positions). Et je ne connaissais pas Delaunay et autre algo de ce type.

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment