변환-> 이동, 회전, 크기조절, 등등 (행렬로 관리) : 시험 문제
Basic geometric transformation : 시험문제
- Translation : 이동한 양을 더해준다.
-> 행렬
- Scaling : 원점으로부터 거리가 멀어진다.
- Rotation
basic
1. x-axis rotation
2. y-axis rotation
3. z-axis rotation
Advanced geometric transformation : 시험문제
3D Rotation Type1(축과 평행) -> 평행인 축을 축으로 가져옴 -> 회전 -> 다시 축이 있던 위치로 이동
3D Rotation Type2(임의의 축은 축과 평행하지않음) -> 축은 (x1,y1,z1)과 (x2,y2,z2)을 이어진 선
1. (x1,y1,z1)을 원점으로 가져온다.(Translate)
2. yz 평면에 투영을 시킴 -> 알파 값을 찾을 수 있음
-> 알파값을 이용하여 xz축에 투영. (x축 회전)
3. xz에 투영된 값을 z축으로 투영 시켜야함.(베타값을 구해서) -> y축 회전
4. 회전 연산
5. 역행렬도 다시 원위치로 만듦
역행렬이 앞에 나오는 이유 -> 행렬의 계산은 뒤에서부터 실행되기 때문이다.
회전행렬의 역행렬 -> 이동행렬
Homogeneous Coordinate in Mathematics : 동차좌표계
-> 연산량이 줄 수 있다.(계산 효율성 개선)
-> 100만개의 버텍스를 scale->rotation->translate하면 총 300만 번의 연산이 들어감
-> 행렬도 3x3으로 곱셈 200만 번, 더하기 100만 번 연산이 필요
-> homogeneous를 사용하면 C=T(이동)R(회전)S(스케일) -> 4x4행렬이 되며 100만 번 의 연산이 한 번 들어감
Fixed-point scaling
해당 점을 기준으로 스케일을 키우려면
1. 점을 원점으로 이동시킨다.
2. 스케일을 키운다.
3. 처음 점의 위치로 이동시킨다.
=> 해당 점에서 스케일이 커진것 처럼 보임
3D Rendering in Pipeline
1. Modeling Transformation //3D
좌표계
1) Modeling (local) coordinate 각 모델당 1개
2) World coordinate 전체에 1개
2. Viewing Transformation //3D
3. Projection Transformation //2D 3D에서 2D로 변환
view는 2가지 방식이 있다.
1) Orthographic : 정확한 수치로 그려준다. 건축에 많이 사용
-> 원본 크기로 그려줌 (정육면체를 그리면 모든 선이 평행해서 만나지못함)
2) Perspective : 실제 보이는 것 처럼 그려준다. 게임에 많이 사용
-> 멀면 작게보이고 가까우면 크게보임 (정육면체 그리면 모든 선이 평행하지않고, 선끼리 만날 수 있다)
실제 카메라 구현을 위해서는
1) 렌즈 굴곡
2) 모션블러
3) DoF
를 구현해야함.
4. Viewport Transformation //2D 모니터 크기에 따른 위치값 변경
'학교수업' 카테고리의 다른 글
인공지능개론 5주차 (0) | 2022.04.10 |
---|---|
컴퓨터 구조 5주차 (0) | 2022.04.09 |
윈도우즈프로그래밍 4주차 (0) | 2022.04.01 |
컴퓨터구조 4주차 (0) | 2022.04.01 |
컴퓨터 그래픽스 기초 4주차 (0) | 2022.03.30 |