Search Results for '3D Programming/Graphics'

3 POSTS

  1. 2007/04/16 [DX] D3DXMatrix
  2. 2007/04/16 [DX] 3D 프로그래밍 기초상식
  3. 2007/04/16 RHW(Reciprocal Homogeneous W)란?

[DX] D3DXMatrix

Posted 2007/04/16 18:43, Filed under: 3D Programming/Graphics

D3DXMatrixTranslation : 이동
-  D3DXMatrixTranslation( pOut, x, y, z )
M._41 = x
M._42 = y
M._43 = z
와 동일하고 위의 역행렬은 -x, -y -z를 입력한 행렬과 같다.

D3DXMatrixRotationX / Y / Z : 축 회전
- D3DXMatrixRotationX( pOut, Angle ) // in radian

D3DXMatrixScaling : 크기 변환
- D3DXMatrixScaling( pOut, sx, sy, sz ) // 배율 조정 1.0f 는 변하지 않는다.

M._11 = M._11 * sx
M._22 = M._22 * sy
M._33 = M._33 * sz

역행렬은

M._11 = 1 / sx
M._22 = 1 / sy
M._33 = 1 / sz

D3DXVec3Transform : 3차원 벡터를 4차원 벡터로 변환 행렬과 곱한후, 4차원 벡터로 리턴
- D3DXVec3Transform ( pOut, pV, pM ) vec4 = vec3 * mat

D3DXVec3TransformCoord : 3차원 벡터를 4차원 벡터로 변환 행렬과 곱한후, 3차원 벡터로 리턴
- D3DXVec3TransformCoord ( pOut, pV, pM ) vec3 = vec3 * mat

D3DXVec3TransformArray : D3DXVec3Transform을 배열단위로 연산

Plane : 평면을 4차원 벡터로 표현할수 있는 단위


Leave a comment

[DX] 3D 프로그래밍 기초상식

Posted 2007/04/16 18:38, Filed under: 3D Programming/Graphics
일반적으로 수학에서는

v' = M * v 이다.

v는 4x1 벡터고 M은 4x4 행렬이기 때문이다.

그러나 DX에서는 1x4 벡터를 쓰기 때문에,

v' = v * M

식이 된다.



v' = v * M1

v'' = v' * M2

v''' = v'' * M3

의 식은

v''' = v * M1 * M2 * M3

로 나타낼수 있다.

또한

Mt = M1 * M2 * M3
v''' = v * Mt

로 나타낼수 있고 Mt의 연산은 순서대로 이루어져야 된다.

Homogeneous coordinates

4차원이지만 3차원 벡터처럼 쓰이는 것...

3차원 벡터 -> 4차원 벡터

( x, y, z ) -> ( x, y, z, 1.0f )

4차원 벡터 -> 3차원 벡터

( x, y, z, w ) -> ( x/w, y/w, z/w )

Leave a comment

RHW(Reciprocal Homogeneous W)란?

Posted 2007/04/16 18:33, Filed under: 3D Programming/Graphics
copyrightⓒ 김성완(찐빵귀신) [2001년 7월 23일]

W는 Homogeneous coordinates의 네번째 성분이고 homogeneous coordinates 는 우리말로 동치 좌표라고 합니다. 일반적으로 3차원 좌표변환 행렬로 4*4 행렬을 사용하는데.. 그렇게 되면 버텍스 좌표계 값은 (x,y,z,1)로 사용합니다.

perspective 변환 행렬을 적용하고 나면 버텍스 좌표값의 네번째 성분이 1이 아닌 값이 나오게 되는데.. 이렇게 얻어지는 좌표값을 보통 (x,y,z,w)라고 표시합니다.

이때 이런 좌표값을 동치 좌표라고 합니다. 실제로 스크린상의 좌표값으로 사용하기 위해서는 동치좌표가 아닌 일반적인 좌표로 변환을 해야 하는데.. 좌표의 각성분을 w로 나누어서 구하게 됩니다. 즉, (x/w, y/w, z/w, w/w) = (x/w, y/w, z/w, 1) 이 되고 네째 성분 값이 1인 일반적인 좌표로 바뀌죠.

rhw라고 하는 것은 reciprocal homogeneous w 의 약자로 동치좌표 'w의 역수' 라는 뜻입니다. 즉, 1/w 를 말하죠. 위에서 동치좌표를 일반적인 좌표로 변환하기 위해서 w로 나누었는데, 컴퓨터에서는 나누기 계산이 느리므로 1/w를 한번만 구해서 각성분에다 1/w를 곱하는 식으로 계산을 처리합니다.

그래서 direct3d에서는 w의 역수를 rhw라고 이름하고 따로 저장하는 거죠.

그런데 직접 행렬 변환을 처리할 목적이 아니라면 이런 부분은 굳이 알지 못하더라도 물체의 좌표를 담은 오브젝트 좌표값만 넘겨주면 위에서 언급한 계산들은 세팅해준 행렬에 따라 자동으로 알아서 처리해주므로 신경쓰지 않아도 됩니다. 좌표변환의 전과정을 직접 처리할게 아니라면 rhw는 크게 신경쓰지 않아도 됩니다. 그냥 변환 행렬만 제대로 세팅하면 되지요.

Leave a comment


Recent Posts

  1. [참고자료] 모니터 해상도 도표
  2. [런타임에러] Expression: map/set it..
  3. *. 플러그인 랩퍼 사용하기 ( 3DS MAX..
  4. *. 스키닝 오프셋 벡터 [Offset Vecto..
  5. November 2007 DirectX SDK News

Recent Comments

  1. 관리자만 볼 수 있는 댓글입니다. 06/24

Recent Trackbacks

Calendar

«   2009/11   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

Bookmarks

  1. Cafe24
  2. ForTheProgramming
  3. Tatter Tools
  4. 근석이
  5. 진호네

Site Stats

TOTAL 14477 HIT
TODAY 4 HIT
YESTERDAY 16 HIT
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.