Pipeline per creare mesh Voronoi


10

Vorrei implementare un plugin Maya (questa domanda è indipendente da Maya) per creare modelli 3D Voronoi, Qualcosa di simile

inserisci qui la descrizione dell'immagine

So solo che devo iniziare dal campionamento puntuale (ho implementato l'algoritmo di campionamento adattivo di Poisson descritto in questo documento ).

Ho pensato che, da quei punti, avrei dovuto creare il filo 3D della mesh applicando Voronoi (ho provato a usare (Python) scipy.spatial.Voronoi ma il risultato è stato qualcosa di diverso da quello che mi aspettavo).

Mi manca qualcosa? Qualcuno può suggerire la pipeline e gli algoritmi corretti che devo implementare per creare tali schemi?

[EDIT] Ecco alcuni esempi di ciò che ottengo gestendo il risultato che ottengo da scipy.spatial.Voronoi in questo modo (come suggerito qui ):

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

I vertici grigi sono i punti campionati (la forma originale era una sfera semplice): inserisci qui la descrizione dell'immagine

Ecco una forma più complessa (un braccio) inserisci qui la descrizione dell'immagine


Grazie per la risposta. Ho intenzione di replicare quello che ho fatto e pubblicare una schermata come suggerito. In ogni caso, l'intento finale di questa domanda non è quello di eseguire il debug del mio codice, ma di capire se quello che sto facendo è giusto o ci sono altri passaggi che mi mancano in mezzo!
Jiloc,

aggiunti esempi come suggerito!
Jiloc,

I punti del campionamento di Poisson sono giusti. L'algoritmo che li genera è completamente testato dall'unità e quelli che vedi nelle schermate sono sfere con il centro nel punto campionato che ho creato a livello di codice prima di chiamare Voronoi (punti)! Sono preoccupato che non sto seguendo la strada giusta o sto gestendo il risultato Voronoi in modo sbagliato
Jiloc

Le immagini che mostri hanno fatto il voronoi sulla funzione 2d.
joojaa,

@joojaa Dalle immagini di esempio mi aspettavo che i bordi delle celle Voronoi sulla superficie 2D fossero ciò che era richiesto (per fornire una raccolta di segmenti di linea che collegano punti sulla superficie della sfera, piuttosto che la raccolta di sezioni piane che sarebbero state fornite in 3D) . Tuttavia, scipy.spatial.Voronoi sembra essere progettato per spazi N dimensionali piuttosto che superfici incorporate in essi. Non riesco a vedere immediatamente come verrebbe utilizzato per i punti 3D vincolati a una superficie 2D.
trichoplax,

Risposte:


1

http://www.cs.sandia.gov/~samitch/papers/vor_final.pdf Non esiste un algoritmo informatico in nessuna lingua di programmazione, ma dovresti essere in grado di replicarlo facilmente con alcune riflessioni piane e gli algoritmi del link sopra.


Benvenuto in ComputerGraphics.SE! Normalmente è una buona idea rendere le risposte su Stack Exchange autonome (ad esempio nel caso in cui i collegamenti si interrompano e anche in generale, in modo che le persone non debbano seguire i collegamenti per essere in grado di dire se una risposta è utile per loro). Potresti voler migliorare la tua risposta includendo un breve riassunto del contenuto del documento.
Martin Ender,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.