Angler Blog
-
블렌딩GamePrograming/Direct3D 2009. 5. 4. 22:53
알파 테스트와 알파블렌딩에 대한 설명은 윗분이 설명해주신데로(DX 도움말에 있는데로)입니다. D3DRS_ALPHATESTENABLE가 TRUE로 설정되어 있을때 D3DRS_ALPHAFUNC이 D3DRS_ALPHAREF을 이용해서 테스트를 실행합니다.D3DRS_ALPHATESTENABLE가 FALSE이면 당연히 D3DRS_ALPHAFUNC, D3DRS_ALPHAREF는 설정안하셔도 됩니다.그리고 알파테스트를 통과했을 경우에 한해서 알파블렌딩이 일어납니다.참고로,알파테스트를 통해서 알파블렌딩할 영역을 줄여주는게 퍼포먼스에 도움이 됩니다 //알파테스팅 - Z축에 대한 알파가 먹히게 된다. m_pDevice->SetRenderState( D3DRS_ALPHATESTENABLE, TRUE); m_pDevice->..
-
ASE Animation [ *TM_ANIMATION FINAL ]GamePrograming/Direct3D 2009. 3. 26. 15:01
드디어 FINAL이다, 값들을 가져왔으면 이제부터 애니메이션을 돌려보자!! 케릭터의 변환 순서는 스케일, 로테이션, 이동 순서로 이루어진다.(이유는 책을 찾아 보시오 -_-) 먼저 로테이션 부터 살펴보겠다. (스케일은 제외) 1. 처음으로 로테이션의 키값이 있는지 없는지를 판별한다. ------------------------------------------------------------------------ 2-1. 키값이 없을 경우 2-1-1 키값이 없는데 부모가 있을 경우 TM_ROT = Mesh[i]->node.TM_Local; TM_ROT._41 = 0; TM_ROT._42 = 0; TM_ROT._43 = 0; TM_ROT._44 = 1.0f; 부모와 자기 NodeTM이 곱해진, Local T..
-
ASE Animation [ *TM_ANIMATION 2 ]GamePrograming/Direct3D 2009. 3. 26. 13:07
자 일단계 로컬 좌표로 변환 하는 과정은 끝났다. 이제부터는 또 다시 ASE 파일에서 애니메이션 키값 정보들을 불러 오는 작업이다. *CONTROL_POS_TRACK { *CONTROL_POS_SAMPLE 00.00000.0000-2.5816 *CONTROL_POS_SAMPLE 8000.00000.0000-2.3495 *CONTROL_POS_SAMPLE 16000.00000.0000-2.5361 *CONTROL_POS_SAMPLE 24000.00000.0000-2.3495 *CONTROL_POS_SAMPLE 32000.00000.0000-2.5361 } 일단 POSTION 정보를 보면, 맨처음값이 TICK 바로 시간 타임 값이다. 그리고 뒤에 3값이 이동할 좌표값인 X Z Y 값이다, (좌표계가 다르므로..
-
ASE Animation [ *TM_ANIMATION 1 ]GamePrograming/Direct3D 2009. 3. 26. 12:49
대망의 애니메이션이다 ㅠㅠ 뭐 설명은 없고 대충 찌그리고 있는데, -_- 선생하고싶었는데 선생하긴 글렀다 -_-; 일단 애니메이션을 하려면, 지금 월드 좌표로 지정되어있는 버텍스 좌표들을 전부 로컬좌표들로 바꿔줘야 한다. 로컬 좌표로 바꾸는 방법은 이소스를 참고 - D3DXMATRIXA16 inverse_World; D3DXMatrixInverse(&inverse_World, NULL, &p_Mesh->node.TM_Node); for(int i=0; iVertex_Size; i++) { D3DXVec3TransformCoord(&vertex[i].position, &vertex[i].position, &inverse_World); } 아까 Node TM에서 받은 메트릭스를 Inverse 시켜, 그값을 ..
-
ASE Animation [ *Mesh ]GamePrograming/Direct3D 2009. 3. 26. 12:35
MESH 정보 안에는 VERTEX의 갯수 : *MESH_NUMVERTEX INDEX의 갯수 : *MESH_NUMFACES VERTEX를 정보를 가지고있는 LIST : *MESH_VERTEX_LIST {} INDEX 정보를 가지고있는 LIST : *MESH_FACE_LIST {} 텍스쳐를 하기위한 UV 좌표 *MESH_NUMTVERTEX *MESH_TVERTLIST{} 텍스쳐를 하기 위한 TINDEX *MESH_NUMTVFACES *MESH_TFACELIST{} 값들이 있다. ---------------------------------------------------------------------------------- 자이제부터 MESH값을 받아 오겠다. 텍스쳐가 없을 경우 VERTEX 정보와 INDE..
-
ASE Animation [ *NODE_TM ]GamePrograming/Direct3D 2009. 3. 26. 11:45
*NODE_TM { *NODE_NAME "Bip01" //노드의 이름 *INHERIT_POS 0 0 0 //상속정보를 의미하나 잘사용되진 않는다. *INHERIT_ROT 0 0 0 *INHERIT_SCL 1 1 1 //이부분은 POS, ROT, SCL값들이 곱해져 메트릭스로 정의 되있다, //이부분의 값이 제일 중요하며, NODE TM 메트릭스로 정의해놓으면된다, *TM_ROW0 0.0000-0.9537-0.3007 *TM_ROW1 1.00000.00000.0000 *TM_ROW2 0.0000-0.30070.9537 *TM_ROW3 0.0299-0.02580.5602 *TM_POS 0.0299-0.02580.5602 *TM_ROTAXIS -0.1504-0.15040.9771 *TM_ROTANGLE 1.5..
-
ASE Animation [ *MATERIAL_LIST ]GamePrograming/Direct3D 2009. 3. 26. 10:46
Material을 의미한다, Object중 GeoObject에서 사용하는 Material을 List형태로 나열해 놓았으며 각 Material에는 번호를 붙여 놓아서 GeoObject에서는 이번호를 참조해, 어떤 Material을 사용하는지 알아내도록 되어있다. *MATERIAL_LIST { *MATERIAL_COUNT 1 *MATERIAL 0 { *MATERIAL_NAME "6 - Default" *MATERIAL_CLASS "Standard" *MATERIAL_AMBIENT 0.58820.58820.5882 *MATERIAL_DIFFUSE 0.58820.58820.5882 *MATERIAL_SPECULAR 0.90000.90000.9000 *MATERIAL_SHINE 0.1000 *MATERIAL_SH..