보로 노이 메시를 생성하는 파이프 라인


10

3D Voronoi 패턴을 만들기 위해 Maya 플러그인 (이 질문은 Maya와 독립적 임)을 구현하고 싶습니다.

여기에 이미지 설명을 입력하십시오

나는 단지 포인트 샘플링부터 시작해야한다는 것을 안다 ( 이 백서 에서 설명한 적응 형 포아송 샘플링 알고리즘을 구현했다 ).

그 시점에서 Voronoi를 적용하는 메쉬의 3D 와이어를 만들어야한다고 생각했습니다 ((Python) scipy.spatial.Voronoi를 사용하려고했지만 결과는 예상과 다릅니다.)

뭔가 빠졌습니까? 누구든지 그러한 패턴을 만들기 위해 구현 해야하는 적절한 파이프 라인 및 알고리즘을 제안 할 수 있습니까?

[편집] scipy.spatial.Voronoi에서 얻은 결과를 처리하는 방법에 대한 몇 가지 예는 다음과 같습니다 ( 여기에서 제 안됨).

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

회색 꼭짓점은 샘플링 된 점입니다 (원래 모양은 단순한 구였습니다). 여기에 이미지 설명을 입력하십시오

여기 더 복잡한 모양이 있습니다 (팔) 여기에 이미지 설명을 입력하십시오


답장을 보내 주셔서 감사합니다. 내가 한 일을 복제하고 제안 된대로 화면을 게시 할 것입니다. 어쨌든이 질문의 최종 의도는 내 코드를 디버깅하는 것이 아니라 내가하고있는 일이 옳은지 또는 내가 누락 된 다른 단계가 있는지 이해하는 것입니다!
Jiloc

제안대로 예제를 추가했습니다!
Jiloc

포아송 샘플링의 점이 맞습니다. 그것들을 생성하는 알고리즘은 완전히 단위 테스트되었으며 화면에서 볼 수있는 것은 Voronoi (points)를 호출하기 전에 프로그래밍 방식으로 만든 샘플링 된 점의 중심이있는 구입니다! 올바른 경로를 따르지 않거나 Voronoi 결과를 잘못된 방식으로 처리하고 있다고 걱정됩니다.
Jiloc

당신이 보여주는 이미지는 2D 기능에서 보로 노이를 수행했습니다.
joojaa

@ joojaa 예제 이미지에서 2D 표면의 Voronoi 셀 가장자리가 필요한 것으로 예상했습니다 (3D로 제공되는 평면 섹션이 아닌 구면의 점을 연결하는 선 세그먼트 모음 제공) . 그러나 scipy.spatial.Voronoi 는 내부에 포함 된 표면이 아닌 N 차원 공간에 맞게 설계된 것 같습니다. 2D 표면에 구속 된 3D 점에 어떻게 사용되는지 즉시 알 수 없습니다.
trichoplax

답변:


1

http://www.cs.sandia.gov/~samitch/papers/vor_final.pdf 프로그래밍 언어에는 컴퓨터 알고리즘이 없지만 일부 Plane Reflections 및 알고리즘을 사용하여 쉽게 복제 할 수 있어야합니다. 위의 링크.


ComputerGraphics.SE에 오신 것을 환영합니다! 일반적으로 스택 교환에 대한 답변을 자체적으로 작성하는 것이 좋습니다 (예 : 링크가 다운되는 경우와 일반적으로 사람들이 링크를 따라야 답변이 유용한 지 알 수 없음). 종이 내용에 대한 간단한 요약을 포함하여 답을 향상시킬 수 있습니다.
Martin Ender
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.