2013-02-21 1 views
2

현재 3D 삼각형에 대한 경계 체적 계층 만 구현 중입니다. 안타깝게도 BVH에 대한 모든 설명은 분할을 위해 객체를 정렬하는 부분에서 부족합니다. 우선 저는 균형 잡힌 나무를 목표로하고 중앙값 삭감을 사용하고 싶습니다. 이렇게하면 현재 노드의 분할 축에 대한 공간 기준 후에 삼각형 또는 경계 상자 (AABB) 중 하나를 정렬해야합니다. BB 또는 삼각형의 최대 또는 최소 길이가 적절한 분리를 위해 충분하면 일부 삼각형이 더 커질 수 있으므로 확실히 확신 할 수 없습니다. 또한 경계 상자 또는 삼각형을 비교하는 것이 더 나은지 확신 할 수 없습니다.경계 체적 계층에서 정렬 및 비교하는 방법

문제의 두 번째 부분은 모든 단계를 정렬하는 것이 비용이 많이 드는 것으로 보입니다. 컴퓨터 그래픽의 다른 알고리즘은 사전 정렬 된 목록을 사용하고 분할 기준에 따라 분할합니다. 나는 삼각형을 어떻게 효율적으로 비교할 수 있는지 그리고 어떻게 삼각형을 목록에 포함시킬 수 있는지를 알지 못한다. 그것은 매 단계마다 목록을 정렬해야한다는 것을 의미합니까?

답변

1

발견 한 것처럼 여러 옵션이 있습니다. 생각하는 것이 가장 쉬운 방법은 경계 상자의 중심을 사용하는 것입니다. 최소 좌표로 정렬하고 최대 좌표로 정렬 할 수도 있습니다.

각 축별로 사전 프로세스로 정렬 할 수 있습니다. 그런 다음 각 반복은 분할 할 축과 분할 할 위치를 선택하고 해당 축의 정렬 된 목록에 시작/끝점을 저장하는 것과 관련된 분할입니다.

참조 잉고 월드의 용지 : http://www.sci.utah.edu/~wald/Publications/2007/FastBuild/download/fastbuild.pdf

빨리, 낮은 품질의 접근 방식은 선형 BVH는 - 다음 종류의 모든 삼각형으로, 이러한 모튼 코드로, 공간 충전 곡선을 좌표로 각각의 중심을지도 자신의 모턴 코드를 입력 한 다음 스팬을 상자로 나눕니다.

+0

답변 해 주셔서 감사합니다. 종이에서 행해진 binning과 비용 계산은 내가하고 싶은 일에 많은 도움이 될 것 같습니다. 나는 무엇을 골라야할지 아직도 확신하지 못한다. Centroids는 좋은 생각 인 것처럼 보이지만 min과 max로 정렬하는 것에 비해 단점이나 장점을 보지 못합니다. 또한 시작/끝점을 저장하는 것이 어떻게 도움이되는지 이해하지 못합니다. – funkysash

+1

중력을 사용하십시오. Min과 Max는 길고 지향적 인 삼각형의 일반적인 경우가 있지만 min과 max의 특별한 논리를 원하지 않는 경우에 squirrely입니다. 정렬 된 목록으로 시작/끝 인덱스는 하나의 상자에 속하는 범위를 나타냅니다. 재발 할 때 범위를 세분합니다. –

1

SAH (Surface Area Heuristic)는 raytracing에 사용되는 BVH에서 삼각형 집합을 분할 할 위치를 평가하는 가장 일반적인 방법입니다. PBRT book (http://www.pbrt.org)의 4 장에 대한 설명이 나와 있습니다. 여기에서 무료로 사용할 수 있습니다 : http://pbrt.org/pbrt-2ed-chap4.pdf

레이 트레이싱에 막연한 관심이있는 경우 완전한 책을 구입하는 것이 좋습니다.