Pipeline pour créer des maillages Voronoi

10

J'aimerais implémenter un plugin Maya (cette question est indépendante de Maya) pour créer des motifs 3D Voronoi, quelque chose comme

entrez la description de l'image ici

Je sais juste que je dois partir de l'échantillonnage ponctuel (j'ai implémenté l'algorithme d'échantillonnage adaptatif de poisson décrit dans cet article ).

J'ai pensé que, à partir de ces points, je devrais créer le fil 3D du maillage en appliquant Voronoi (j'ai essayé d'utiliser (Python) scipy.spatial.Voronoi mais le résultat était quelque chose de différent de ce que j'attendais).

Il me manque quelque chose? Quelqu'un peut-il suggérer le pipeline et les algorithmes appropriés que je dois implémenter pour créer de tels modèles?

[EDIT] Voici quelques exemples de ce que j'obtiens en gérant le résultat que j'obtiens de scipy.spatial.Voronoi comme ceci (comme suggéré ici ):

vor = Voronoi(points)
for vpair in vor.ridge_vertices:
    for i in range(len(vpair) - 1):
        if all(x >= 0 for x in vpair):
            v0 = vor.vertices[vpair[i]]
            v1 = vor.vertices[vpair[i+1]]
            create_line(v0.tolist(), v1.tolist())

Les sommets gris sont les points échantillonnés (la forme d'origine était une simple sphère): entrez la description de l'image ici

Voici une forme plus complexe (un bras) entrez la description de l'image ici

Jiloc
la source
Merci pour la réponse. Je vais reproduire ce que j'ai fait et poster un écran comme suggéré. Quoi qu'il en soit, l'intention finale de cette question n'est pas de déboguer mon code, mais de comprendre si ce que je fais est bien ou s'il y a d'autres étapes qui me manquent entre les deux!
Jiloc
exemples ajoutés comme suggéré!
Jiloc
Les points de l'échantillonnage de poisson sont corrects. L'algorithme qui les génère est entièrement testé unitaire et ceux que vous voyez sur les écrans sont des sphères avec le centre dans le point échantillonné que j'ai créé par programme avant d'appeler Voronoi (points)! Je crains de ne pas suivre le bon chemin ou je gère mal le résultat de Voronoi
Jiloc
Les images que vous montrez ont fait le voronoi sur la fonction 2d.
joojaa
@joojaa À partir des images d'exemple, je m'attendais à ce que les bords des cellules de Voronoï sur la surface 2D soient ce qui était requis (pour donner une collection de segments de ligne reliant les points sur la surface de la sphère, plutôt que la collection de sections planes qui serait donnée en 3D) . Cependant, scipy.spatial.Voronoi semble être conçu pour les espaces à N dimensions plutôt que pour les surfaces qui y sont intégrées. Je ne vois pas immédiatement comment il serait utilisé pour les points 3D contraints à une surface 2D.
trichoplax du

Réponses:

1

http://www.cs.sandia.gov/~samitch/papers/vor_final.pdf Il n'y a pas d'algorithme informatique dans aucune langue de programmation, mais vous devriez pouvoir le répliquer facilement avec des réflexions planes et les algorithmes du lien ci-dessus.

Zeitaku Enjin
la source
Bienvenue sur ComputerGraphics.SE! C'est normalement une bonne idée de faire des réponses sur Stack Exchange de manière autonome (par exemple dans le cas où les liens tombent et aussi en général afin que les gens n'aient pas à suivre les liens pour pouvoir dire si une réponse leur est utile). Vous voudrez peut-être améliorer votre réponse en incluant un bref résumé du contenu du document.
Martin Ender