Pipeline zum Erstellen von Voronoi-Netzen


10

Ich möchte ein Maya-Plugin implementieren (diese Frage ist unabhängig von Maya), um 3D-Voronoi-Muster zu erstellen

Geben Sie hier die Bildbeschreibung ein

Ich weiß nur, dass ich mit der Punktabtastung beginnen muss (ich habe den in diesem Artikel beschriebenen adaptiven Poisson-Abtastalgorithmus implementiert ).

Ich dachte, dass ich von diesen Punkten aus den 3D-Draht des Netzes mit Voronoi erstellen sollte (ich habe versucht, (Python) scipy.spatial.Voronoi zu verwenden, aber das Ergebnis war etwas anderes als erwartet).

Mir fehlt etwas? Kann jemand die richtige Pipeline und Algorithmen vorschlagen, die ich implementieren muss, um solche Muster zu erstellen?

[EDIT] Hier sind einige Beispiele dafür, wie ich mit dem Ergebnis von scipy.spatial.Voronoi umgehe (wie hier vorgeschlagen ):

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())

Die grauen Eckpunkte sind die abgetasteten Punkte (die ursprüngliche Form war eine einfache Kugel): Geben Sie hier die Bildbeschreibung ein

Hier ist eine komplexere Form (ein Arm) Geben Sie hier die Bildbeschreibung ein


Danke für Ihre Antwort. Ich werde replizieren, was ich getan habe, und einen Bildschirm wie vorgeschlagen veröffentlichen. Die letzte Absicht dieser Frage ist jedenfalls nicht, meinen Code zu debuggen, sondern zu verstehen, ob das, was ich tue, richtig ist oder ob es andere Schritte gibt, die mir dazwischen fehlen!
Jiloc

Beispiele wie vorgeschlagen hinzugefügt!
Jiloc

Die Punkte aus der Poisson-Probenahme sind richtig. Der Algorithmus, der sie generiert, ist vollständig einheitlich getestet und diejenigen, die Sie auf den Bildschirmen sehen, sind Kugeln mit der Mitte in dem abgetasteten Punkt, den ich programmgesteuert erstellt habe, bevor ich Voronoi (Punkte) aufrufe! Ich
mache

Die Bilder, die Sie zeigen, haben die Voronoi für die 2d-Funktion ausgeführt.
Jojaja

@joojaa Aus den Beispielbildern erwartete ich, dass die Voronoi-Zellkanten auf der 2D-Oberfläche erforderlich waren (um eine Sammlung von Liniensegmenten zu erhalten, die Punkte auf der Kugeloberfläche verbinden, anstatt die Sammlung von ebenen Abschnitten, die in 3D angegeben würden). . Allerdings scipy.spatial.Voronoi scheint für N - dimensionale Räume gestaltet werden , anstatt Oberflächen eingebettet in ihnen. Ich kann nicht sofort sehen, wie es für 3D-Punkte verwendet wird, die auf eine 2D-Oberfläche beschränkt sind.
Trichoplax

Antworten:


1

http://www.cs.sandia.gov/~samitch/papers/vor_final.pdf Es gibt keinen Computeralgorithmus in einer Programmiersprache, aber Sie sollten ihn mit einigen Flugzeugreflexionen und den Algorithmen aus dem problemlos replizieren können über dem Link.


Willkommen bei ComputerGraphics.SE! Normalerweise ist es eine gute Idee, Antworten auf Stack Exchange in sich geschlossen zu machen (z. B. für den Fall, dass Links ausfallen und auch im Allgemeinen, damit die Benutzer keinen Links folgen müssen, um feststellen zu können, ob eine Antwort für sie nützlich ist). Möglicherweise möchten Sie Ihre Antwort verbessern, indem Sie eine kurze Zusammenfassung des Inhalts des Dokuments hinzufügen.
Martin Ender
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.