*렌더링 파이프 라인

- 3D좌표를 2D로 표현하기위해

로컬정점->월드 공간->뷰 공간->투영 공간 -> 뷰 포트 -> 최종 좌표로 변환하는 방식

- Position = LocalPosition * WorldMatrix * ViewMatrix * ProjectionMatrix

- TransMatrix = WorldMatrix * ViewMatrix * ProjectionMatrix

Position = LocalPosition * TransMatrix

 

*로컬 정점( local vertex )

- 초기의 모델링시에 정의된 좌표

- 각자의 좌표계에의해 정점이 배치된다.

 

*월드 스페이스( world space )

- 공간상의 기준 좌표계( direct3d : 왼손좌표계, openGL : 오른손좌표계 )

- 스케일, 회전, 이동이 적용된다.

- 월드 스페이스로 변환( WorldPosition = LocalPosition * WorldMatrix )

- IDIRECT3DDEVICE9::SetTransform( D3DTS_WORLD, &WorldMatrix )

 

*뷰 스페이스( view space )

- 공간에 카메라를 두어 카메라의 위치에서 바라볼때 카메라의 위치를 좌표계로 사용한다.

- 뷰 스페이스로 변환( ViewPosition = WorldPostion * ViewMatrix )

- IDIRECT3DDEVICE9::SetTransform( D3DTS_VIEW, &ViewMatrix )

 

*투영 공간( projection space )

- 원근 투영

ㄴ 2D화면에 물체를 그릴때 입체감과 거리감을 표한하기위해

멀리 있는 물체는 작게, 가까이 있는 물체는 크게 그려준고

시야각에 때라 같은 위치에서 볼수있는 범위와 물체의 크기가 달라진다.

ㄴ D3DXMatrixPerspectiveFovLH()

- 직교 투영

ㄴ 위에서 아래에 있는 평면을 바라보는 방식이고 원근감이 없다.

ㄴ D3DXMatrixOrthoLH()

- 뷰 스페이스로 변환( ProjPosition = ViewPostion * ProjMatrix )

- DIRECT3DDEVICE9::SetTransform( D3DTS_PROJECTION, &ProjectionMatrix)

 

 

 

'programming > etc' 카테고리의 다른 글

*좌표계*삼각비*내적-정사영  (0) 2024.07.26
카메라  (0) 2024.07.26
평면방정식  (0) 2024.07.26
외적  (0) 2024.07.26
내적  (0) 2024.07.26
Posted by mainep
:

평면방정식

programming/etc 2024. 7. 26. 10:21 |

 

*평면방정식

-평면의 법선벡터와 원점간의 거리d를 알고있을때 점P가 평면에 대해 어느 위치에 있는지 판별 할 수 있다.

-법선벡터 N(a,b,c), 점P(x,y,z), 거리d

- ax + by + cz + d = 0

 

- 점P의 위치 판별

ax + by + cz + d = 0 일때 점P는 평면 위에 존재한다.

ax + by + cz + d > 0 일때 점P는 평면 앞에 존재한다.

ax + by + cz + d < 0 일때 점P는 평면 뒤에 존재한다.

( 법선벡터가 향하는 방향을 앞이라 둔다. )

 

-

사각형을 이루는 A,B,C,D 네 점이 있다.

 

A----B

l l

l l

C----D

 

이때

벡터 v1 = B - A

벡터 v2 = C - A

 

이 두 벡터를 외적연산하여 법선벡터 N을 구할 수 있다.

N.x = v1.y * v2.z - v1.z * v2.y

N.y = v1.z * v2.x - v1.x * v2.z

N.z = v1.x * v2.y - v1.y * v2.x

 

여기서 구한 N에 벡터를 구했던 A, B, C 세 점중 아무 한 점을 내적하면 d값을 구할 수 있다.

( 내적 값이 -d가 되므로 내적 * -1 = d )

 

* D3DXPlaneFromPoints()

- 세점을 인자로 평면 D3DXPLANE을 반환한다.

 

* D3DXPlaneDotCoord()

- D3DXPLANE과 D3DXVECTOR3를 인자로 받아 평면방정식을 연산한다.

- ax + by + cz + d의 값을 반환한다.

 

 

 

'programming > etc' 카테고리의 다른 글

카메라  (0) 2024.07.26
렌더링 파이프 라인  (0) 2024.07.26
외적  (0) 2024.07.26
내적  (0) 2024.07.26
사업자등록 통신판매업  (0) 2024.07.26
Posted by mainep
:

외적

programming/etc 2024. 7. 26. 10:20 |

 

*외적 : 두 벡터에 대해 각각 직각을 이루는 벡터

 

벡터 : A, B, C

 

A * B

Cx = Ay * Bz - Az * By

Cy = Az * Bx - Ax * Bz

Cz = Ax * By - Ay * Bx

 

외적연산을 통해 구한 C벡터는

A, B와 직교한다.

 

*d3dx함수

 

D3DXVec3Cross()

 

'programming > etc' 카테고리의 다른 글

카메라  (0) 2024.07.26
렌더링 파이프 라인  (0) 2024.07.26
평면방정식  (0) 2024.07.26
내적  (0) 2024.07.26
사업자등록 통신판매업  (0) 2024.07.26
Posted by mainep
: