본문 바로가기

예전/3D

(50)
동차 좌표ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ http://www.silverwolf.co.kr/73432 투영변환이 무엇인가요 ? 실세계의 한점 Q = (X, Y, Z)는 3차원의 점이다 이 점이 앞시간에서 배웠던 투영 스크린 상의 한 점 (X, Y)로 2차원 점으로 변환되는 관계를 투영 변환이라 한다. 이렇게 투영변환을 사용할 때는 동차 좌표계라고 알려진 좌표계를 사용하는게 편하다. 그럼 동차좌표계가 그럼 무엇인가요? 3D에서는 기본적으로 3차원좌표계이지만 이것을 어떤 목적으로 4차원으로도 확장이 가능하다. 이렇게 어떤목적을 위하여 한 차원의 좌표(n) 을 한차원 추가된 좌표 (n+1)로 표현을 하는 것을 동차 좌표계라 한다. 예를 들자면 3차원 좌표 (x, y, z)는 4차원 좌표 (x, y, z, w)형태로 표현 한다는 것이다. 기본적인 성분..
모델변환과 시점변환 어파인 공간동차좌표이동, 회전, 크기조절의 기하변환과 변환행렬의 차이모델 좌표계, 전역 좌표계, 시점 좌표계좌표계 변환과 변환 행렬과의 관계기하 변환 순서와 함수 호출 순서의 상관관계 Chapter 6. 모델변환과 시점변환01. 좌표계02. 기하변환03. GL의 모델변환04. GL의 시점변환 그래픽스 파이프라인에서 물체 좌표는 모델좌표, 전역좌표, 시점좌표 순으로 변환된다. 이 경우 좌표계 사이의 변환은 행렬로 표현된다. 물체의 설계는 모델 좌표계(지역 좌표계)에서 행해진다. 이 과정에서 물체에 이동, 화전 크기 조절등 다양한 기하학적 변환이 가해지며 이 역시 행렬로 표현된다. 내가 아는 말로 바꾸면 로컬 스페이스, 월드 스페이스, 뷰 스페이스로 볼 수 있겠다. 01. 좌표계 3D에서 물체를 표현하는 방..
어파인 공간 벡터 정의에서 유의할 점은 벡터의 위치이다. (믿기지 않겠지만, 벡터다.) 벡터(Vector)는 크기와 방향을 지닌 것. 이라는 정의를 갖기 때문에 위의 벡터들은 모두 완전히 동일한 벡터다. 하지만, 누가 봐도 다른 위치에 있다. 벡터의 성질만으로는 공간상의 위치를 중시하는 기하학에서 벡터만으로는 부족했다. 그래서 추가한 것이 바로 점(Point)다. 점은 위치가 있는 것. 크기나 방향은 없다. 이 개념을 벡터 공간에 추가한다면 방향뿐만 아니라 위치도 표시할 수 있게 된다. 이렇게 되기 위해서는 벡터와 벡터, 점과 점, 점과 벡터사이의 연산이 허용되어야 한다. 위 그림에서 점 Q에서 점 P를 빼면 P에서 Q를 향하는 벡터 V가 된다. 즉, V = Q - P 이다. 이것은 Q = V + P 로 표현될 수 ..
동차좌표 동차좌표 : 투영직교 투영과 원근 투영의 공식
D3D11 wireframe // 선언 ID3D11RasterizerState* WireFrame;ID3D11RasterizerState* FillFrame; // 초기화 D3D11_RASTERIZER_DESC wfdesc;ZeroMemory(&wfdesc,sizeof(D3D11_RASTERIZER_DESC)); wfdesc.FillMode = D3D11_FILL_WIREFRAME;wfdesc.CullMode = D3D11_CULL_NONE; // culling을 none으로 해줬다가_pd3dDevice->CreateRasterizerState(&wfdesc,&WireFrame);wfdesc.FillMode = D3D11_FILL_SOLID;wfdesc.CullMode = D3D11_CULL_BACK; // 다시 back culli..
Direct3D의 그리기 2. 정점 버퍼 Direct3D의 그리기 연산 오늘의 목표 1) 기하 자료의 정의. 저장. 그리기. 를 위한 Direct3D 인터페이스와 함수를 파악한다.2) 기본적인 vertex shader, pixel shader를 작성하는 법을 배운다.3) rendering pipeline을 구성하는 방법을 파악한다.4) Direct3D 효과 프레임워크를 이용해서 논리적으로 연관된 셰이더들과 렌더 상태들을 하나의 렌더링 기법으로 묶는 방법과효과 프레임워크를 '셰이더 생성기'로 사용하는 방법을 배운다. GPU가 정점 배열에 접근하기 위해서는 정점을 buffer에 담아야한다. Direct3D 에서의 buffer는 ID3D11Buffer 인터페이스이며, 정점을 담는 버퍼를 정점 버퍼라고 부른다. 버퍼는 자료를 담을 뿐만 아니라,CPU나..
Direct3D의 그리기 1 정점의 입력과 배치 Direct3D의 그리기 연산 오늘의 목표 1) 기하 자료의 정의. 저장. 그리기. 를 위한 Direct3D 인터페이스와 함수를 파악한다.2) 기본적인 vertex shader, pixel shader를 작성하는 법을 배운다.3) rendering pipeline을 구성하는 방법을 파악한다.4) Direct3D 효과 프레임워크를 이용해서 논리적으로 연관된 셰이더들과 렌더 상태들을 하나의 렌더링 기법으로 묶는 방법과효과 프레임워크를 '셰이더 생성기'로 사용하는 방법을 배운다. 1. 정점의 입력과 배치 구조체로 정점을 표현한다. 내부에 들어있는 변수에 따라 다른 정점으로 분류된다. struct Vertex1{VERTOR3 Pos,Color;}; struct Vertex2{VERTOR3 Pos,Normal;F..
DirectX11 초기화 1. Swap Chain 화면이 깜박거리는 현상을 방지하기위해 double buffering을 한다. 이를 Direct3D 에서 하기 위해 IDXGISwapChain이라는 인터페이스를 지원한다. 이 인터페이스는 Front Buffer Texture, Back Buffer Texture, 버퍼의 크기를 변경하겠다는 IDXGISwapChain::ResizeBuffers 함수와 버퍼의 Present를 위한 IDXGISwapChain::Present 가 있다. 2. 텍스쳐 자원 뷰 렌더링 파이프라인에는 텍스쳐를 binding 할 수 있는 여러 stage가 있다.흔히 두개로 나뉘는데, 텍스처를 렌더 대상으로 묶는 것 ( Direct3D가 텍스처에 렌더링 하는 경우 ) 과셰이더 자원으로 묶는 것 ( 셰이더 안에서 ..