Pipeline para criar malhas Voronoi

10

Gostaria de implementar um plug-in do Maya (essa pergunta é independente do Maya) para criar padrões 3D Voronoi, algo como

insira a descrição da imagem aqui

Eu apenas sei que tenho que começar com a amostragem pontual (implementei o algoritmo adaptativo de amostragem de poisson descrito neste artigo ).

Eu pensei que, a partir desses pontos, eu deveria criar o fio 3D da malha aplicando Voronoi (tentei usar (Python) scipy.spatial.Voronoi, mas o resultado foi algo diferente do que eu esperava).

Estou faltando alguma coisa? Alguém pode sugerir o pipeline e algoritmos adequados que tenho que implementar para criar esses padrões?

[EDIT] Aqui estão alguns exemplos do que eu recebo ao lidar com o resultado que recebo do scipy.spatial.Voronoi como este (como sugerido aqui ):

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

Os vértices cinza são os pontos amostrados (a forma original era uma esfera simples): insira a descrição da imagem aqui

Aqui está uma forma mais complexa (um braço) insira a descrição da imagem aqui

Jiloc
fonte
Obrigado pela resposta. Vou replicar o que fiz e postar uma tela conforme sugerido. De qualquer forma, a intenção final desta pergunta não é depurar meu código, mas entender se o que estou fazendo está certo ou se há outras etapas que estão faltando no meio!
Jiloc
exemplos adicionados como sugerido!
Jiloc #
Os pontos da amostragem de poisson estão corretos. O algoritmo que os gera é totalmente testado por unidade e os que você vê nas telas são esferas com o centro no ponto amostrado que eu criei programaticamente antes de chamar Voronoi (pontos)! Eu estou preocupado que eu não estou seguindo o caminho correto ou eu estou lidando com o resultado Voronoi de uma maneira errada
Jiloc
As imagens exibidas mostram o voronoi na função 2D.
Joojaa
@joojaa A partir das imagens de exemplo, eu esperava que as bordas das células Voronoi na superfície 2D fossem necessárias (para fornecer uma coleção de segmentos de linha que conectam pontos na superfície da esfera, em vez da coleção de seções planas que seriam dadas em 3D) . No entanto, scipy.spatial.Voronoi parece ter sido projetado para N espaços dimensionais, em vez de superfícies incorporadas a eles. Não consigo ver imediatamente como seria usado para pontos 3D restritos a uma superfície 2D.
Trichoplax

Respostas:

1

http://www.cs.sandia.gov/~samitch/papers/vor_final.pdf Não existe algoritmo de computador em nenhum idioma de programação, mas você deve ser capaz de replicá-lo facilmente com algumas reflexões planas e os algoritmos do acima do link.

Zeitaku Enjin
fonte
Bem-vindo ao ComputerGraphics.SE! Normalmente, é uma boa idéia tornar as respostas no Stack Exchange independentes (por exemplo, caso os links sejam inoperantes e também em geral, para que as pessoas não precisem seguir os links para saber se uma resposta é útil para elas). Você pode melhorar sua resposta incluindo um breve resumo do conteúdo do artigo.
Martin Ender