The Graphics Rendering Pipeline Transforms

Slides:



Advertisements
Similar presentations
2. 속력이 일정하게 증가하는 운동 Ⅲ.힘과 운동 2.여러 가지 운동. 도입 Ⅲ.힘과 운동 2. 여러 가지 운동 2. 속력이 일정하게 증가하는 운동.
Advertisements

강의 내용 : 카메라 DirectX 9 을 이용한 게임 개발 기본 코스. 목 차 카메라 요구사항 구현.
1. 도형의 연결 상태 2. 꼭지점과 변으로 이루어진 도형 Ⅷ. 도형의 관찰 도형의 연결상태 연결상태가 같은 도형 단일폐곡선의 성질 연결상태가 같은 입체도형 뫼비우스의 띠.
수학을 통해 배우는 IT 과학의 세계 전북대: 한상언 교수.
Multimedia Programming 14: Image Warping 2
컴퓨터와 인터넷.
작도에 대하여 조사자 : 이준호 담당선생님 : 박문열 선생님.
적분방법의 연속방정식으로부터 Q=AV 방정식을 도출하라.
5. 좌표변환과 OpenGL행렬 이론.
OpenGL 발표일 : 발표자 : 조윤혜.
Two-Dimensional Geometric Transformations
Entity Relationship Diagram
모 바 일 게 임 제 작 한국IT전문학교 박재성.
사원수 (Quaternion)
Windows Server 장. 사고를 대비한 데이터 백업.
질의 사항 Yield Criteria (1) 소재가 평면응력상태에 놓였을 때(σ3=0), 최대전단응력조건과 전단변형에너지 조건은σ1 – σ2 평면에서 각각 어떤 식으로 표시되는가? (2) σ1 =σ2인 등이축인장에서 σ = Kεn로 주어지는 재료의 네킹시 변형율을 구하라.
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
멀티미디어 시스템 (아날로그 이미지,신호를 디지털로 변환 방법) 이름 : 김대진 학번 :
Chapter2 기술적 배경 지식 구희모 권영우.
상관함수 correlation function
컴퓨터 프로그래밍 : 실습3 2장 데이터와 식.
3차원 객체 모델링.
Ⅱ. 지구의 변동과 역사 1. 지구의 변동 2. 지구의 역사 3. 우리나라의 지질.
Trigonometric Function
별의 밝기와 거리[2] 밝다고 가까운 별은 아니야! 빛의 밝기와 거리와의 관계 별의 밝기 결정.
자바 5.0 프로그래밍.
피타고라스 정리 Esc.
Chapter03 캔버스(1) HTML5 Programming.
Quiz #7 다음 수들을 합병 정렬과 퀵 정렬 알고리즘을 이용하여 오름 차순으로 정렬하였을 때, 데이터 이동 회수를 각각 구하라. 여러분은 정렬 과정을 단계별로 보이면서 이동 회수를 추적해야 한다. 단, 퀵 정렬시에 피봇으로 배열의 왼쪽 첫 번째 원소를 선택한다. 5.
뇌를 자극하는 Windows Server 2012 R2
TFT-LCD 구조 동작원리 응용분야.
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
3D 프린팅 프로그래밍 01 – 기본 명령어 강사: 김영준 목원대학교 겸임교수.
Moving Control in Web using Ajax Toolkit
Clipping 이진학.
4장 기하학적 객체와 변환 - 기하 1장 – 그래픽스 시스템과 모델 2장 – 그래픽스 프로그래밍 3장 – 입력과 상호작용
COMPUTER ANIMATION (Key Frame Animation)
정다면체, 다면체와 정다각형, 다각형의 관계 한림초등 학교 영제 6학년 5반 송명훈.
P 등속 직선 운동 생각열기 – 자동차를 타고 고속도로를 달릴 때, 속력계 바늘이 일정한 눈금을 가리키며 움직이지 않을 때가 있다. 이 때 자동차의 속력은 어떠할까? ( 속력이 일정하다 .)
다면체 다면체 다면체: 다각형인 면만으로 둘러싸인 입체도 형 면: 다면체를 둘러싸고 있는 다각형
WPF 3D 그래픽 발표자 : 조 현 민.
CAD 실습 2013년 2학기.
균형이진탐색트리 이진 탐색(binary search)과 이진 탐색 트리(binary search tree)와의 차이점
끓는점을 이용한 물질의 분리 (1) 열 받으면 누가 먼저 나올까? 증류.
Real time Interaction HyoungSeok Kim
1. 선분 등분하기 (1) 주어진 선분 수직 2등분 하기 ① 주어진 선분 AB를 그린다. ② 점 A를 중심으로 선분AB보다
서울대학교 컴퓨터공학부 김명수 행렬과 2차원 변환 서울대학교 컴퓨터공학부 김명수
2장 변형률 변형률: 물체의 변형을 설명하고 나타내는 물리량 응력: 물체내의 내력을 설명하고 나타냄
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
Chapter 1 단위, 물리량, 벡터.
DA :: 퀵 정렬 Quick Sort 퀵 정렬은 비교방식의 정렬 중 가장 빠른 정렬방법이다.
(생각열기) 요리를 할 때 뚝배기로 하면 식탁에 올라온 후에도 오랫동 안 음식이 뜨거운 상태를 유지하게 된다. 그 이유는?
Chapter 1 단위, 물리량, 벡터.
3D 프린팅 프로그래밍 03 – 도형 회전 (손잡이컵 만들기) 강사: 김영준 목원대학교 겸임교수.
1. 접선의 방정식 2010년 설악산.
1. 정투상법 정투상법 정투상도 (1) 정투상의 원리
발표자 : 이지연 Programming Systems Lab.
7장 원운동과 중력의 법칙.
상관계수.
기체상태와 기체분자 운동론!!!.
컴퓨터공학과 손민정 Computer Graphics Lab 이승용 교수님
Ⅳ. 제도의 기초 1. 물체를 나타내는 방법 3) 물체의 표현 방법 (2) 입체도법 지도학급 : 태화중학교 1학년 4반
정삼각형을 정사각형으로 바꾸는 원리 탐구 하귀초등학교 6학년 고지상.
게임수학 제 8 장 고급 렌더링.
.Net FrameWork for Web2.0 한석수
수치해석 ch3 환경공학과 김지숙.
교착 상태 해결 : 교착 상태 탐지 교착 상태 탐지(Deadlock Detection)
: 3차원에서 입자의 운동 방정식 제일 간단한 경우는 위치만의 함수 : 시간, 위치, 위치의 시간미분 의 함수
Lecture #6 제 4 장. 기하학적 객체와 변환 (1).
Presentation transcript:

The Graphics Rendering Pipeline Transforms 저는 그패픽스 렌더링 파이프 라인과 변환에 대하여 발표할겁니다.

순서 그래픽 렌더링 파이프라인에 대한 소개 변환 기본변환 특수한 행렬변환과 연산 Q & A

The Graphics Rendering Pipeline 그래픽 렌더링 파이프라인의 주된 기능! 은 가상 카메라, 3차원 객체, 광원 , 조명 처리 모델, 텍스처 등이 주어졌을때 그것으로 부터 2차원 이미지를 만들어 내는 것, 다시 말해서 렌더링 하는 것이다. 그래서  그래픽 렌더링 파이프라인은 실시간 렌더링의 기반 도구 라고 할 수 있다. 각각의 구현방법에 초점을 맞춘것이 아니라 그 기능에 초점을 맞춰 논의 되고 설명될것이다.

응용 단계 Application Stage Architecture 응용 단계 Application Stage 기하 단계 Geometry Stage 래스터화 단계 Raster Stage 위 구조는 실시간 컴퓨터 그래픽스 응용프로그램에서 활용된다. 아키텍처는 실시간 컴퓨터 그래픽스 응용프로그램에서 활용된다.   또한 각 한나의 단계는 그자체로 또하나의 파이프라인이 된다. 다시말해 하나의 단계가 여러개의 부분 단계들로 구성된다는 것이다. 참고할 것은 ... 구현방법상 두개의 기능적 단계들을 하나의 파이프라인으로 단계단계로 결합할 수도 있고ㅡ 시간이 만ㅇㅎ이 걸리는 기능 단걔ㅖ를 여러 개의 차이츠라인 다계들로 분할 하고나, 심지어 병렬화하는 것도 가능하다.

응용 단계 기하 단계 래스터화 단계 참고할 것은 ... 구현방법상 두개의 기능적 단계들을 하나의 파이프라인으로 단계단계로 결합할 수도 있고ㅡ 시간이 만ㅇㅎ이 걸리는 기능 단걔ㅖ를 여러 개의 차이츠라인 다계들로 분할 하고나, 심지어 병렬화하는 것도 가능하다.

응용 단계 이 단계에서 사용자는 장면에 들어있는 모델들을 조작하고 그것을 마우스로 움직일 수 있다. 이 단계에서 사용자는 장면에 들어있는 모델들을 조작하고 그것을 마우스로 움직일 수 있다. 응용 단계 충돌검출 프로세스, 텍스처애니메이션, 변환을 통한 애니메이션, 기하 모핑 그리고 다른 단계에서는 수행될 수 없는 각종 계산 알고리즘등이 있다. 오직 소프트웨어로만 구현이 되므로 개발자가 구현 방법을 전면적으로 바꾸는것도 가능합니다. 속도를 높이기 위해 이 단계에서 폴리곤의 수를 줄여 전체적인 렌더링 속도를 높이기도 합니다.

응용 단계 소프트웨어로만 실행됨 / 부분 단계들로 분할 불가 동일 단계에서 동시에 여러 가지를 실행시키는 구조 가능 여기서 렌더링될 기하구조가 기하단계로 넘어 간다. ↘점, 선, 삼각형, 렌더링될 기본구조등 충돌검출 프로세스, 텍스처애니메이션, 변환을 통한 애니메이션, 기하 모핑 그리고 다른 단계에서는 수행될 수 없는 각종 계산 알고리즘등이 있다. 오직 소프트웨어로만 구현이 되므로 개발자가 구현 방법을 전면적으로 바꾸는것도 가능합니다. 속도를 높이기 위해 이 단계에서 폴리곤의 수를 줄여 전체적인 렌더링 속도를 높이기도 합니다. 소프트웨어 단계라서 부분단계들로 분할 할 수 없으므로여러개의 프로세서에서 병렬적으로 실행시키는 등의 일은 하지 못합니다. 하지만 동일 단계에서 여러가지를 수행할수 있습니다.

기하 단계 소프트웨어/하드웨어 구현 가능 여기서는 기하변환, 투영, 조명처리 등을 다 룬다. 무엇이 그려질 것인지, 그것이 어떻게 그려질것인지, 어디에 그려질 것인지를 계산한다

기하 단계 모델 변환과 시각변환 조명 처리 투영 클리핑 화면 매핑 다각형 단위의 조작이나 정점 단위의 조작을 주로 담당 한다.

기하 단계 . 모델 변환과 시야 변환 모델 변환에 의해 모델의 정점과 법선 벡터 들이 변형된다. Model → World <모델 변 환> 투영과 클리핑을 위해 카메라와 모든 모델 들은 시야 변환에 의해 변형된다. World → Eye <시야변환> 시야변환 : 카메라를 시야 좌표계의 원점에 위치시킨다. 바라보는 방향의 음의 z축, 위 쪽이 y, 오른쪽이 x축이 되도록 합니다. 그 밖의 다른 정교한 변환들이 이곳에서 나 타날 수 있다. (정점 혼합등..) 바라보는 방샹이 음의 제트축 방향을 위쪽이 와이축 오른쪽이 엑스축 방향.. 모델변환과 시야 변환은 4*4행렬로 나타나는데- 이것은 하나의 행렬로 결합 (concatenation)될 수 있다.이렇게 되면 월드 공간은 의미 없어 지겠지… 물체의 좌표는 모델 자표라고 불리며, 모델변환이 이 좌표들에 적둉되고 나면, 그 모델은 월드 좌표계또는 월드 공간에 위치한다고 말한다.   월드 공간은 유일 하며, 모델들이 고유의 모델 변환에의해 변환되고 나면 모든 모델들은 동일한 공간에 존재하게 된다. 카메라가 볼 수 있는 모델들만 렌더링 된다. 카메라는 월드 공간에서 위치와 방향을 가지는데, 이 것들은 카메라가 놓일 위치를 ㅈㅇ하고 지향하는 방향을 정하는 데 사용된다. 투영과 클리핑을 위해 카메라와 모든 모델들은 시야 변환 에 의해 변환된다. 시야 변환의 목표 카메라를 시야 원점에 위치 시키고, 바라보는 방향이 음의 z축 방향을 , 위쪽이 Y축 방향을, 오른쪽이 x 축을 기리키도록 만드는 것이다. 시야변환이 적용된 후에 실제 위치와 방향은 기반이 되는 응용프로그램 인터패이스에 따라 달라진다. 앞서 묘사한 공간을  camera space 라 부르고 좀더 일반적으로 eye space 라 부른다. 모델 변환과 시야 변환은 4*4 행렬로 구현된다. 효율성을 위해서 이들은 실제 모델에 적용되기 전에 하느의 행렬로 결합(concatenation)된다. 그러나 이런 방법으로 행렬들이 결합되면 한번의 변환에 의해 모델이 직접시야 공간으로 이동하므로 월드공간은 의미가 없어진다. 더 정교한 변환이 이 단계에서 일어날 수 있다. 강체들을 부드럽게 연결하기위해 정점혼합방법을 사용할수 도 있다. 손목과 팔이 매끄럽게 연결하기.. 파이프라인에서 정점 셰이더에 의해 적용되는 변환도 표면의 기하 구조를 바꿀 수 있다. ㅋㅋㅋ

카메라 방향 시각 절두체 x z x z 카메라 위치

기하 단계 . 조명 처리와 셰이딩 광원에 의해 영향을 받게 되는 모델들이 정 해지면 조명 계산식을 이용하여 모델의 각 정점 색 상을 계산한다. 표면의 각 정점에서의 색상은 광원의 위치 와 속성, 정점의 위치와 법선 벡터, 정점을 포함하고 있는 물체의 특성(물성)을 이용하여 계산한다. 조명 계산식 써자.

양끝 모서리 (-1,-1,-1)(1,1,1) 단위 정육면체 = 정규시야영역 기하 단계 . 투영 단위 정육면체를 정규 시야 영역 (Cnonical view volume)이라고 한다 직교투영 에서 시야 영역은 보통 직사각형 상자 모양이고 직교투영에의해 이러한 시야 볼륨은 단위 정육면체로 변환된다.   직교 투영의 주된 특징은 평행선이 변환 후에도 평행을 우ㅠ지 한다는 것이다. 이변환은 평행이동과 크기변환의 조합으로 표현된다. 원든 투영은 좀더 복잡하다.여기서는 물체가 카메라에서 멀어질 수록 투영한 후에 더 작게 보인다. 또한 평행성은 수평선에서 한 점으로 수렴 할 수도 있다. 그러므로 원근 투영 변환은 인간이 물체의 크기를 인지하는 방법을 흉내낸것이라고 할 수 있다. 직교투영과 원근 투영변환은 모두 4차원 행렬로 구성될 수 있으며 변환후에 모델은 정규화 된 장치 좌표계 (nomalized device coordinate)에 놓여있다. 이런방법으로 모델은 3차원에서 2차원으로 투영된다. 직교 투영 원근 투영 양끝 모서리 (-1,-1,-1)(1,1,1) 단위 정육면체 = 정규시야영역

( ) 기하단계 . 투영 . 직교투영 직교 투영의 특성은 평행선이 투영을 한 후 에도 평행성을 유지 한다는 것이다. P0 = z 좌표를 0으로 만드는 간단한 직교투영 행렬 P0 = S(s)T(t) ( 1 ) 다시 말해서 3차원을 2차원으로 축소하며, 축소된 자원을 다시 복원할 방법이 없다. 문제는 양의 z값을 가지는 평면과 음의 z값을 가지는 평면이 하나의 투영면으로 투영된다는 것이다.

기하단계 . 투영 . 직교 투영 정규 시야 영역으로 변환하는 이유는 거기서 클리핑하는것이 훨씬 효율적이기 때문이다. 정규시야 영역으로 변환을 한 수 엔더링될 기하 객체의 정점들은 이 정육면체를 기준으로 클리핑 된다. 정육면체의 안쪽에 있는 기하 구조들은 단위 정사각형을 화면에 매핑함으로서 최종적으로 렌더링 된다.

기하단계 . 투영 . 원근투영 물리 적인 설정헤 비헤 좁은 시야각을 사용하면 원근 투영 효과가 적어진다. 그이유는 관측자가 화면 쪽으로 너무 가까워 지기 대문이다. 시야각을 넓게 하면 가까이 있는 물체가 지나치게 크게 보이는 현상이 나타난다. 시야각이 넓을수록 물체들이 더 크고 인상적이라는 느낌을 주며. 주변상황에 대한 더 많은 정보를 제공 할 수 있다는 장점이 있다.

기하단계 . 클리핑 New Vertexs New Vertex 시야 영역에 포함되는 기하 요소만 래스터화 단계로 보내야 한다. 이전단계에서 투영 변환을 한 후 변환된 기하 요소들은 단위 정육면체를 기준으로 클리핑 된다.   클리핑하기 전에 시야 변화과 투영을 수행하는 것이 좋다. 그이유는 투영의 종류와 무관하게 기하 요소들을 항상 단위 정육면체에 대해 클리핑을 하는것이 쉽기 때문이다. 여기까지 좌표는 아직 2차원임. New Vertex 시야 영역에 포함되는 기하 요소만 래스터화 단계로 보내야 한다.

기하 단계 . 화면 매핑 이 과정에서는 각 기하 요소의 화면상에서 의 좌표를 찾아낸다. (x, y, z) 의 윈도우 좌표계 → (x, y)의 화면좌 표계 크기변환 연산과 평행 이동을 연이어서 하 는 것. window Z좌표는 이 매핑에 영향을 받지 않는다 이 화면 좌표값들은 z좌표와 함께 래스터화단계로 넘어간다.

래스터화 단계 모든 기하 요소들이 래스터화 된다. 즉, 위도우상의 픽셀들로 변환된다. 텍스처와 연관된 기하요소들은 거기에 적용된 텍스처와 함께 렌더링 된다. Z-버퍼 알고리즘으로 검사한다. 이전 단계에서 생성된 데이터들을 이용하여 이미지를 만들어 낸다.

Transform

( ) Translation Translation Matrix T t=(tx, ty, tz ) T(t) = T(tx, ty, tz ) = ( 1 tx ) ty tz 평행 이동 행렬의 역행렬은 T^-1(t) = T(-t)이다.

( ) ( ) ( ) Rotation Rx(∮)= Ry(∮)= Rz(∮)= x , y , z 축으로 ∮라디안 만큼 회전시킨다. Rx(∮), Ry(∮), Rz(∮) Rotation ( 1 ) cos∮ -sin∮ sin∮ Rx(∮)= Pitch ( cos∮ sin∮ ) 1 -sin∮ Ry(∮)= Yaw ( cos∮ -sin∮ ) sin∮ 1 Rz(∮)= Roll

( ) ( ) ( ) scaling S(s)= S = or x , y , z 방향으로 각각 확대/축소한다. S(s)=(Sx, Sy, Sz) scaling ( Sx ) Sy Sz 1 S(s)= Example) 물체를 5배 확대 하기 ( 5 ) 1 ( 1 ) 1/5 S = or 1개 또는 3개의 성분이 음수이면 거울 행렬이라불리는 반사행렬 만들어진다. 반사행렬검사는 위의 3*3의 판별자가 음수인가를 확인.

Concatenation of Transforms 행렬의 결합은 교환 법칙이 성립되지 않는다. 행렬을 결합하는 이유는 효율을 높이기 위해 서다. 결합시 오른쪽부터 이루어 진다. 즉, TRS(p) = T(R(S(p))) 임을 의미한다.

x y Rz(π/6) x y x y S(s) x y x y Rz(π/6) x y S(s)

The Rigid-Body Transform 물체를 이동하거나 회전 시킬때, 물체의 모양 은 영향 받지 않을 경우 강체 변환이라고 한다. 물체의 길이와 각도는 보존된다. 임의의 강체 변환 행렬은 T(t)R의 형태를 가진 다. 이동과 회전 행렬의 결합 X의 역행렬은 X^-1 = (T(t)R)^-1 = R^-1T(t)^-1 = R^T T(-t)로 계 산된다. ( r00 r01 r02 Tx ) r10 r11 r12 Ty r20 r21 r22 tz 1 X = T(t)R =

Normal Transform 법선 벡터? 곡면 위의 한 점을 지나고, 이 점에서의 곡면에 대한 접평면에 수직인 직선이 법선 벡터이다. 법선은 컴퓨터 그래픽에서 평면 그림자를 위한 조명을 향한 표면의 방향을 결정하기도하고. 퐁 쉐이딩으로 각각의 코너의 방향을 곡선인 표면으로 바꾸는데에 사용됩니다. 법선벡터는 3D에서 참으로 중요한데, 조명의 각도와 법선벡터의 각도를 계산하여 빛의 양을 결정하고 그 표면(재질 meterial)이 표현되기도 하고, 또 둥근정도 뽀족한 정도가 표현되기 때문입니다.

삼각형의 정점들이 조명계산을 위한 법선 벡터 정보를 포함하는 경우가 자주 있다. 법선은 컴퓨터 그래픽에서 평면 그림자를 위한 조명을 향한 표면의 방향을 결정하기도하고. 퐁 쉐이딩으로 각각의 코너의 방향을 곡선인 표면으로 바꾸는데에 사용됩니다. 법선벡터는 3D에서 참으로 중요한데, 조명의 각도와 법선벡터의 각도를 계산하여 빛의 양을 결정하고 그 표면(재질 meterial)이 표현되기도 하고, 또 둥근정도 뽀족한 정도가 표현되기 때문입니다. gouraud 쉐이딩은 공유하고있는 각 정점의 법선벡터의 평균치를 정점의 법선벡터로 잡고 면에경우 각 정점사이를 interpolation(보간)하여 부드럽게 표현해줍니다 ㅎㅎ

N=(M ) Normal Transform -1 T 법선이 어떻게 변형 되는가? 하나의 행렬로 점 선 다각형과 같은 다른 기하요소들을 일관되게 변환할 수 있지만 이것으로 표면 법선 벡터를 변환하는데도 이용 할 수 있는 것은 아니다.

Normal Transform 벡터이므로 이동의 경우에는 변할것이 없고 회전의 경우에는 똑같이 회전을 하여주면 된 다. 만약 크기 조정일 경우에는 균등 크기 조정이 라면 크기 조정된 값을 나누어 주면 되지만 비균등 조정일 경우에는 역행렬을 새로 구해 주어야 한다. 비록 완전한 역변환이 필요하다고 하여도 행렬 의 좌측 상당 부분의 adjoint의 전치 행렬만 필 요하다. 어짜피 정규화를 하기 때문에 판별자를 나눌 필요가 없기 때문이다. 조명의 각도와 법선벡터의 각도를 계산하여 빛의 양을 결정하고 그 표면(재질 meterial)이 표현되기도 하고, 또 둥근정도 뽀족한 정도가 표현되기 때문입니다.

역행렬 계산 역행렬은 여러 경우에 있어 필요로 하게 되어진다. 역행렬을 구하는데 있어 크게 3가지가 사용 될 수 있다. 행렬이 단일변환 이거나 일련의 단순 변환을 위한 것일 경 우, M=T(t)R(∮)이면 M^-1=R(-∮)T(-t) 행렬이 직교한다는 사실을 알고 잇으면, M^-1=M^T가 된다. 즉 전치 행렬이 역행렬 Cramer의 법칙, adjoint방법은 branch 연산이 적어 일반적으 로 많이 사용된다. LU분해 ,가우스 소거법 으로 역행렬을 구할 수 있다.