[서동권] MFC 메뉴 삭제하는 방법

Programming/MFC 2010. 6. 6. 13:01 Posted by 힝고니
실수로 메뉴를 생성한채로 프로젝트를 만들었는데 그것도 모르고

계속 코딩하다가 컴파일했더니 헐...왜 메뉴가 있지? 난 메뉴안쓸건데...

이런경우가 혹시나 있으셨던분??

아니면 메뉴를 사용하려고 했다가 나중에 에잉 빼는게 좋겠다 하셨던적이 없으셨나요??

이때 괜히 메뉴관련된 리소스를 지우거나 코드를 수정했다가 뭔가 꼬인것을 풀지 못했거나

MFC 특성상... 제대로 해주지 않으면 상당히 골치아프게 되어서 아예 새로 만들어야 할수가
있는데, 머리아프지 않고 쉽게 메뉴를 삭제하는 방법이 있어서 올립니다.

* 물론 저같이 허당이 아니라 그냥 코드만 보면 답이 딱 나오시는 분은 직접 수정하셔도 됨

아래 트랙백을 눌러서 보세요.

'Programming > MFC' 카테고리의 다른 글

[김재진][API]Dialog에서 Slider Componet를 사용하기  (0) 2010.07.13
[장영수]MFC-Cimage  (1) 2010.05.27
출처: http://beforu.egloos.com/4401340



클라이언트에 대한 자료긴 하지만 좌절과 열정을 다시 불타 오르게 하는 PT.

클라이언트 지망하는 사람들에게 좋은 참고가 될거같습니다.

'Programming > etc.' 카테고리의 다른 글

[장영수] 게임 UI 구현에 관한글  (0) 2010.06.18

[임지웅]잡담 - 유머 초딩의 질문

잡담 & 자유게시판 2010. 5. 28. 12:55 Posted by 알 수 없는 사용자

어느 초딩 : 예전에 양파라는 가수가 있었나요? 
                그 가수가 지금 우리 슈퍼주니어 오빠들이나, 박정아 언니처럼 노래를 잘했었나요?
                그냥 대충 부르다 망해서 안나오는 거 아닌가요?

어느 답변 :

일단 양파라는 가수는 말이다

기본적으로 그당시 최연소 최단기간 공중파 3개 방송사 음악 프로그램 1위 석권

버클리 음대 퓨전음악과 출신

데뷔한지 5주만에 현재 동방신기 1집에서 3집까지 음반판매량의 딱 1.5배 팔아치우셨고

다저스 스타디움에서 정부차원의 요청에 의해 미국 국가를불렀고

케이블 포함 방송사 음악프로그램 전체 1위 석권

신인상 석권, 대상, 인기상까지 트리플 크라운 달성

이렇게... 까지 하는데 딱 1년 걸리셨단다..

그 이후 유학 가셔서 돌아오신 담에는 달콤한인생, 명성왕후 ost.에 참여하셨고..

근데 망했냐구? 전혀..

요즘같이.. 물론 훌륭한 가수들은 많지만

극히 일부 덜떨어진 가수들처럼 쇼프로 아무데나 무작위로 나오고

그렇게 하는게 아니라, 음반발매 한 번 하는데 2~3년 걸리며..

뮤직비디오 10% 비중을 둔다면 음악자체에 90% 비중을 두는 가수란다..

형아 누나 언니 오빠들이..

다 가수를 비판하는데는 그만한 이유가 있단다..

슈퍼주니어, 쥬얼리.. 다 좋은 가수들이지만.. 어쩌겠냐.. 형 누나들이..

보통 저런 가수들만 보고 자라온지라.. 미안하다..

니들이 격동의 7~80년대를 아냐??????

형때도 스타크래프트 나왔어요????

이딴 개념없는 질문들 제발 인터넷에 올리지 않길 바란다..

형 인생 쓴맛 단맛 다 보고 나니까 그때 나오더라..

뭐 스타 크래프트 그딴게 어딨어!! 니들이 bb탄을 알아????

스포!! 서든이 어딨어!!  m16이나 슈퍼 베레타 있으면 끝났어!!!

아~ 여자 초등학생들도 보겠구나~ 음.. 너희들은 간단해..

집에 공주 그림이랑 옷 그림 졸라 그린다음에.. 그거 찢어서 종이에 옷 갈아 입히고..

니들이 슈퍼 그랑죠를 알아??!! 뭐??? 나루토?? 원피스?? 그딴게 어딨어!!!

임마 ㅋ 다간 임마 ㅋㅋ 다간 몰라? 삐용삐용 경찰차 나오다가 갑자기 로봇 변신하면 다  ㄷ ㅣ 지는거야..

웨딩 피치 천사소녀 네티 ㅋㅋ 세일러문 누나들 임마 ㅋㅋㅋ

누나들 나와서 옷갈아입고 봉 휘두르면 ㅋㅋ 니네는 다 피똥싸는거야 임마 ㅋㅋ

만화책? ㅋㅋ 요즘 너무 어려워서 못보겠더라? ㅋㅋ 형때는 임마 도라에몽~~!! ㅋㅋ

ㅋㅋ 땅 불 바람 물 마음 다섯가지 힘을 하나로 ㅋㅋ 캡틴 플래니~ ㅋㅋ

너희 ㅋㅋ rc카 조종화지? ㅋㅋ 우리는 옛날에 그걸로 철인 28호 ㅋㅋ 로봇 움직였어 임마 ㅋㅋ

인터넷이 어딨어!! ㅋㅋ 치토스 사서 ㅋㅋ 한봉지 더 ㅋㅋ 이런거 나오면 그냥 줄줄쌌어 임마 ㅋㅋ

그리고 ㅋㅋ 박찬호?? 지금 뭐 한국으로 돌아오라고? ㅋ 니가 한국인인에 부끄러워? ㅋㅋ

ㅋㅋ 생각을 하고 글 써라 아가야~ 어른들이 박찬호 박찬호 할때는 다 그만한 이유가 있는거야 ㅋㅋ

ㅋㅋ 옛날에 박찬호 나오기만 ㅎ ㅐ 도 양키들 줄줄 쌌어 임마 ㅋㅋ

찬호형 연봉으로 공 한번씩 던질때 돈으로 계산해보니까 한번 던질때마다 700만원이더라 ㅋㅋ

한번 던지는데 700만원이면 1 경기당 얼마를 벌꺼같냐? ㅋㅋㅋ

물론 축구도 박주영, 백지훈 다.. 잘하지 ㅋㅋ

옛날에.. 명보형.. ㅋ 중거리 슛..ㅋㅋ 냅다 꽃아버리고..ㅋㅋ

선홍이형 날라다니고..ㅋ 정원이 형 발이 안보이고..ㅋ 정운이형 코뿔쏘 임마 ㅋㅋ

용수형..ㅋㅋ 헤딩할 준비만하면 일본놈들 ㅋ 유니폼 벗어놓고 도망갔다고 ㅋㅋ

그리고..ㅋ 어른들이 왜 술먹고 나이트..ㅋㅋ 이런데 가는지 모르겠다고? ㅋㅋ

살아봐 임마~ ㅋ 그런 문화가 없었으면 ㅋㅋ 어차피 너희도없었어~!! ㅋㅋ

안불쌍하냐? 우리도 너희같은 때가 있었다고~ 국딩이라고.. 국민학교..딩..

근데.. 어제 분명히 H.O.T 장갑사고.. 그랬는데 자고 일어나니까.. 입대영장 날라와있고..

벌써 10년전 일이고..ㅋㅋ 니들은 안늙을 것 같애???? ㅋㅋㅋ

지금 날아라 슛돌이..ㅋ 뭐 kbs에서 하던데? ㅋㅋ 니들도 눈 깜박했다 떠봐 ㅋㅋ

걔네들 벌써 홍명보 ㅋㅋ 최진철 짬 되있어~ ㅋㅋ

동방신기??? ss501?? 옛날에..

형이 사는 동네에 H.O.T가 왔었는데.. 지나가다가.. 어! 젝스키스 아냐?

한마디 했는데.. 그날 형 집에 못들어 갔다..

니들 인터넷으로 싸우냐..??

그때 교복입은 누나들 그 추운날에 방한복 입고..

난 무슨 근무서는 줄 알았다.. 그게 우리의 누님들이셨다..ㅋ

인터넷으로 암만 싸우면 뭐하냐 ㅋㅋ 그땐 짬안되면.. 콘서트 이런데 뭣도 모르고 갔다가..

영국 훌리건? 걔네들 우리 누님들한테 머리박고 손들어야돼~!!

형은 십이간지도ㅋㅋ 그냥 안외웠어~! ㅋㅋ

똘기 떵이 호치 새초미 자축인묘

드라고 요롱이 마초 미미 진사오미

몽치 키키 강달이 찌찡이 신유술해

우리들은..

조심해라.. 한 번만 더 설치고 다니면..

얘네들 우주선 타고 중간에 동화나라 내리면 니네들 또 존내 맴매 한다! ㅋㅋ

그리고 초딩다운 프로그램을 봐라!

형때는 임마 일요일 아침 8시 디즈니 만화동산 고정이었어!

7시되면 눈 자동으로 떠진다 임마 ㅋㅋㅋ

1시간 전에 일어났다고 다시 잘라고 하면 두근거려서 잠도 못잤다고 짜식들아~!! ㅋㅋ

그리고 명절에는 머털도사 안보면..ㅋㅋ 사람 취급도 안했어 ㅋㅋ

사이버포뮬러? 그딴게 어딨어 임마 ㅋㅋ 영광의레이서!!

니들이 총알슛 독수리 슛 알아??

다리 딱 90도로 찢어 가지고 냅다 후려갈기면 임마~~ㅋㅋ 공이 수십개로 갈라지고 임마!! ㅋㅋ

우리는 그리고 만화도 그냥 아니었어~ㅋㅋ

돈데 기리 몰라? 임마 ㅋㅋ

우린 차원도 넘나들었어!! 주전자 하나들고 존내 돌려제끼면 임마!! ㅋㅋ

벽 갈라지면서!!!~~~~~~~~~~~~~~~~~~~~!!!!

마지막으로 말한다..

형.. 말 길게 하게 하지마라..

 

 

 

 ---------------------------------------------------------------------------------ㅋㅋ

카페검색어에는 MFC가 있는데 MFC 게시판이 없음 ㅋㅋㅋㅋ

MFC에 대한 간단한 글하나 올릴려고 했는데 없네요!!

[김재진]3D그래픽스의 개념과 렌더링파이프라인

Programming/DirectX 2010. 5. 27. 19:32 Posted by 알 수 없는 사용자
http://allosha.tistory.com/9
일본 저자가 쓴걸 번역해서 올린거 같은데 렌더링 파이프라인에 대해서 자세하게 나왔으니 확인하시기 바랍니다.

'Programming > DirectX' 카테고리의 다른 글

[강민수] DirectX-기초수학  (0) 2010.06.10
[손동진] 빌보드 (Billboard)  (0) 2010.06.07
[김재진]행렬의 곱셈 및 항등행렬 설명  (0) 2010.05.27
[손동진] 재질과 광원  (0) 2010.05.27
[김재진] 3D 행렬  (1) 2010.05.24

[김재진]행렬의 곱셈 및 항등행렬 설명

Programming/DirectX 2010. 5. 27. 19:27 Posted by 알 수 없는 사용자

 행렬의 곱셈
   
 
행렬의 곱셈에서는 순서가 바뀌면 값도 바뀝니다. 위의 행렬 순서를 아래와 같이 바꾸면...

그래서 행렬 곱셈시에는 순서가 중요합니다.


 항등행렬  

  어떤 행렬에 항등행렬을 곱하면(단 차수가 동일할 것), 원래의 행렬값이 됩니다.
  A * I = A = I * A = A

  하지만 항등행렬은 행렬곱셈에서 봤던 것처럼 순서가 중요하지 않습니다.  순서가 바뀌어도 결과가 동일하기 때문이죠
  항등행렬이 되려면 n * n 과 같은 정사각형의 행렬이어야 하며, 대각선이 모두 1로 구성되어 있고, 나머지는 0으로 채워져 있다는 점입니다.  
 
  3차원 항등행렬을 보겠습니다.  
 

위의 행렬을 곱하는 순서에 관계없이 어떤 행렬에 곱셈을 할경우 동일한 결과가 나오는데 이를 항등행렬이라 합니다

출처 : http://eecs.tistory.com/entry/3D프로그래밍의-첫걸음-행렬

'Programming > DirectX' 카테고리의 다른 글

[손동진] 빌보드 (Billboard)  (0) 2010.06.07
[김재진]3D그래픽스의 개념과 렌더링파이프라인  (0) 2010.05.27
[손동진] 재질과 광원  (0) 2010.05.27
[김재진] 3D 행렬  (1) 2010.05.24
DirectX-정점  (1) 2010.05.20

[손동진] 재질과 광원

Programming/DirectX 2010. 5. 27. 17:27 Posted by 알 수 없는 사용자
1. 재질
재질이란 메시(또는 물체)의 표면 상태를 말하는 것으로 빛이 물체의 표면에서 반사되어 변화된 뒤 사람의 눈에 들어오기까지의 과정을 수학적으로 모델링하기 위해서 사용하는 값들이다.

1.1 재질의 종류
  • 주변색 (ambient)
    • 광원의 위치와 무관하게 똑같은 양으로 모든 점에서 반사되는 색
  • 확산색 (diffuse)
    • 광원에서 반사될 때 출력되는 가장 주된 색
  • 반사색 (specular)
    • 특정한 방향으로만 반사되는 색. 광원의 위치와 카메라의 위치에 따라서 달라진다.
  • 방출색 (emissive)
    • 메시 표면에서 자체적으로 방출되는 색. 단, 이 빛이 다른 메시에 영향을 주지는 못 한다.

2. 광원의 종류
  • 주변 광원 (ambient light)
    • 3차원 공간 내에서 메시의 배치나 위치와는 전혀 상관없이 똑같은 양으로 모든 곳을 비추는 빛의 강도를 말한다. 방향, 위치가 없으며 색과 강도만이 존재한다.
  • 점 광원 (point light)
    • 직관적으로 가장 쉽게 생각할 수 있는 빛이다. 예를 들면, 백열전구를 생각하면 된다. 광원의 위치에 따라 빛의 강도가 달라진다.
  • 방향성 광원 (directional light)
    • 모든 광원의 방향이 하나의 방향을 갖는 것으로 완벽하지는 않지만 태양을 예로 들 수 있다. 광원의 위치는 상관 없고, 방향이 가장 중요한 요소다.
  • 점적 광원 (spot light)
    • 정해진 위치와 범위에만 비추는 특수한 조명을 말한다. 흔히 영화나 쇼무대에서 사용하는 스포트라이트 조명을 생각하면 된다.

이들 광원 모델은 D3D의 고정함수 파이프라인을 사용할 때만 유효하고, 정점 셰이더와 픽셀 셰이더를 사용하게 되면 모두 무용지물이 된다.



* 용책 요약 (p. 161)
  • Direct3D는 방향성 광원과 점 광원, 스포트 광원의 세 가지 광원 모델을 제공하며, 광원은 환경광(ambient)과 난반사광(diffuse), 정반사광(specular)의 세 가지 빛을 발산한다.
  • 펴면의 재질은 표면과 표면에 닿는 빛과의 상호작용을 정의한다. (반사 되거나 흡수될 빛의 양을 조정하여 표면의 컬러를 결정한다.)
  • 버텍스 법선은 버텍스의 방향을 정의하며 Direct3D는 버텍스 법선을 이용해 버텍스에 빛이 닿는 각도를 계산해낸다. 버텍스의 법선이 삼각형의 법선과 동일한 경우도 있지만 부드러운 표면(구체, 원통 등)을 표현하는 경우에는 그렇지 않은 경우도 있다.

[장영수]MFC-Cimage

Programming/MFC 2010. 5. 27. 17:11 Posted by 알 수 없는 사용자
cImage 사용하다가 막혀서 불펌 -ㅂ-ㅋㅋ

----

CImage는 MS에서 .net 이후부터 제공되는 그림 관련 클래스임.
이전 CBitmap의 bmp만 다루던거에서 좀더 확장하여 Png, Jpg, gif등 다양한 포멧을 지원한다.

기본적으로 사용은
CImage image; 로 한다.

CImage는 일종의 스케치북으로 볼수 있다.

사용법으로
CImage.Create(width, height, bpp); 로 새 스케치북을 만드거나
CImage.Load(CString("filename")); 으로 파일을 받아올수 있다.

이렇게 만들어진것중에서 자주 사용하는 매소드로
BitBlt ... : 기본 API 이다.
사용법은
CImage image;
image.Load("test.jpg");
image.BitBlt(pDC, 0, 0);

이러면 pDC의 0,0 지점에 test.jpg 그림이 복사된다.
좀더 응용하면

CImage a,b;
a.Load("test.jpg");
b.Create(a.GetWidth(), a.GetHeight(), a.GetBPP());
a.BitBlt(b.GetDC(), 0, 0);
b.ReleaseDC();

이렇게 하면 b에 a의 그림이 복사된다.
중요 포인트는 GetDC()를 해준뒤 바로 ReleaseDC를 해줘야 한다.

나머지 대충 사용하면되고..

GetPixel의 경우..
GetPixel과 SetPixel을 그대로 사용하는건 정말 CPU혹사시키는 짓이다.
다음 함수로 대체 하는것이 좋다

// SetPixel 대용
void PointColor(CImage *image, int x, int y, COLORREF c)
{
 // m_image.SetPixel() call ::SetPixel() which is too slow
 // since it has to work with all DCs.

 BYTE *p = (BYTE*)image->GetPixelAddress(x, y);
 if (m_nBitDepth == 16) {
  *(WORD *)p = (WORD)(((c&0xf80000) >> 19) | ((c&0xf800) >> 6) | ((c&0xf8) << 7));
 }
 else {
  *p++ = GetBValue(c);
  *p++ = GetGValue(c);
  *p = GetRValue(c);
 }
}

// GetPixel 대용
COLORREF GetPointColor(CImage *image, int x, int y)
{
 COLORREF result = *((COLORREF*)image->GetPixelAddress(x,y));

 // 메모리에서 가져올때, blue와 red위치가 바뀌어서 가져와진다
 BYTE r = GetBValue(result);
 BYTE g = GetGValue(result);
 BYTE b = GetRValue(result);
 
 return RGB(r,g,b);
}

[김재진]Flexible character customizing

잡담 & 자유게시판 2010. 5. 26. 10:02 Posted by 알 수 없는 사용자

Flexible character customizing

주제 : 케릭터의 유저 커스터마이징 접근론.

비교대상 : Facegen , Poser , sims , Aion

알려진 이슈 

Poser (비게임류-케릭터 생성 어플리케이션) , Sims , Aion 등을 비롯하여 해외 유수의 게임 중 케릭터 커스터마이징의 수준이 체형 , 두상의 디테일 , 연령대 별 , 인종적 특징까지 잡아 내고 있는 게임들의 커스터마이징 시스템 구조의 골조는 FACEGEN 으로 부터 시작되고 있다.

FACEGANE 의 최신 버젼을 살펴 보면 5대륙 별 인종의 특성을 1차적으로 골격 단위 , 2차적으로 피부의 색으로 세분화 하였으며 이후 세부 디테일은 그 버전이 업그레이드 될수록 세분화 되 가고 있다.

현재 최신 버전에서는 노멀맵 표현이 추가 되어 연령대별 표현을 이전 버전보다 더욱 충실히 표현 하고 있다.

예> 노멀맵을 사용하여 주름의 깊이 등을 표현 함으로서 더욱 커스터마이징의 리얼리티에 충실하며 부가적으로 나이에 따른 피부의 윤기는 스팩큘러맵이나 글로스 맵을 사용하여 디테일하게 잡아 내고 있다.

커스터마이징 시스템 설계를 위해 언급 해야 할 대상.

소구적 측면



포지티브적 측면
아바타 개념적 정의에 대한 충실함.

게임 홍보적 이슈

부분수익화적 측면

리소스적 측면(서로 다른 픽스된 얼굴 데이터를 수십개씩 만들지 않아도 됨. 단, 아이온의 경우 픽스 된 기본 얼굴도 25개 정도 되는 것 참고.)
네거티브적 측면 개발 비용적 측면의 검토.

(프로그래밍 기간 측면이 비중이 큼.)

        

기술적 측면

클라이언트

참조.Facezen































그림1. FaceGen SDK for developer







































그림2. FaceGen SDK for Artist

서버

커스터마이징 인포메이션 데이터의 통신 처리.

케릭터 커스터마이징 데이터의 저장 -> User DB.

UserDB 가 관리 할 Data method -> 커스터마이징 하기 위한 Node 의 Parameter data(커스텀 노드의 수가 15개일 경우 약 140바이트)

저장 될 파라메터의 예.



par1=1

par2=10

par3=10

par4=10

par5=10

par6=10

par7=10

par8=10

par9=10

par10=10

par11=10

par12=10

par13=10

par14=10

par15=10

데이터는 정수형 데이터로 파라메터 스냅은 1단위로 1~10까지 10단계 커스터마이징 할 수 있도록 초기에 설계한다.

!위 파라메터는 얼굴 텍스쳐 데칼(문양에 사용되는)이나 컬러 변형(버텍스컬러 혼합을 통한 염색) 정보는 제외 하고 있음.

클라이언트와 서버간의 개념도.














개념적으로 위와 같이 추론 하여 이해 한 상태에서 클라이언트 연산처리 상의 방식의 범주일 것이다.



FaceGen 과 관련 하지 않고 가장 간단하게 개념적인 데이터 제작 및 관리 형태에 대한 추론.

1. 몰프(Morph) 데이터 접근.

변형 할 얼굴 부위 별 노드를 정하고 각 노드 별 변형 데이터를 제작하여 관리.

파라메터의 중간 값은 5 를 기준으로 하여 제작한다.

가장 자연스러운 결과 데이터 리소스 제작이 가능 하다.

개념도.








UserDB 파라메터 저장 정보.


노드에 따른 각 모프 데이터는 변형 해당 영역의 Vertex Set 등을 갖는다.

2. 본(Bone) 처리 방식 접근.




얼굴에 근육의 방향으로 본을 설치 하여 처리 하는 방식이나 자연스럽지 못하다.



디포메이션 클러스터 등을 따로 부가적으로 설정하여 좀 더 자연스럽게 할 수 있으나 컨트롤 데이터의 양이 너무 많아지기 때문에 응용 검토 사항에서 일단 후순위로 두기로 한다.







위와 같이 두가지의 방법에 대한 추론을 해 보았다.



이제 1번 안에 대한 좀 더 세부적이고 명확한 방법을 연구 하고 추론 하도록 하자.











케릭터 정보가 갖게 될 정보는 아래와 같을 것이다.

케릭터 스케일(루트 본 스케일->하위 본은 루트 본 스케일을 상속 받을 것이다.)

헤어 데이터 정보(기존에 정해 진 헤어 모델의 넘버 인덱스 값 과 염색에 사용 된 RGB 값을 갖을 것이다.)

얼굴모양의 변형 정보(기존에 정해 진 얼굴 모델의 넘버 인덱스 값과 디포메이션 된 각 노드에 대한 약속 된 파라메터 정보를 갖을 것이다.)



생각 할 문제.1

데이터 케시화 할 경우.

만약 유저 커스터마이징 상태에서 케릭터 확정을 하였을때 최종적으로 만들어 진 얼굴 데이터를 지오메트리 데이터로 재생성 한다고 가정 했을 경우 그 데이터를 클라이언트가 갖고 있을 순 없을 것이다.

서버에서 데이터를 관리 해야 하는데 이 정보는 유저디비에 보관 될 것인데 바이너리 데이터로 저장 되어 보관 되어 진다면 용량면에서 과연 유저디비에서 관리 할 수 있을까.라는 의문을 일단 갖어 보자.



처리 루틴은 아래와 같겠다.

서버 접속 - > 유저 디비 엑서스 -> 정보 리시브 ->게임접속-> 다른 플레이어들에게 모든 공통 바이너리 데이터 전송

처리 면에서 말이 좀 안될꺼 같다.



추가적인 검토사항.

얼굴 데이터에 대한 바이너리 데이터 또는 아스키 데이터 형태로 저장 할 경우 전송 되는 패킷의 크기 검토.



장점 : 프로세스 적으로 처리 할 부분이 미비 하다.

만약 한번 봤던 유저의 얼굴 커스텀 정보를 내려받아 케시 하고 있다면 데이터를 내려 받는다는 단순한 작업 이외에 만날때 마다

그 데이터가 맞는지 비교를 해야 하는데 이것은 달라진 유저의 유저 디비에 변경 된 정보에 대해서 주고 받을때 함께 주고 받게 될 것이다.

단점 : 네트웍 리소스 부분







생각 할 문제.2

클라이언트 안에서 디폼 된 데이터 셋과 유저 디비에서 파라메터 정보만을 가져 올 경우.



처리 루틴은 아래와 같겠다.

서버 접속 - > 유저 디비 엑서스 - > 정보 리시브 - > 게임접속 -> 다른 플레이어들에게 유저 인포메이션 정보 센드. 타 유저들 유저 커스터마이징 파라메터 데이터 리시브 -> 화면에 보여짐.

출처 : http://universeonlinedev.blogspot.com/2010/02/flexible-character-customizing-1.html

[김재진] 3D 행렬

Programming/DirectX 2010. 5. 24. 01:31 Posted by 알 수 없는 사용자
// 1000 밀리초마다 한바퀴씩 (2*pi) 회전 애니메이션 행렬을 생성.
// (1.0f * D3DX_PI) 회전속도
FLOAT fAngle = iTime * (2.0f * D3DX_PI) / 1000.0;

// y축을 회전축으로 회전하는 행렬을 생성
D3DXMatrixRotationY(&matWorld, fAngle); 

 // 시점 좌표값 설정 d3dx9math.h 참조
 // 뷰 행렬을 정의하기 위해서 3가지의 값이 필요
 D3DXVECTOR3 vEyePt(0.0f, 3.0f, -5.0f);   // 1. 눈의 위치를 0.0f, 3.0f, -5.0f - 카메라 좌표
 D3DXVECTOR3 vLookatPt(0.0f, 0.0f, 0.0f); // 2. 눈이 바라보는 위치(0,0,0) - 사물의 위치
 D3DXVECTOR3 vUpVec(0.0f, 1.0f, 0.0f);    // 3. 천정방향을 나타내는 상방 벡터 ( 0,1,0)

D3DXMATRIXA16 matView; // 좌표를 저장할 변수 클래스 선언

// 1,2,3의 값으로 뷰 행렬 생성
 D3DXMatrixLookAtLH(&matView, &vEyePt, &vLookatPt, &vUpVec);

D3DXMatrixLookAtLH 함수 설명 및 왼손계 설정구현
http://blog.naver.com/peroz/60057859092

// 프로젝션 행렬을 정의하기 위해서는 시야각(FOV=Field of View)과 종횡비(aspect ratio), 클리핑 평면의 값이 필요
 D3DXMATRIXA16 matProj;
 // matProj     : 값이 설정될 행렬
 // D3DX_PI / 4 : FOV(D3DX_PI/4 = 45도)
 // 1.0f        : 종횡비
 // 1.0f        : 근접 클리핑 평면(near clipping plane)
 // 1.0f        : 원거리 클리핑 평면(far clipping plane)
 // 투영 변환 행렬 함수
 D3DXMatrixPerspectiveFovLH(&matProj, D3DX_PI/4, 1.0f, 1.0f, 100.0f);

 D3DXMatrixPerspectiveFovLH()함수와 D3DXMatrixLookAtLH()함수의 'LH' 는 왼손 좌표계를 의미한다.

위의 D3DXMatrixPerspectiveFovLH()함수와 D3DXMatrixLookAtLH() 함수를 각각  D3DXMatrixPerspectiveFovRH(), D3DXMatrixLookAtRH() 함수로 변경하면 회전하는 방향이 달라진다.


사용 lib
#pragma comment(lib,"d3dx9.lib")
#pragma comment(lib,"d3d9.lib")
#pragma comment(lib,"winmm.lib")

사용된 Header File
#include <Windows.h>
#include <MMSystem.h>
#include <d3dx9.h>
#include <d3d9.h>

'Programming > DirectX' 카테고리의 다른 글

[김재진]행렬의 곱셈 및 항등행렬 설명  (0) 2010.05.27
[손동진] 재질과 광원  (0) 2010.05.27
DirectX-정점  (1) 2010.05.20
DirectX-전체 화면 하는 방법  (1) 2010.05.19
스터디때 쓰일 발표 자료..  (1) 2010.05.17