2012년 7월 27일 금요일

셰이더 프로그래밍 입문 책 예약판매 시작합니다.

셰이더 책이 드디어 예약판매에 들어갔답니다. ^_^ 줄간일이 7월 31일이군요.. 알려주신 김경진님꼐 감사드립니다.




셰이더 프로그래밍 입문 예약판매

2012년 7월 10일 화요일

대체 왜 이걸 다시 구현해야하는 거지?


요번주에 마무리짓고 싶은일... 다음달에 시그래프 2012에서 발표할 스크린 스페이스 데칼 프리젠테이션 마무리하기. 그냥 PPT파일만 하나 만들면 되는거였다면 좀더 열심히 해서 끝냈을지도 모르겠다. 하지만 Relic Entertainment에서 퇴시한 지금 코드도 내 수중에 없고 맵 에디터도 없다는것... 따라서 이 모든 기능들을 다시 대충 만들어서 데모 프로그램을 만들었음... 그래야 스샷도 찍을수 있을테니까.

솔직히 말하면 꽤 지겨운 일이다. 이거 재구현함으로써 새로 배우는것도 없고 개인적인 발전이 있는것도 아니니까. 이미 너무나 잘 알고 있던거 그냥 반복하는 수준.. -_-; 뭐든간에 모든 기능 구현은 끝냈고, 테스트 아트들도 다 배치해놨으니.... 요번주에만 끝내면 되겠지...

프리젠테이션 준비 마무리하면 좀더 시간을 투자하고 싶은 프로젝트가 2개 있으니.. 그걸 구실삼아 어떻게든 프리젠테이션 준비를 요번주에 마무리할 수 있지 않을까... 하는 희망만 품어봄..

어디 어찌되는지 두고보자.. -_-

2012년 7월 9일 월요일

XML 데이터를 읽어올수 있는 C# 클래스 자동생성하기

예전에 작성해놨던 작업일지에 보니 이게 있네요. 그래서 까먹기전에 재빨리 포스팅합니다. 뭐 혹시 다른 분께 도움이 될 수도 있으니....

XML 파일을 그대로 읽어올 수 있는 C# 클래스를 자동으로 생성하는 것... 예전에 CAT 릭을 사용한 애니메이션 데이터를 3DS Max에서 읽어와서 Unity안에서 쓰려고 할 때 시도해봤던 겁니다. FBX파일을 CAT 릭에서 IK를 사용한 애니메이션 데이터를 제대로 export하지 않거든요. FBX에서에서 돌게하는 유일한 법은 애니메이션을 각 프레임 별로 bake하는건데 전 key frame 정보를 사용하고 싶었어요. 그래서 FBX 대신에 3DS Max에서 곧바로 XML 파일로 애니메이션을 저장할 수 있는 자체 기능을 써볼려고 했죠.

XML 파일을 저장해낸 뒤에 이 파일을 한번 문서편집기에서 열어봤죠. 데이터 구조가 그리 복잡하지 않다면 XML 파일을 곧바로 deserialize할 수 있는 C# 클래스를 손수 작성할수 있을거라 생각했거든요. 근데.... 그게 아니더군요.. 너무 복잡해요 -_-;;; 그래서 다음으로 생각한게.. '이걸 자동으로 해주는 툴이 있지 않을까?' 하는 것...

구글에서 검색을 해보니 스택오버플로우 에서 비주얼 스튜디오에 딸려나오는 xsd.exe을 이용하면 이게 가능하더다군요:
뭐 결국 제가 실행해야할 컴맨드라인 명령은 다음 두 줄 뿐이었습니다.

xsd test.xml /classes -> test.xsd
xsd test.xsd /classes -> test.cs

첫째 라인은 XML 파일로부터 XML 스키마 파일을 만드는거구요. 두번째 라인은 스키마 파일로 부터 C# 클래스를 생성하는 겁니다. 일단 test.cs 파일을 만든 뒤에 제가 할 일은 C#에서 자체적으로 지원하는 XML Serializer를 이용해서 C# 개체로 모든 데이터를 읽어오는 게 전부였죠. 대충 이렇게 보이는 코드입니다.

XmlSerializer x = new System.Xml.Serialization.XmlSerializer(typeof(test));
FileStream stream = File.Open(@"test.xml", FileMode.Open);
var a= (test)x.Deserialize(stream);

매우 간단하죠? 저도 너무 간단해서 놀랐어요 -_-;;; 근데 불행히도 XML 파일에서 제가 원하던 키프레임 정보를 읽어올 수 있어서..... 결국 사용하지 않았죠.. 뭐든간에... 알아두면 유용한 지식!