반응형

전체 글 702

4.2.6 회전된 AABB로부터 재계산된 AABB

4개의 축조정 방식은 회전된 AABB를 새로운 AABB로 감싸는 방법이 가장 간단하다. 이방법은 AABB보다 간단하다. 처음 AABB보다 거대해진 AABB는 로컬공간의 원점의 회전으로부터 계산된 AABB는 중요하다. 아니면, AABB는 점점 커지면서 이전시간으로 돌아가면서 회전된 AABB를 반복적으로 계산한다. AABB의 A는 회전행렬 M에 의해 영향을 받으며 OBB의 A'의 결과를 갖는다. 회전행렬의 3개의 열(또는 행, 행렬에 따라 다름)은 로컬좌표 프레임에서 A'의 월드좌표축으로 반환한다.(벡터가 열벡터이고, 오른쪽 행렬에 곱해지면,M의 열은 축이다. 만약 벡터가 왼쪽행렬에 행벡터로 곱해지면 M의행은 축이다.) A는 최소-최고점 표현방식이고, M은 열행렬이라고 치자. 월드좌표축으로의 A'의 회전된 ..

컴퓨터 공학 2015.11.26

4.2.5 객체표현의 언덕오르기 점으로부터의 AABB

AABB축 재조정의 속도를 향상시킬수 있는 또다른 방법은 정점을 빠르게 찾아낼수 있는 이웃정점의 표현 방식이다. 이와 같은 표현은 새로운 AABB의 극점을 간단한 언덕오르기 기법을 통해 정의 할 수 있도록 한다.(4.7 참조) 최소점,최고점 규모 값을 파악하고있는 대신에, 6개 정점이 유지된다. 앞서의 같은 값을 갖는 것처럼 이것들은 각각의 축에 관해 객체의 극점을 가리킨다. 만약 그점들이 이전과 같이 극값을 갖는다면 이웃의 정점에 관한 언급된 점들을 비교함으로써 언덕오르기 단계가 진행된다. 이 극점들은 이웃점들로 대체되지 않고, 검사는 극점의 방향을 찾을 때 까지 지속된다. 로컬좌표계에서 최소점에서 겹치지 않는것처럼, 언덕오르기과정은 객체를 블록하도록 요구한다. 이 이유에서, 블록하지 않은 객체의 블록..

컴퓨터 공학 2015.11.26

4.2.4 원래의 점으로부터의 AABB의 복원

좌표계에서의 축 재조정과 같은 AABB의 크기 재조정이 동적으로 이루어지는 비법이 이번 절에서 설명된다. 꽉 맞는 경계 상자처럼, 기본이 되는 기하적인 경계 객체는 검사를 하고, 경계 상자는 6개의 다른방향의 극점을 찾아서 생성된다. 근접점은 정점벡터에서 방향벡터로의 투영을 통해 계산된다. 그러므로, 정규화는 필요없다. 이 과정은 다음 코드에서 그려지며, 이것은 가장 가까운점과 가장 먼 점을 찾아낸다. void ExtreamPointsALongDirection(Vector dir,point pt[],int n,int *imin,int *imax){float minproj=FLT_MAX,maxproj=-FLT_MAX;for(int i=0;i

컴퓨터 공학 2015.11.26

4.2.3 객체 경계 구로부터의 AABB

완벽하게 피하는 첫번째 방법은 객체의 어느 방향이든 포함할수 있도록 크게 만들어서 AABB를 재가공하는 것이다. 고정된 크기의 충분히 아우르는 AABB는 포함된 객체 A의 경계 구의 경계 상자처럼 계산된다. 경계구는 (차례대로) 객체 A를 회전시키는 중앙에 중심점 P가 있다. 그것의 반지름 r은 중심으로부터의 거리를 말한다. 이 표현방식의 이점은 AABB 업데이트가 간단하다는것, 그리고 어떤 객체 회전은 완벽하게 무시된다.하지만, 경계 구 자신은 이러한 장점은 갖는다. 그러므로, 경계 구는 잠재적으로 개선된 방식으로 고려되어야한다.

컴퓨터 공학 2015.11.26

4.2.2 계산 및 갱신 AABB

경계 용량은 보통 객체의 모델좌표공간에서 구체화된다. 2개의 경계 용량사이의 겹침 여부를 검사하기위해서, 그용량은 보통 좌표계시스템으로 변형되어야 한다. 한 객체의 좌표계가 다른 객체의 좌표계로 변형되는것은 옵션이다. 로컬좌표계로의 변형의 장점은 월드좌표계에서의 계산량의 절반이라는 점이다. 그리고 월드좌표계보다 로컬좌표계에서의 계산은 더 딱 들어맞게된다. 4.4절에서 그 개념에대해 설명한다. 월드좌표계에서는 AABB객체의 A,B는 재계산해야 한다.(4.4a참조). 하지만, B객체의 좌표계에서는 그 객체는 분리되는것을 발견 할 수 있다.(4.4c 참조) 정확성은 로컬좌표계에서의 계산에서 또다른 중요한 이유중 하나이다. 월드좌표계 검사는 원점에서 멀리 떨어질수 있다. 원점에서 멀리 떨어진 물체를 검사하는 것..

컴퓨터 공학 2015.11.26

4.2.1 AABB-AABB 교차

AABB의 겹침 검사는 표현방식에 상관없이 간단하다. 두개의 AABB는 세개의 축으로 그들의 차원에 따른 크기에 일치하는 축으로 겹침이 이루어진다. 최소-최고점 표현에서는 이 간격의 겹침검사가 된다:int TestAABBAABB(AABB a,AABB b){if(a.max[0]b.max[0]) return 0;if(a.max[1]b.max[1]) return 0;if(a.max[2]b.max[2]) return 0;return 1;} 최소-길일 표현방식은 덜 매력적이다. 이것의 겹침 검사는, 심지어 경제적으로 쓰여도, 첫번째 검사가 행해진다. :int TestAABBAABB(AABB a,AABB b){float t;if((t=a.min[0]-b.min[0])>b.d[0]||-t>a.d[0]) return ..

컴퓨터 공학 2015.11.26

4.2 AABB

AABB는 가장 흔히 사용되는 경계 용량중 하나입니다. 이것은 직사각형 6면을 가진 상자입니다.(각각의 면의 법선벡터는 x,y,z축에 각각 평행합니다.) 최고장점은 빠른 겹침검사를 한다는것, 이것은 간단하게 개인좌표계로 비교할수 있습니다. AABB를 나타내는 3개의 방식이 있습니다. 첫번째는 최소점,최고점을 설정하여 검사하는것입니다. struct AABB {Point min;Point max;}; 이 표현은 min과 max사이에 있는 공간에 대해서 검사를 합니다. 또다른 표현은 최소점과 x,y,z의 길이를 설정하는 것입니다. struct AABB{Point min;float d[3];}; 마지막 표현은 중앙에 점 C가 있고, x,y,z의 반지름을 적는것입니다. struct AABB{Point c;floa..

컴퓨터 공학 2015.11.26

4.1 바람직한 경계용량의 특징들

모든 기하 객체에게 효율적인 경계 용량이 있는 것은 아니다. 경계 용량의 장점은 이것이다.:-적은 연산의 교차검사-딱 들어맞는다.-적은계산-회전또는 변형에 용이-적은 메모리 사용 경계용량의 핵심아이디어는 세밀한 기하검사가 상대적으로 적은 연산의 겹침검사를 통해 진행된다는 것이다. (안겹칠경우 다음의 디테일한 검사를 안하는것) 적은 연산의 겹침검사를 사용하기위해서는, 경계용량은 최대한 간단한 기하형태를 가져야한다. 동시에, 가능한한 빠른-탈출 검사와 디테일한 검사간의 균형을 맞춰야 한다. 교차검사는 같은 타입의 경계용량뿐만 아니라다른 타입의 경계에 대해서도 검사가 이루어져야 한다. 추가적으로, 검사는 점을 포함하는지, 용량의 반직선에 교차하는지, 그리고 평면과 폴리곤이 교차하는지 여부를 포함해야한다. 경계..

컴퓨터 공학 2015.11.26

경계 용량

기하적으로 떨어진 두개의 객체를 서로가 서로에게 충돌여부를 검사하는것은 매우 많은 연산을 필요로 하고, 특히 객체가 수백,수천개의 폴리곤으로 구성할 경우 기하급수적으로 연산량이 늘어납니다. 연산량을 줄이기 위해, 객체 경계 용량은 종종 기하적 교차 검사가 이루어지기 전에 먼저 겹쳐지는지 검사를 합니다. 하나의 경계 용량은 복잡한 자연의 객체를 하나 혹은 여러개의 간단한 단일 용량으로 압축한 형태입니다. 이 아이디어는 복잡한 객체의 경계를 좀더 간단한 연산으로 대체할수 있도록 해줍니다. 경계 용량은 사용하면 겹침 거부 검사를 할수 있습니다. 왜냐하면 경계 용량은 오직 복잡한 경계 구조물이 한번의 검사만을 통해서 적절한 결과값을 반환해주기 떄문입니다.(4.1절 참조) 물론, 객체가 정말로 겹쳐졌다면, 추가적..

컴퓨터 공학 2015.11.26
반응형