사용자 삽입 이미지


근래에Kickstarter에서 Sprite DLight라는 녀석을 알게되었는데
단순 이미지에서 노멀맵을 추출해주는 보조 프로그램으로
출력되는 노멀맵을 보면 상당히 괜찮게 나오는것같습니다.
라이트 버전은 $25 프로버전은 $40로 보통 유니티 에셋과 가격대네요.

차후에 프로젝트를 진행하면서 쓸일은 없겠지만 개인 프로젝트때 쓰게되면 상당히 좋은 연출을 줄수있을것같아서 노멀맵 추출하는 작업을 직접 한번 도전해보았습니다.

사용자 삽입 이미지

사용자 삽입 이미지

사용자 삽입 이미지

Art and sprites from the Dragon’s Crown (ドラゴンズクラウン, for PS3 and PS Vita) http://dragons-crown.com/

테스트 동영상



생각보다 원하는 퀄리티가 나오지않아서 Sprite Dlight의 동영상을 보니 노멀맵추출하는 알고리즘이
상당히 잘되어있다는 것을 깨달았습니다.

저는 단순히 edge추출해서 해당 엣지에 단순히 bump효과를 준거였는데 비하여
이 프로그램에서는 음영(gradient)을 검출해서(sobel algorithm) shape를 검출해주고
이의 볼륨감을 조정해줄수있게 되어있는데 전체볼륨과 디테일볼륨을 따로 조절할수있고
선명도 조정이라던지 단순히 이미지에서 추출하는 노멀맵이라 하기엔
상당히 좋은 퀄리티를 뽑아낼수있는것같습니다.

사용자 삽입 이미지



1.Original sprite by AlbertoV (DYA Games)
2.Normal map created by the GIMP plugin (same as PS plugin)
3.Normal map created by a common normal map generator with the original
sprite used as height map, followed by shape enhancement
4.Normal map created by Sprite DLight in one click
3. is the best result you can achieve with current automatic normal
map generators combined with clever techniques, although the result
is still pretty poor, it's more of a bevel effect, which is randomly
concave or convex, particularly at the edges of the shape.

결론은 좋은게 나와있으면 구입해서 사용해봅시다.
Posted by 랜스.

Leave your greetings here.

웹캠 업데이트 로직
 if( !m_cap.isOpened() )
 {
  return;
 }
 cv::Mat frame;
 m_cap >> frame;
 D3DLOCKED_RECT lr;
 ZeroMemory( &lr, sizeof(D3DLOCKED_RECT));
 LPDIRECT3DSURFACE9 suf = NULL;
 g_pTexture->GetSurfaceLevel( 0, &suf);
 D3DSURFACE_DESC sr;
 ZeroMemory( &sr, sizeof(D3DSURFACE_DESC));
 suf->GetDesc( &sr );
 suf->LockRect( &lr, 0, 0 );
 BYTE *surfPtr = (BYTE*)(lr.pBits);
 cv::Mat     m_image;
 frame.copyTo(m_image);
 unsigned char *pSurfPtr = static_cast<unsigned char*>(lr.pBits);
 if( frame.empty() )
  return;
 IplImage p_image = m_image;
 BYTE* pBufferData;
 for(UINT h = 0; h < sr.Height; h++)
 {
  for(UINT w = 0; w < sr.Width; w++) 
  {
   pBufferData = (BYTE*)lr.pBits + (h * (lr.Pitch)) + w * 4;
   pBufferData[0] = (BYTE)(p_image.imageData[h * p_image.widthStep + w * 3 + 0]);
   pBufferData[1] = (BYTE)(p_image.imageData[h * p_image.widthStep + w * 3 + 1]);
   pBufferData[2] = (BYTE)(p_image.imageData[h * p_image.widthStep + w * 3 + 2]);
   pBufferData[3] = (BYTE)255;
  }
 }
 suf->UnlockRect( );

코드에서 외부변수는 OpenCV에서 디바이스에서 영상을 지속적으로 입력받는cv::VideoCapture 의 m_cap 과 화면상에 렌더링해줄 g_pTexture밖에 없으니 기존 D3D를 하실줄 아는 분이 OpenCV의 Video관련 샘플을 한번 본다면 쉽게 자신이 원하는 대로 수정해서 사용할수있을거라고 생각합니다.



Posted by 랜스.

Leave your greetings here.

 한동안 포스팅을 않했었는데 하드정리겸 작업했던것들을 하나하나 정리해볼까..하는 생각에 뿌지직...  

 작년 봄쯤 프리랜서(백수) 로 지내던때 작업은 작업대로 해야되고 여자친구는 여자친구 나름 잘챙겨줘야하는데 전화는 그렇다치고 문자하려면 컴퓨터를 하다 문자가오면 키보드에서 손을땐뒤 핸드폰을 가지고와서 문자를 입력하고 키보드를 다시잡아야하는 귀찮음에 매우 힘들어하던 찰나...

http://lab.gamecodi.com/board/zboard.php?id=GAMECODILAB_Lecture&no=4&z=26

그 당시 이 글을 본뒤 몇가지 방법중 호스팅업체에서의 SMS충전방식으로 하기로한뒤 작업을 시작하였습니다. 이런거에 많은돈을 투자하고 싶지않았던 그당시의 저는 업체중에서 발송건당 가장싼곳에서 5000건을 결제를 하였답니다.( 이것이 가장 큰 실수야 실수... )

 그 뒤 업체에서 PHP로 제공해주는 API를 이용해 패킷분석을 끝마친뒤 C++로 컨버팅한뒤
3분요리처럼 빠르게 툴을 제작할수있다는 MFC를 이용하여 테스트하니 잘작동한다.

때마침 온 문자 이제 실전이다.

여자친구 의문자  : "아침밥먹었냐??"

(이때다 !! 배달소녀여 나의 문자를 보내다오!! )
...1..2...3.... 전송완료!

한 20분이 흘렀을까... 여자친구에게 오는전화...

여자친구 : "야 않자면서 답장을 왜않해?"
나 : "답장했는데?"



 여자친구는 이때 문자가 오지 않았다했고 몇차례 더 시도했지만 문자는 정상적으로 도착하지않았다.
몇시간뒤 여자친구를 만나 데이트를 하는 도중 거의 반나절 전에 작업하였던것으로 보냈던 문자들이
도착하는것을 보고는 "넌 나의 신뢰를 잃었어 아사달....."

 이러한 이유로 외장하드에 쳐박혀 있던것을 최근에 다시 정리하다가 키고 테스트해봤는데 않되더라...
이유는 New21에서 아사달로 바뀐지 몇년이 흐른 지금 데몬서버의 도메인이 변경되었고 sms를 보내는
API도 수정이되었기때문...

 아무생각없이 문자 전송이 느렸던것을 잊고는 다시 작업하고 배포를 생각해 문서화까지 해두었는데...
아사달서버의 문자전송 속도는 랜덤한것 을다시한번 느끼고는 봉인해버렸다...


Posted by 랜스.

Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/165
  2. 끼로 2011/05/17 12:23  Modify/Delete  Reply  Address

    네이트온쓰면 문자 와도 키보드로 보낼 수 있자나

    • 랜스 2011/05/19 00:35  Modify/Delete  Address

      SHOW는 않되지않나여?? 저거 말고도 그냥 이것저것에 다 갖다 붙여서 쓸려했는데 쓸모없..

  3. 나그네 2012/01/11 12:22  Modify/Delete  Reply  Address

    하지 않는 것은 안 하는 것입니다.

    하지 않는 것은 않 하는 것이 아닙니다^^

SVN 받는 곳   :  다운로드 
아파치 받는곳 :  다운로드

설치순서 : 아파치 -> SVN

프로젝트 생성
svnadmin create <프로젝트명>

암호설정
..\bin\htpasswd –c htpasswd <사용자명>

그외 프로젝트원들은
TortoiseSVN 를 사용하여 익스포트 임포트한다
Posted by 랜스.

Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/129
  2. GGotbo 2009/09/20 16:12  Modify/Delete  Reply  Address

    SVN 좋지 나도 좋아해.

  3. bluestruggle 2009/09/26 21:49  Modify/Delete  Reply  Address

    svn 좋더군요. putty랑 완소.

오래전 글인데 상당히 정리가 깔끔히 되어있어서 보기 좋은것같습니다.
완역하신분 감사합니다.


Posted by 랜스.

Leave your greetings here.



ASE에관련되서 정리가 잘된 파일을 발견해서 업로드합니다.
출처가 않적혀있네요 =_=... 흠 하여튼 요즘 공부하는데 있어서 좋은자료!!

[다운받기]

Posted by 랜스.
TAGS ,

Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/122
  2. 깐따삐야 2010/06/07 16:55  Modify/Delete  Reply  Address

    ase파일에 대해 이것저것 찾아보다가 왔는데 출처를 모른다고 올리신 자료가 있길래
    출처를 알려드리고저.......댓글까지 쓰네요 ㅡ.ㅡ;;
    네이버 카페 게임 개발자 네트워크 - 사향(mujige77) 님께서 올리신 자료군요..ㅋㅋ
    랜스님 개발자 네트워크에서도 좋은 정보 많이 주셨는데 블로그도 자료가 넘쳐 나는군요.
    잘 보고 갑니다^^

MS의 매직 디버깅 숫자들의 의미...
ABABABAB HeapAlloc으로 메모리 할당 후 가드 바이트에 채워진 값
CCCCCCCC 초기화 되지 않은 스택 메모리
CDCDCDCD 메모리 할당 후 초기화 되지 않은 힙 메모리
BAADF00D LocalAlloc(LMEM_FIXED)으로 메모리 할당된 후 초기화 되지 않은 값
FDFDFDFD 할당된 메모리의 전후 가드용 바이트에 채워지는 값
FEEEFEEE 힙 메모리를 해제한 후 채워지는 값

[##_kaAmo_##]
Posted by 랜스.

Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/66
  2. 0xdddddddd 2009/06/19 10:42  Modify/Delete  Reply  Address

    0xdddddddd 같은경우 delete 후 채워지는 값도있습니다.

Zlib에 대해 아시는가요?
오늘은 Zlib와 서로 인사를 나누는 시간을 가져봅시다....
일단 Zlib가 무엇인가에 대해 알아봅시다.
간단히 제가아는 범위내에선 리소스패킹시나 용량조금 쭐일때쓰는정도 밖에모르네요..
자세한 설명은 Wikipedia 에 나와있는 Zlib  을 한번 참고해보시면 좋을듯합니다.
Zlib 사이트 <-링크
사용자 삽입 이미지
[##_kaAmo_##]
Posted by 랜스.

Leave your greetings here.

VS2008 의 멤버변수 ,멤버함수 추가 마법사는 참으로 편리한 기능이다 =ㅇ=
대략적으로 많이 애용중인기능인데 IE8을 설치후부터 갑자기 저딴 에러가 뜨는게 아닌가 =ㅇ=..
[##_kaAmo_##]
사용자 삽입 이미지
이것에 대한 해결방법은 이곳 을 참고해서 알게되었다.
뭐 곧 패치가 나와서 해결되겠지만 =ㅇ= 그전까진 레지스트리를 수정하는 방식으로 해결해야한다고한다.


해결방법
일단 [ 실행 ] - [ regedit ] 를 실행한후 “HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones”
 의 경로에 “1000” 키 생성한다. 그리고 그속에  DWORD 타입으로 새로 생성후
이름을 "1207" 로 Data를0x00000로 해주면 이문제는 해결된다.
사용자 삽입 이미지

Posted by 랜스.

Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/51
  2. motonhj82 2009/04/21 16:16  Modify/Delete  Reply  Address

    전 저문제 때문에 컴퓨터를 거의 포멧해야되었죠;;
    IE7로 돌아갈려고 이것저것 건드리니깐 vs가 이상동작을 하더라구요;;

    • 랜스 2009/04/23 16:03  Modify/Delete  Address

      예.. 저도 설치중문제가 생겼었나해서 포맷할까 하다가 검색해보니 저와 같은 사례가 좀 있더라구요... 그래서 좀더 깊이 검색해보니 해결법이...

  3. eb&se 2011/10/12 21:06  Modify/Delete  Reply  Address

    감사합니다ㅠㅠ 오류때문에 고생했는데 덕분에 이제 되네요~

DLL환경에서 싱글턴구현시 문제점..
DLL과 프로그램 간의 프로세스가 달라서 싱글톤패턴으로 객체를 얻어와도 쓸수없다는걸
모르고 예전에 많이 헤멨던 적이있다.
해결방법으로는 Facade나 Adapter등을 이용한 링크!

STL사용시 생성과 연결 삭제에서의 문제점들...


그때는 아무것도 모르고 있었지만 그때 내가 있었던곳은 DLLHELL이라는 것이었던것이었다..

[##_kaAmo_##]
Posted by 랜스.

Leave your greetings here.