Public(87)
-
벡터 연산
두 개의 벡터 와 와 상수 c 가 있다고 할 때 다음과 같은 연산들을 정의할 수 있다. 1.덧셈(addition) 2. 스칼라 곱셈(scalar multiplication) 3. 내적(dot product) ******* 4. 외적(cross product) 뺄셈은 덧셈과 스칼라 곱셈의 조합으로 나타낼 수 있으며 , 나눗셈 역시 마찬가지이므로 별도로 정의하지 않는다. 이들 연산 중에서 우리에게 중요한 것은 내적과 외적이다. 내적은 일반적으로 두 벡터 사이의 각이 90도 이상인가를 판단하는 중요한 값이다. cos의 그래프를 생각하면 알기 쉽겠지만 cos은 0가 90도 사이, 그리고 270도와 360도 사이에서만 양(plus)의 값을 갖는다. 이 성질을 이용하여 인간의 눈에 해당하는 eye - 벡터와 물체의..
2022.08.21 -
광원
재질의 종류재질이란 메시(혹은 물체)의 표면 상태를 말하는 것으로 빛이 물체의 표면에서 반사되어 변화된 뒤 사람의 눈에 들어오기까지의 과정을 수학적으로 모델링하기 위해서 사용하는 값들이다. 복잡한 수식은 나중으로 미루고 이런 값들이 있다는 것을 알아두자.주변색(ambient) : 광원의 위치와 무관하게 똑같은 양으로 모든 점에서 반사되는 색확산색(diffuse) : 광원에 반사될 때 출력되는 가장 주된 색반사색(specular) : 특정한 방향으로만 반사되는 색, 광원의 위치와 카메라의 위치에 따라서 달라진다.방출색(emissive) : 메시 표면에서 자체적으로 방출되는 색. 단, 이 빛이 다른 메시에 영향을 주지는 못한다. 광원의 종류실제로 빛이 물체 표면에서 반사되어 인간의 눈에 도달하기까지의 과정을..
2022.08.15 -
행렬 01
뷰 좌표계나 뷰 행렬은 카메라 좌표계 , 카메라 행렬이라고도 하며, 투영 행렬은 프로젝션 행렬이라고도 한다. TM(Transform Matrix) 로컬 좌표계를 월드 좌표계로 변환하는 행렬을 간단하게 변환 행렬 (Transform Matrix)이라 하고 줄여서 TM이라고 부른다. TM은 모든 물체마다 고유하게 하나씩 존재한다. 예를들면 3차원 공간에 100개의 물체를 그리려면 100개의 TM이 필요하다는 얘기다. TM은 반드시 SetTransform(D3DTS_WORLD,&matWorld)처럼 해주어야 하드웨어 가속을 받을 수 있다. 카메라 변환(Camera transform) 3차원 공간상의 물체를 배치했으면 이들을 보기 위한 카메라를 설치해야 한다. 카메라 변환이란 3차원 월드 좌표계를 카메라를 기준..
2022.08.15 -
그리기 (Render)
VOID Render() { /// 후면버퍼를 파란색(0,0,255)으로 지운다. g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,255), 1.0f, 0 ); /// 렌더링 시작 if( SUCCEEDED( g_pd3dDevice->BeginScene() ) ) { /// 정점버퍼의 삼각형을 그린다. /// 1. 정점정보가 담겨있는 정점버퍼를 출력 스트림으로 할당한다. g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) ); /// 2. D3D에게 정점쉐이더 정보를 지정한다. 대부분의 경우에는 FVF만 지정한다. g_pd3dDevice->SetFVF( D3DFVF_CUSTO..
2022.08.14 -
정점 버퍼
/// 삼각형을 렌더링하기위해 세개의 정점을 선언 CUSTOMVERTEX vertices[] = { { 150.0f, 50.0f, 0.5f, 1.0f, 0xffff0000, }, // x, y, z, rhw, color { 250.0f, 250.0f, 0.5f, 1.0f, 0xff00ff00, }, { 50.0f, 250.0f, 0.5f, 1.0f, 0xff00ffff, }, }; 3차원 공간의 x,y,z 값과 rhw 값, 그리고 각 정점마다 다른 색을 할당하고 있다. 색의 경우 0xAARRGGBB의 순서로 값을 주게 되는데, 다음과 같다. A : Alpha 값으로 0x00 ~ 0xff 값을 갖는다. R,G,B : Red,Green,Blue의 값으로 0x00 ~ 0xff 값을 가질 수 있다. 이제부터 설..
2022.08.14 -
FVF
Flexible Vertex Format(FVF) D3D 8.0 이후부터는 FVF를 사용해야 정점 셰이더를 사용할 수 있다. FVF는 D3D에서 정해져 있는 정점 포맷 중에서 자신이 제작하는 프로그램에 알맞은 것들을 모아서 새로운 정점 포맷을 정하는 방법이다. D3D 9.0에서 정해져 있는 포맷은 다음과 같다. 정점의 좌표 x,y,z좌표 (float) RHW RHW(float) 결합 가중치 1~4결합 가중치(float) 정점의 법선벡터 x,y,z좌표(float) 정점의 점 크기 점 크기(float) 확산광 색 확산광 RGBA(DWORD) 반사광 색 반사광 RGBA(DWORD) 텍스처 좌표 1 1~4차원 좌표계(float 1~4) . . . 텍스처 좌표 8 1~4차원 좌표계(float 1~4) 위의 포맷을..
2022.08.14