Chapter2 기술적 배경 지식 09052003 구희모 09052004 권영우
2.1 공간과 변환 Spaces and Transformations 대부분의 컴퓨터 그래픽스와 컴퓨터 애니메이션은 데이 터 변환을 주로 다룬다. 애니메이션화 1). 객체 데이터의 합성 환경을 만들기 위해 정의 된 공간에서 세계 공간으로 변환 2). 객체 데이터를 시간함수로 변환 3). 데이터를 화면상에 보여주기 위해 변환 그래픽스에서 변환을 표현 하는 주요 방법은 4X4(4행 4열) 변환 행렬을 이용 - 변환 행렬은 회전, 이동과 확대/축소의 조합을 표현하는데 이용.
2.1 공간과 변화 좌표 공간은 왼손이나 오른손 좌표계로 정의 할 수 있다. Y (b) Y (a) Z X X Z 왼손 좌표계 (b). Z축은 오른손 좌표 시스템을 위해 페이지 바깥쪽으로 나온다.
2.1.1 디스플레이 파이프라인 (Display Pipeline) 디스플레이 파이프라인이란? - 객체의 데이터를 원래의 정의된 공간 에서 여러 공간들을 거쳐 최종적으로 화면상에 투상 될 때까지 거치는 변환 을 말한다. 객체 데이터는 조명을 효율적으로 계산 하고, 관측 볼륨(view volume)에 맞게 그 데이터를 자르고, 투시 변환을 하기 위해서 다른 공간들로 변환 된다.
2.1.1 디스플레이 파이프라인 (Display Pipeline) 객체 공간(object space) - 객체가 원래 정의되었던 공간 - 보통 원점 주변에 놓여 있고, -`1 ~ 1 사이 와 같이 한정된 표준화된 범위(range)안에 있다. 객체 공간 ↓ 세계 공간(광원과 관찰자가 있는 공간)
2.1.1 디스플레이 파이프라인 (Display Pipeline) 세계 공간 ↓ 눈공간 ↓ 이미지 공간 ↓ 화면 공간
2.1.1 디스플레이 파이프라인 (Display Pipeline)
광선 추적법
애니메이션의 제작 단계 시간의 흐름에 따라 객체의 위치와 방향성 조정 시간의 흐름에 따라 객체의 모양을 조정 시간의 흐름에 따라 객체의 디스플레이 속성 조정 시간의 흐름에 따라 세계 공간에서 관찰자의 위치와 방향 변환
2.1.2 동질 좌표계와 변환 행렬 컴퓨터 그래픽스는 동질 좌표계로 종종 표현한다. -3차원의 점을 4개의 원소로 갖는 벡터로 표현 그렇게 표현한 점의 좌표는 4번째 성분을 앞의 3개를 나눈 것이 된다. (x/w, y/w, z/w) = [x, y, z, w] 4번째 성분이 1이 되는것이 전형적 공간상의 점은 아주 단순한 동질 좌표계 의 표현
2.1.2 동질 좌표계와 변환 행렬 회전, 이동, 확대/축소의 기본 변환은 4X4행렬로 나타낼 수 있다.
2.1.3 변환 합성하기 : 변환 행렬 곱하기 변환을 정방 행렬로 표현하는 주된 이유 → 하나의 합성 변환(결합)을 하기 위해서 일련의 합성 변환 행렬 M을 한 점 P에 적용할 수가 있다. - 여러 점에 같이 적용할 때 유용 P’ = MP 행렬의 곱셈 결합 법칙은 성립 하지만 교환 법칙은 성립하 지 않는다. ((AB)C = A(BC)) → O (AB ≠ BA) → X
2.1.4 기본 변환 강체 변환 : 일반적인 회전과 이동의 조 합 - 공간상의 그 위치와 방위만 변하고 객체의 공간적 용량은 변하지 않기 때문 유사 변환 : 기본변환들의 임의의 조합 - 기본변환 : 회전, 이동, 축적 - 강체 변환에 균등 축적을 허용한 변환 이 변환들은 객체의 고유의 성질과 절대 거리가 아닌 상대 거리를 유지
2.1.5 임의의 방위 표현 강체변환(이동과 회전으로 구성)은 기하학적 변형 없이 장면 주위에 객체를 이동하는데 매우 유용 - 이동 다음에 회전으로 표현 회전 변환은 객체 공간에서 객체 정의에 비례하여 객체의 회전을 표현 - 고정각 표현법(Fixed Angle Representation) → 방위를 표현하는 방법 중 하나로써 주 축(Principal axis) 주변의 일련의 회전을 하는 것 - 방향 코사인 행렬(Matrix of direction cosine) → 희망 방위로의 변환을 표현
2.1.6 행렬에서 변환을 구하기 변환된 단위좌표계의 정의부분 이동을 나타내는 부분
2.1.7 디스플레이 경로에서 변환의 묘사 객체 공간에서 세계 공간으로의 변환 - 객체 데이터의 변환된 사본을 세계 데이터 구조에 두기 위해 사용자가 지정한 일련의 회 전과 축척을 실행하는 것 세계 공간에서 눈 공간으로의 변환 - 투시 변환을 준비하기 위해, 세계 공간의 모 든 객체 데이터에 강체 변환을 하는 것. -투시 행렬 곱하기와 투시적 나누기 실행
2.1.7 디스플레이 경로에서 변환의 묘사 이미지 공간에서 화면 공간으로의 매핑 - 투시변환(투시 행렬을 곱한 후 투시적 나누기)을 한 결과 를 가시 요소 [-1,+1]의 범위로 매핑 - 눈 공간에서의 변환 후에 절단이 행해지면 계산 적으로 더 단순해 진다. - 투시적 나누기 이전의 z방향의 절단을 실시하는 것이 중요 (관찰자 뒤 객체가 화면에 투상 되는 것을 방지 )
2.1.8 오차 고려사항 누적된 절삭 오차 해결 방법 1). 적용시 마다 변환 행렬을 새롭게 수정 2). 객체 공간의 세계 공간의 위치로 옮기는 변환 행렬을 증분해 수정 3). 델타 값을 각의 변수 누적 값에 더해서 그 각 매개 변수로부터 y축 회전 행렬 만들기 4). 직교 정규화 5). 축척의 고려
2.2 방위 표현(Orientation Representation) 컴퓨터 애니메이션에서 공통된 논점이 2가지 있다. 1. 공간에서 object(객체)의 위치와 방위를 표현하는 최선의 방법은? 2. 시간이 지남에 따라 표현된 변화를 어떻게 보간(interpolation)할 것인가? 전형적인 방법은 한 객체의 2가지 프레임을 지정하고 컴퓨터를 이용해서 중간 상태를 보간하여 애니메이션된 키 프레임 동직을 만드는 것이다. 또, 다른 방법으로는 객체가 2개 이상 연속적인 변환을 수행할 때, 객체들의 수 많은 정점들에 적용하기 전에 이들 변환을 하나의 표현으로 결합해 서 효과적으로 처리하는 방법이 있다.
2.2 방위 표현(Orientation Representation) 객체의 방위와 위치를 표현할 때 보통 4x4 변환 행렬(동차 행렬)을 쓴다. 이 동차 행렬(Homogeneous Matrix)를 쓰는 이유는 이동(Translation), 축소/확대(Scale), 회전(Rotation)이 쉽기 때문이다. 1 좌측 상단 3x3행렬은 회전에 관여하고 4열의 3요소는 이동에 관여한다. 즉, 이동과 회전을 별개로 보간 할 수 있다. (방법은 생략)
2.2 방위 표현(Orientation Representation) 동차행렬을 사용해서, 이동을 보간 하는 것은 상대적으로 간단한 일이지만 회전을 보간 하는 것은 그렇지 않다 Ex) 정육면체가 있는데 그것을, y축으로 -90도 만큼 회전시킨 프레임과 y축으로 +90도 만큼 회전시킨 프레임을 보간 하면 무의미한 중간 행렬(상태)가 만들어 진다. 그래서 변환 행렬로 직접 보간 하는 것보다 다른 표현법을 이용해서 보간을 표현한다.
2.2.1 고정 각 표현법(Fixed Angle Representation) 고정 각 표현은 실제로 “고정된 축(axis) 주변으로 회전하는데 사용한 각"을 말 한다. 여기서 “고정된 축"이란 x-y-z축의 순서로 객체의 방위를 표현하는 것이다. Ex) 어떠한 객체의 방위가 Rz(90)Ry(45)Rx(10)이라면 x축으로 10도, 다음으로 y축으로 45도, 다음으로 z축으로 90도 회전시켜 객체의 방위를 결정한다는 것이다. 하지만 이 방법의 문제점은 3도의 자유도를 가진 관절 주변을 움직일 때 2개의 회전축이 나란히 한 줄이 될 수 있다는 것이다. 이 효과를 짐벌락(Gimbal Lock) 이라고 한다.
2.2.1 고정 각 표현법(Fixed Angle Representation)
2.2.2 오일러 각 표현법(Euler Angle Representation) 오일러 각 표현은 회전 축이 x,y,z축의 전역 축이 아니고 그 객체에 붙어있는 지역 좌표계를 써서 표현하는 방법이다. (x축을 피치(Pitch), y축을 롤(Roll), z축을 요(Yaw)라고 한다.) 하지만 지역 좌표계도 결국 전역 좌표계에서 회전 상수들을 곱하는 것이기 때문에 고정 각 표현법과 정확하게 똑같은 장점과 단점을 가지고 있습니다.
2.2.3 각과 축(Angle and Axis) 각과 축 방법은 오일러 회전 정리를 이용한 것인데 오일러 정리는 한 객체의 어떠한 두 방위에 대해서 한 방위는 임의의 한 축에 대 해서 다른 방위를 한번 회전해서 만들어 진다는 의미이다.
2.2.3 각과 축(Angle and Axis) 이 오일러 회전 정의로 인해, 어떤 방위도 세 개(위도, 경도, 사이각)로 표현할 수 있게 된다. 위도와 경도는 3차원 벡터로 표현할 수도 있다. 두 객체의 방위의 중간 값은 각 객체끼리 방위의 회전으로 표현하는데 이 회전의 축은 외적으로 구한다. 두 객체의 사이각은 내적의 역 코사인을 취하여 결정한다. 하지만 일련의 회전을 누적할 때는 쉽게 사용할 수 없다. 그러나, 이 표현법에 포함된 정보는 연산들이 쉽게 구현되는 형태로 나타낼 수 있는데, 이것을 사원수(Quaternions)라고 한다.
2.2.4 사원수(Quaternions) 는 도저히 모르겠습니다.
2.2.4 사원수(Quaternions)
2.2.4 사원수(Quaternions)