[3D][DirectX] Xi5 소스

Xi5.zip

XI5의 움직임을 구현했던 프로그램의 소스입니다.

DXUT를 기반으로 작성되어 있습니다.
소스파일들(DXUT포함)과 이미지만 첨부했습니다.
컴파일 하고 싶으시면 프로젝트 만들어서 넣어주세요.

3D 처음배울 때 짠 습작이라, 여러모로 엉성합니다 --;;


구현방법에 대한 것은 예전에 아래 페이지에 설명한 것을 참고바랍니다.
[3D][DirectX] 평면위에 굴러가는 주사위


by hellz | 2009/10/27 01:49 | Workshop | 트랙백 | 덧글(0)

[Direct3D] ID3DXSprite로 BillBoard 사용하기

몇년전 DX가지고 이런말 하는 것도 우습지만, DX가 버전업하면서
단순한 스크린평면에 텍스쳐를 뿌리는 것뿐이었던 ID3DXSprite가 여러가지 기능을 탑재하게 되었습니다.

그중 빌보드를 구현할 수 있다는 내용도 포함되어 있죠.
예전에는 기능이 있다는 것만 알고 넘어갔는데
얼마 전 수업에서 언급되었길래 한번 사용법을 찾아봤습니다...


당연히 3D상에서 빌보드효과를 위해선 월드좌표상에서 텍스쳐를 뿌려야겠죠...
(g_SP가 ID3DXSprite 객체입니다. D3DXCreateSprite로 생성합니다.)

g_SP->Begin(D3DXSPRITE_BILLBOARD | D3DXSPRITE_OBJECTSPACE);

그리고 출력을 합니다.

g_SP->Draw(g_pTxFloor, NULL, NULL, NULL, 0xffffffff);


당연히 제대로 출력될 리가 없죠...
BillBoard는 항상 카메라를 향하며 회전하므로, 그에 대한 정보를 넣어줘야 하니깐요.
카메라 정보를 전달해 주는 것은 SetWorldViewLH메소드가 맡고 있습니다.

g_SP->SetWorldViewLH(NULL, &mxView);


문제는 SetWorldViewLH의 호출 위치입니다!!!
이 함수는 Begin과 End내에서 호출하면 실패하게 됩니다.
반드시 Begin 앞에서 호출해줘야 합니다!!!

이것때문에 좀 해맸네요...
빌어먹을... MSDN에도 명시되어 있지 않습니다...



몇가지 유추한 것들을 적자면

SetWorldView의 WorldMatrix는 BillBoard에선 사용하지 않는 듯 싶습니다. 값변화가 적용되지 않습니다.
대신 위치를 지정할땐, Draw의 Position Vector로 입력해주면 됩니다.
또한 빌보드의 회전축은 기본적으로 이미지의 좌하단입니다. (Draw시 NULL 입력할때)

정상적인 빌보드로 사용할려면 이미지의 중심을 센터로 잡아줘야 하는데,
이때의 좌표값은 텍스쳐의 물리적 위치입니다. (일반적으로 1.0으로 맵핑되는 방식이 아닙니다.)
예를 들어 512x512이미지라면 256, 256를 넣어줘야 중심으로 지정됩니다.

그리고 월드스페이스상의 메쉬의 크기는 별도의 지정하는 게 안보이고
상대적으로 매우 커지는 것으로 봐선, 이미지의 크기만큼 메쉬를 생성하는게 아닐까 싶네요.
적당히 스케일해줘야겠죠... 자세한건 실험해보거나 문서를 찾아보면 되겠죠...


써 본 감상으로는....
그냥 빌보드 오브젝트 따로 만들어서 쓰고 말겠습니다....
만드는 것도 간단하고, 다른 메쉬들과 호환성도 유지할 수 있고 말이죠... 커스텀도 가능하고...

외국쪽에서도 그렇고, 자료 정말 없네요.....
하긴 그다지 필요 없어보이긴 하죠 --;;;








by hellz | 2009/10/23 23:59 | Programming | 트랙백 | 덧글(0)

[COMPUTER] PC에서 위모트를 쓰자(Wii remote with WIDCOMM Stack]

위드컴 스택(WIDCOMM Stack]을 사용하는 블루투스 동글과 PC를 페어링 하는 방법입니다.

많은 글들이 블루소레일이나 도시바스택을 이용하던데, 위드컴스택도 잘 작동하더군요.
위키에서 호환성을 살펴보면 같은 칩셋/스택을 쓰더라도,
인식여부가 틀린 경우도 있는듯 합니다.

제조사마다 제공되는 스택이 다르기는 하나
동글의 VID와 PID를 이용해서 강제로 인식시킬 수 있으니 스택은 원하는데로 설치하는게 좋겠죠.

제가 구입한 동글은 유니콘의 BW-200U입니다. (사진은 다른 포스팅을 참조)
브로드컴의 2045 칩을 사용했으며, 스택버전은 4.0.1.2900입니다.



우선 작업표시줄 우측의 아이콘을 클릭하여 블루투스 환경을 띄웁니다.
페어링을 위해선 좌측의  'Bluetooth 설정 마법사'를 클릭해 줍니다.

그러면 다음과 같은 창이 뜹니다.
간단하게 설정하기 위해 2번째항목을 선택한 후 다음으로 넘어갑니다.
다음을 누루기전에 위모트의 1번과 2번버튼을 동시에 눌러 페어링을 준비하는 것을 추천합니다.


다음과 같이 닌텐도 어쩌구하면서 위모트가 검색된걸 알 수 있습니다.
만약에 위모트가 검색되지 않으면, 위모트의 1번과 2번버튼을 누른체 다시 검색을 해줍니다.



위모트를 선택한 뒤, 다음으로 넘어가면 PIN코드 생성하는 창으로 넘어가게 됩니다.
이 부분이 중요한데, "쌍 생성 건너 뛰기"를 클릭해서, PIN체크를 건너 뜁니다.
위모트에는 PIN코드가 없다고 하네요.
그러니 임의로 PIN를 입력해서 생성하면 페어링이 실패하게 됩니다.
다른 스택들에서도 PIN코드를 설정하는 부분이 나오면, 입력하지 말고 건너뛰시기 바랍니다.

이제 사용할 서비스를 검색하는 화면이 나옵니다.
여기서도 하나 중요한건 마침버튼이 활성화 되었다고 클릭하면 안됩니다.
그대로 놔둡니다.



조금 기다리면 다음과 같이 인터페이스 서비스가 뜨게 됩니다.
이제 이 항목을 선택한 뒤, 마침을 클릭하면 페어링에 성공하게 됩니다.



다음과 같에 페이링에 성공하였습니다.
사용한 블루투스 동글은 수신거리가 상당히 길더군요.
집밖의 블루투스 장비로 찾아내고, 문 밖에 위모트를 놔두더라도 연결이 끊기짆 않습니다.
그러나 위치를 이동하면 신호세기가 일시적으로 약해지더군요.
물론 사용하는데 지장은 없습니다.


WiiInRemote화면입니다.
순조롭게 수신이 되는것을 알수 있습니다.



나중에 시간내서 LED로 IR바를 만들어봐야겠네요.

by hellz | 2009/09/14 02:35 | etc Infomation | 트랙백 | 덧글(0)

[COMPUTER] XP에서 블루투스 싱크[ ActiveSync with WIDCOMM Stack]

비스타 상에선 블루투스로 엑티브 싱크하는게 쉬운듯 합니다만
XP, 정확히는 엑티브싱크 4.5에서 싱크하는건 조금 손이 가는 듯합니다.
(엑티브싱크에는 블루투스로 싱크한다는 메뉴가 없죠.)

일단 대략적인 기본틀은 맞다고 생각하지만, 끝내고 쓰는거라 빼먹은게 있을지도 모르겠네요.


많이 쓰는 블루투스 스택(PC에서 블루투스기기의 접속을 관리하는 프로그램)은 3가지 정도 있는 듯합니다.
도시바스택, 블루소레일, 위드컴.
제 동글에서 기본으로 제공한 프로그램은 위드컴이므로, 여기서 접속법을 써볼려고 합니다.
다른 스택들의 접속법은 검색하면 자세한 글을 찾을 수 있을겁니다.

사실 기본원리는 비슷하다고 볼수 있죠.

기본적으로 싱크요청은 PC상이 아니라, 모바일 기기에서 해야 합니다.
왜냐하면 엑티브싱크에선 블루투스로 싱크하라는 설정 및 메뉴가 없기때문이죠.


우선 블루투스창을 띄웁니다.
보통 작업표시줄의 오른쪽에 블루투스 아이콘을 더블클릭하면 뜨죠.
블루소레일이나 도시바스택과는 퍽 다르죠?
여기서 좌측의 구성보기 또는 수정을 클릭합니다.


화면과 같은 블루투스 설정창이 뜹니다.
이걸보면 알수 있듯이 위드컴의 스택은 다른 스택들과 틀리게 독자적인 UI를 쓰지 않고
위도우의 기본프로그램들과 비슷한 모습을 하고 있는 걸 알수 있죠.
여기서 로컬서비스탭을 클릭합니다.

항목들을 보시면 엑티브싱크가 있는 것을 알 수 있습니다.
여기 우측에 있는 COM포트를 잘 기역해 둡시다.
만약 포트를 변경하고 싶으면 등록정보에 들어가서 원하는 포트로 변경할 수 있습니다.


다음은 엑티브싱크를 엽니다.
파일메뉴의 연결설정을 클릭합니다.


연결설정 창이 뜨면
'다음 중 한가지 연결 허용'에 체크해 준뒤,
스택에서 알아낸 포트를 설정해 줍니다.


여기까지 설정하면 PC에서 할 일은 없습니다.
나머지는 모바일 기기에서 설정해주는 것뿐입니다. 제 경우는 블랙잭(M620)입니다.

모바일 기기에서 블루투스를 활성화 시키고, PC와 페어링을 시킵니다.(이 과정은 묘사하지 않겠습니다)
중요한건 페어링과정중 사용할 서비스를 선택하는 것입니다.

PC에서 제대로 설정했다면 위와 같이 엑티브싱크가 서비스에 뜹니다.
만약에 뜨지 않으면 메뉴를 눌러 새로고침을 해보고, 그러고도 뜨지 않으면 PC설정을 다시 해봐야합니다.




이 화면은 PC에서 제대로 설정하지 않았을때 입니다.
보시는것과 같이 엑티브싱크가 직렬포트로 표시되죠. 이 상태에선 엑티브싱크가 되지 않습니다.



이런식으로 페어링 설정을 마친후 모바일기기에서 엑티브싱크를 띄웁니다.

메뉴를 눌러 Bluetooth를 통해 연결을 눌러주면 됩니다.

다음과 같이 엑티브싱크가 성공했습니다.
만약 파트너관계가 어쩌구 나오면 페어링을 다시 해줍니다.

페어링에 관한 자세한 묘사는 제외하였습니다.
당연히 페어링중에는 PC에서 해당 연결에 대해 접속승인을 해주어야 합니다.
이것은 작업표시줄 우측에서 알림창으로 접근상황을 알려주니,
블루투스 아이콘을 클릭후 승인해주면 됩니다.

이건 짐작이지만 엑티브싱크에선 블루투스로의 직접적인 연결을 하지 못하고
USB나 직열포트로만 싱크가 가능하기때문에, 스택에서 페어링후, 해당포트로 포팅해주는게 아닐까 싶습니다.
그러므로 싱크요청은 반드시 모바일기기를 통해서만 가능한 듯 한네요.

그리고 블루투스 페어링을 위해선 USB로 싱크해야 한다는 글도 있는데,
확실한지는 모르겠네요. 이미 USB로 싱크해본 상태에서 시도했기때문에 확인이 불가능합니다.
그리고 위의 짐작이 맞다면 USB로 싱크하는 것과는 별로 상관이 없어보이네요.


사실 블랙잭을 쓴지 1년 가까이 되가지만 아직까지 엑티브싱크를 사용하진 않았습니다.
예전 3850를 쓴땐 뉴스나 날씨, 백업을 위해 자주 싱크했는데 말이죠.
지금은 백업은 Sprite Backup를 통해 가능하고, outlook를 관리하는 것도 귀찮고,
뉴스같은건 무선랜으로 볼수 있으니, 그다지 필요성을 못느끼겠더군요.

이번에 싱크에 도전한건 단순히 메모리카드를 빼지 않고 파일전송을 위해서였지만
이게 상당히 느리네요. 그렇다고 OBEX FTP는 대용량 파일은 전송이 안되는 듯하고요.
저용량이나 한가할땐만 쓰고, 바쁠땐 메모리카드에 직접 조작해야 할듯 합니다.

by hellz | 2009/09/13 15:38 | etc Infomation | 트랙백 | 덧글(0)

[BUY] 블루투스 동글/위모트 구입 + a




블루투스 어댑터입니다. 보통 동글이라고도 하죠.
일단 위모트를 PC에서 쓰기 위해서 몇몇 제품을 찾아봤는데,
외국의 위키에 있는 호환리스트에서 국내에 시판중인 제품을 찾을 수 없더군요.

처음엔 빌리x트 class1을 구입할까 했는데, 외국본사홈페이지에서 정보를 찾을 수 없었습니다.
class1 이란 제품명으로 판매되는 제품도 있긴 한데, 국내에서 풀리는 것과 형태가 전혀 달랐죠.
이런저런 이유로 꺼려져서 제외... (참고로 외국제품은 형태도 틀리고 외부 안태나가 있음)

그 다음에 찾게 된 제품이 이 제품입니다. 유니콘에서 나온 BW-200U...
가격도 소형 동글(아주 작은 동글들)에 비해 별 차이가 안나는데다가
class1 성능을 자랑합니다. 크기도 초소형 USB메모리와 비슷하므로 이동성도 크게 다르지 않죠.
일단 잠시 써봤는데 괜찮은거 같네요..



위모트와 눈차크입니다.
블루투스 동글로 PC에서 쓰기 위해 구입했습니다. 물론 Wii는 보유하고 있지 않죠 --;
애들은 저번달에 있던 인터파크 이벤트로 시세보다 싸게 구입했습니다.
매일 추첨으로 포인트를 지급해주는 이벤트였죠..
처음에 5000포인트. 매일 추첨으로 100~ 포인트를 받을 수 있었습니다.
매일 한번씩 찍으니, 구입 전까지 12200포인트를 받을 수 있었습니다.
그래서 쿠폰 할인을 포함해서 위모트는 21280원(정가 28000) 눈차크 11400(정가 15000)에 구입.. .
남은 포인트로는 여신전생FES3 를 구입했죠.


결과만 쓰자면 위모트 인식은 비교적 쉽게 성공했습니다.
동글에 제공된 WIDCOMM 블루투스 스택만으로 쉽게 인식되더군요.
이것에 대해선 나중에 쓰죠..



동글과 같은 시기에 구입한 4G 메모리입니다.
음악과 강의녹음으로 쓰던 mp3를 잊어먹어서, 블랙잭으로 대용하기 위해 큰 메모리를 주문했습니다.
LG브렌드가 그다지 믿음직스럽지는 않지만, class6에 가격도 저렴한 편이어서 그냥 주문했습니다.
원래는 샌디스크껄 살려고 했는데, 남은 인터파크 포인트를 샌디스크 코리아 제품에선 쓸 수 없더군요 --;;



이제 몇일은 그동안 방치한 블로그에 집중적으로 포스팅이나 해야겠네요..
이건 몇일이나 갈려나 --;

by hellz | 2009/09/12 13:34 | Talk | 트랙백 | 덧글(2)

◀ 이전 페이지          다음 페이지 ▶