프로그래밍 2014. 4. 21. 10:59
728x90

 

bsp 트리 ( bsp tree ) - 전체 테스트 코드입니다.

 

 

Vector4* pList[1000];
Vector4* pListAlloc = NULL;


int iListCount = 0;
int iLoopCount = 0;
int iCamCullCount = 0;

 

 

void Z_Test()
{

#define NUM    5

 

 //테스트용 배열값 생성

 Vector4* vP = new Vector4[NUM];

 for( int i=0; i<NUM; i++ )
 {
  vP[i] = Vector4( i*10, 5, i*10, 0 );
 }


 if( pListAlloc )
  qDeleteA( pListAlloc );
 pListAlloc = new Vector4[1000];

 

 //Top 할당
 BSPTree* pT = new BSPTree();

 //트리 생성
 Make_Tree( pT, vP, NUM );

 

 //
 iListCount = 0;
 iLoopCount = 0;
 iCamCullCount = 0;

 

 

 //bsp 트리 검색 테스트 

 int iIdx = NUM/2;
 Collect_BSP( pT, vP[iIdx], 0.1f );

 

 //bsp 트리 검색 테스트
 //Cam_Collect_Leaf( pT, QManagerActor::I()->_mpCamera );

 

//Collect_BSP 을 호출하면

//검색된 값은 pListAlloc 리스트에, iListCount 갯수 만큼 저장됩니다.

 

//렌더링시, 카메라 테스트 일때만 sort

if( iListCount > 0 )
 {
  qsort( pListAlloc, iListCount, sizeof(Vector4), _sortDist );
 }

 

 Delete_BSP( pT );

 qDeleteA( vP );
 qDeleteA( pListAlloc );


}

 

어차피, 테스트 이므로,

심플하게 ^^,

 

루프 돌리면서,

생성, 삭제를 지속적으로 반복 했습니다만,

 

뭐, 다들 아시겠지만,

실제로는 이렇게 하면 프레임 저하가 큽니다,

 

 

1. bsp 트리 생성

Make_Tree()

 

영역 분할,

이전에 설명된 코드에서는 빠져 있지만,

트리의 영역의 크기도 저장됩니다.

 

 

2. bsp 트리 제거

Delete_Tree()

 

 

3. bsp 트리 검색

Collect_BSP()

위치 검색을 테스트 하기 위해 추가한 함수입니다.

 

포지션 하나를 주고,

구성된 트리상에서,

그 포지션에 가장 가까운 값을 찾아보았습니다,

 

배열의 값이 매우 커지더라도, (10000 ~ 100000 )

거의 10번 이내의 트리 검색만으로 값을 찾을 수 있습니다,

 

 

4. bsp 트리 검색

Cam_Collect_Leaf()

카메라 가시성 테스트를 위해 추가하였습니다.

 

테스트 할때는 실제 모델 파일을 불러와서 화면에

직접 draw 하면서 테스트 해본 것입니다.

 

위 코드에서는 렌더링 부분은 빠져 있습니다.

sorting 은 렌더링을 위해 추가한 것입니다.

 

GameGems5 권에서는 sort 없이

tree 구조 만으로도 카메라에 정렬된 값이 출력되는 것 같았습니다만,

제가 구성한 코드에서는 카메라 거리에 따른 정렬이 되지 않기 때문에,

추가적으로 sort 해주어야 합니다.

 

이 부분은 좀더 책의 코드를 살펴 볼 생각입니다.

 

현재 작성된

Cam_Collect_Leaf()

퍼포먼스가 좋지 못합니다.

 

카메라 거리값에 대한 전처리와, 좀더 단순화시킨 계산으로

보완이 필요합니다.

 

 

 

 

728x90

'프로그래밍' 카테고리의 다른 글

BSP 트리 ( bsp tree ) - 06  (0) 2014.04.21
BSP 트리 ( bsp tree ) - 05  (0) 2014.04.21
BSP 트리 ( bsp tree ) - 03  (2) 2014.04.21
BSP 트리 ( bsp tree ) - 01  (0) 2014.04.20
BSP 트리 ( bsp tree ) - 02  (0) 2014.04.20
posted by BK dddDang
: