에에..시스템 이미지란..
내컴퓨터나 휴지통, 폴더 아이콘등 윈도우의 기본적인 이미지를 말한다.

에에... 대략 이런 프로그램을 만들때 필요하다.


왼쪽에 있는 폴더 창과 오른쪽의 파일리스트 창과는 살짝 차이가 있다.

일단 왼쪽의 폴더 창에서는
폴더의 열린 모양과 닫힌 모양이 필요하다

m_ImageList.Create( 16, 16, ILC_COLOR32, 0, 0 );
rTree.SetImageList( &m_ImageList, LVSIL_NORMAL );

TCHAR szTemp[MAX_PATH];
GetSystemDirectory( szTemp, MAX_PATH );

_tcscat_s( szTemp, MAX_PATH, _T( "\\Shell32.dll" ) );

HICON hIconSmall;
ExtractIconEx( szTemp, 3, NULL, &hIconSmall, 1 );
m_ImageList.Add( hIconSmall );

ExtractIconEx( szTemp, 4, NULL, &hIconSmall, 1 );
m_ImageList.Add( hIconSmall );


이런식으로 Shell32.dll의 이미지를 뽑아다 쓴다.
이미지 리스트를 Create할때 ILC_COLOR32가 아닌걸로 하면 알파가 제대로 안빠지므로 주의!

위에 보면 ExtractIconEx에 두번째 인자가 이미지 번호다
다른 번호를 넣으면 다양한 아이콘들을 가져다 쓸 수 있다.

그리고 오른쪽 파일창같은 경우는 이것과는 다른데
파일 확장자별로 연결되어 있는 아이콘을 가져다 써야 한다.
처음에 대략

HIMAGELIST hSystemImgListSmall, hSystemImgListLarge;
Shell_GetImageLists( &hSystemImgListLarge, &hSystemImgListSmall );
m_ImageListSmall.Attach( hSystemImgListSmall );
m_ImageListLarge.Attach( hSystemImgListLarge );

rListCtrl.SetImageList( &m_ImageListSmall, LVSIL_SMALL );
rListCtrl.SetImageList( &m_ImageListLarge, LVSIL_NORMAL );
이런식으로 해준뒤에

SHFILEINFO sfi;
SHGetFileInfo( rFilename.c_str(), 0, &sfi, sizeof(SHFILEINFO), SHGFI_USEFILEATTRIBUTES | SHGFI_DISPLAYNAME | SHGFI_ICON | SHGFI_TYPENAME );
하면 sfi.iIcon이 가져온 이미지 리스트의 아이콘 인덱스가 되겠다.

여기서 대략난감했던 부분이 파일리스트에서도 폴더 아이콘이 필요하다는 거였는데.

SHFILEINFO sfi;
SHGetFileInfo( (LPCTSTR)"Does not matter", FILE_ATTRIBUTE_DIRECTORY, &sfi, sizeof(SHFILEINFO), SHGFI_ICON | SHGFI_USEFILEATTRIBUTES);
대략 이런식으로 가져올 수 있다.
혹시나 폴더 열린 아이콘이 필요하다면(아마 필요없겠지만) 알아서 이미지리스트를 합쳐서 쓰삼-_-;

devpia에 내용을 다 충족하는 내용들이 없어서 여기저기 뒤지고 삽질하고 고생했다.

참고로 vs2005에서는 (2003도 되는거 같다.)
처음에 MFC어플리케이션 만들때 익스플로러 스타일~ 을 체크해주면 위에처럼 알아서 스플리트 윈도우로 왼쪽엔 트리뷰 오른쪽엔 리트스컨트롤뷰로 붙여주니까 쓸데없는 삽질은 하지 말쟈-_-;

그나저나 오랜만에 어플리케이션 프로그래밍을 하자니 재밌다
에...만들고 있는 프로그램의 용도는 리소스 팩 파일 관리프로그램이다.
머 재밌기는 하지만 패치 프로그램을 만들어야 해서 Drag&Drop까지만 하고 치울 생각이다.
어플리케이션 내로 Drag는 메세지 핸들링만 해주면 되니까 쉬운데 밖으로 빼는건 꽤 난이도가 있을듯.

최초작성 : 2005-09-08 15:03

- 추가된 내용 ( 2006.02.23 )
max7은 맥스 자체내의 버그로 Edit Normals Modifier의 노멀값을 제대로 못뽑아온다.
그래서 이 방법은 max7에서는 사용못하고 max7이하에서는 face를 덧대서 만들어서 hide시키는 방식으로 해야한다.
max8에서는 정상적으로 나오는걸 확인함

ps. 귀찮아하시는 분들을 위해 원본, 쪼갠후, Modify넣은후의 맥스파일을 첨부한다


캐릭터에 분절을 넣어서 부위별 아이템 교체를 하기 위해서 팔다리를 자르다 보면 위와 같이 별도의 오브젝트여서 노멀이 연속되지 않는 경우가 발생한다.

노멀 수정을 해줄 오브젝트를 선택하고 Edit Normals Modifier를 넣어준다.
위 그림에서는 둘 다 같이 잡았음

그럼 이렇게 각 버택스의 노멀값이 라인으로 표시되는데 수정을 해줄 노멀들을 드래그 해서 선택해준다.

그리고 Average의 Use Threshold를 체크 해주고(체크하지 않으면 선택된 노멀의 전체 평균이 나와버린다)
Select를 눌러주면 위와 같이 같은 위치의 노멀들이 평균되게 수정되어 연속된 노멀을 구할 수 있다.

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

이걸 몰라서 한참 삽질했다-_-

엔진담당 프로그래머임에도 맥스를 잘 쓰지 못해 오브젝트 모양이 엉망인거는 양해해 주기 바란다-_-;;;
그나마 위에꺼처럼 오브젝트 찌그러트려서 두 개로 나누는것도 모델러 어깨너머로 컨닝했다-_-;



'자료 > 내자료' 카테고리의 다른 글

MSB/LSB template  (0) 2006.05.18
is_template  (0) 2006.05.10
enum string  (0) 2005.07.08
텍스쳐 포맷 변경해서 저장하기  (0) 2005.05.16
Alkanoid프로젝트 완료  (0) 2004.12.23



상위모델 기다리다 지쳤삼

'지르기 > 장난감' 카테고리의 다른 글

[XBOX360] 플레이 앤 충전 키트  (0) 2006.05.10
xbox360  (0) 2006.05.07
휴클래스 다이또 안마의자(CHD-832)  (0) 2006.02.16
2006년 파나소닉 안마의자 EP1270  (1) 2006.02.14
무우상 갤러리 - 피규어  (0) 2005.12.20

'지르기 > 장난감' 카테고리의 다른 글

xbox360  (0) 2006.05.07
LG XNOTE M1-J222K  (0) 2006.02.17
2006년 파나소닉 안마의자 EP1270  (1) 2006.02.14
무우상 갤러리 - 피규어  (0) 2005.12.20
무우상 갤러리 - 랜덤  (0) 2005.12.20

'지르기 > 장난감' 카테고리의 다른 글

LG XNOTE M1-J222K  (0) 2006.02.17
휴클래스 다이또 안마의자(CHD-832)  (0) 2006.02.16
무우상 갤러리 - 피규어  (0) 2005.12.20
무우상 갤러리 - 랜덤  (0) 2005.12.20
Dell LCD Monitor UltraSharp 2405FPW  (0) 2005.11.14

경사면 처리를 위해서 IK를 넣었고

다리가 체인이 두개뿐이라

삼각형의 각 길이를 알때 각도 구하기...를 네이버에게 물어봐서 넣었다-_-;

그리고 발을 경사면각도랑 맞추는건 너무 인위적인 느낌이 나서 걍 빼버렸다..


그래놓고 나니..

이게 매번 양쪽발이 지형을 뚫는지를 피킹해야 하다보니..

부하가 꽤 크다-_-

물론 공간구조를 최적화 한다던가 매프레임 하는게 아니라 띄엄띄엄 한다던가...하면 좀 나을수도 있겠지만

근본적인 해결책은 아닌지라 내 Player만 하기로 결정-_-;


'게임개발 > 풍류공작소' 카테고리의 다른 글

과연  (0) 2006.04.27
클베 직전 막판 뒤집기  (0) 2006.04.25
오늘은 클베날  (0) 2006.04.25
클베 1주일전  (0) 2006.04.18
CPPTooltip  (0) 2005.11.23

+ Recent posts