2012-06-17 7 views
2

나는 이진 공간 파티션 트리에 의해 주어진 3d 볼륨을 가지고있다. 보통 이들은 폴리곤 모델과 분할 된 폴리곤이 트리 노드 안에 이미 저장되어 있습니다.BSP의 다각형

하지만 내 것이 아니므로 다각형이 없습니다. 모든 노드는 절단 평면입니다 (예 : 정상 및 원점 거리로 표시). 따라서 나무는 여전히 모든 컷으로 정의 된 견고한 3D 볼륨을 나타냅니다. 그러나 시각화를 위해이 볼륨의 다각형 메쉬가 필요합니다. 어떻게 효율적으로 재구성 할 수 있습니까?

거친 방법은 나뭇잎의 무한한 반 공간을 충분히 큰 면체 (예 : 큐브)로 변환 한 다음 모든 단일 노드를 트리 위로 위쪽으로 밀어 모든 노드 평면이 통과하도록합니다. 나무가 불균형해질 수 있으므로 (예 : 볼록한 다면체로 어리석은 경우) 매우 비쌉니다. 고전적인 해결책이 있습니까?

+0

나는 그 답을 모른다. 그러나 DOOM 포트에 대한 노드 빌더 (http://zdoom.org/wiki/ZDBSP)에서 일한 사람은 적어도 2D의 경우에는 아마 그렇다. 어쩌면 그 알고리즘을 3D로 확장 할 수 있을까요? – finnw

+0

DOOM 제작자가 필요하다고 생각하지 않습니다. DOOM 맵의 '구역'은 이미 편집기에서 폴리곤으로 만들어져 있으며 BSP 구조로되어 있습니다. 그래서 폴리곤은 이미 이미 있습니다. OpenGL 포트 (예 : zDoom) 서브 시스템의 – dronus

+0

은 닫힌 다각형이어야하므로 섹터가 정상적으로 닫히지 만 분할되고 재구성되어야합니다. – finnw

답변

1

다각형 서페이스를 복구하려면 평면을 교차시켜야합니다. 다각형의 각 꼭지점은 세 평면과 두 평면이 교차하는 각 모서리의 교차점에 의해 생성됩니다. 그러나 이것을 효율적이고 수치 적으로 안정하게 만드는 것은 결코 쉬운 일이 아닙니다. 그래서 qhull의 일부인 qhalf을 사용하도록 제안합니다. qhalf의 입력 및 출력에 대한 문서는 here입니다. 물론 qhull (및 qhalf의 기능)을 library으로 사용할 수 있습니다.