ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ASE Animation [ *MATERIAL_LIST ]
    GamePrograming/Direct3D 2009. 3. 26. 10:46

    Material을 의미한다, Object중 GeoObject에서 사용하는 Material을 List형태로 나열해 놓았으며
     각 Material에는 번호를 붙여 놓아서 GeoObject에서는 이번호를 참조해, 어떤 Material을 사용하는지
    알아내도록 되어있다.






      *MATERIAL_AMBIENT 0.5882 0.5882 0.5882
      *MATERIAL_DIFFUSE 0.5882 0.5882 0.5882
      *MATERIAL_SPECULAR 0.9000 0.9000 0.9000
      *MATERIAL_SHINE 0.1000
      *MATERIAL_SHINESTRENGTH 0.0000

    D3DMATERIAL9 mtrl; 변수 선언후!!

    *MATERIAL_AMBIENT  의 3개값을 받오면 된다!!


    mtrl.Ambient.r = 0.5882;
    mtrl.Ambient.g = 0.5882;
    mtrl.Ambient.b = 0.5882;

    *MATERIAL_DIFFUSE  의 3개값을 받오면 된다!!

    mtrl.Diffuse.r = 0.5882;
    mtrl.Diffuse.g = 0.5882;
    mtrl.Diffuse.b = 0.5882;

    *MATERIAL_SPECULAR 의 3개값을 받오면 된다!!

    mtrl.Specular.r = 0.9000;
    mtrl.Specular.g = 0.9000;
    mtrl.Specular.b = 0.9000;

    *MATERIAL_SHINE 의 값을 받아와, 100으로 나눠주면 된다,왜?? 모름 -_- 값이
    삼디맥스는 0 100까지고, 다이렉트는 0부터 127까지임,

    mtrl.Power = 0.1000 / 100;

    *MATERIAL_SHINESTRENGTH 의 값을 받아와, SPECULAR에 곱한후 100을 나눠주면 된다,

    FLOAT Strength = 0.0000;
    mtrl.Specular.r = mtrl.Specular.r * Strength / 100;
    mtrl.Specular.g = mtrl.Specular.g * Strength / 100;
    mtrl.Specular.b = mtrl.Specular.b * Strength / 100;

    *MAP_DIFFUSE에서 필요한건 뭐? 바로 *BITMAP!!

    texture셋팅에 필요한 그림의 경로를 받아온다!!

    ----------------------------------------------------------------------------------------

    메터리얼 리스트에서 애먹이는건 바로 SUBMATERIAL의 존재이다,
    SUB의경우,그래퍼들이 편하기때문에 쓰는경향이 강한데, 그렇다고 편의성을 위해 존재하는 것만은
    아니다, 치마의 겉과 속을 다르게 표현하거나, 같은 버텍스의 앞뒷면이 다를경우,
    SUB를 쓰기때문에 번거럽지만 구현해야할 부분이다,

    SUB의 경우 DIFFUSE 가 나오기전, 몇개가 있는지를 명시해주며,
    값은 일반 메터리얼 정보와 동일하다,
    메터리얼 정보를 구조체로 정의했을 경우, 메터리얼이나, TEXTURE 변수는 포인터로 선언하거나
    리스트로 연결하여, 서브를 받을 수 있도록 만드는게 중요하다,


    댓글

Designed by Tistory.