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