셰이더 책이 드디어 예약판매에 들어갔답니다. ^_^ 줄간일이 7월 31일이군요.. 알려주신 김경진님꼐 감사드립니다.
2012년 7월 27일 금요일
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 파일에서 제가 원하던 키프레임 정보를 읽어올 수 있어서..... 결국 사용하지 않았죠.. 뭐든간에... 알아두면 유용한 지식!
XML 파일을 그대로 읽어올 수 있는 C# 클래스를 자동으로 생성하는 것... 예전에 CAT 릭을 사용한 애니메이션 데이터를 3DS Max에서 읽어와서 Unity안에서 쓰려고 할 때 시도해봤던 겁니다. FBX파일을 CAT 릭에서 IK를 사용한 애니메이션 데이터를 제대로 export하지 않거든요. FBX에서에서 돌게하는 유일한 법은 애니메이션을 각 프레임 별로 bake하는건데 전 key frame 정보를 사용하고 싶었어요. 그래서 FBX 대신에 3DS Max에서 곧바로 XML 파일로 애니메이션을 저장할 수 있는 자체 기능을 써볼려고 했죠.
XML 파일을 저장해낸 뒤에 이 파일을 한번 문서편집기에서 열어봤죠. 데이터 구조가 그리 복잡하지 않다면 XML 파일을 곧바로 deserialize할 수 있는 C# 클래스를 손수 작성할수 있을거라 생각했거든요. 근데.... 그게 아니더군요.. 너무 복잡해요 -_-;;; 그래서 다음으로 생각한게.. '이걸 자동으로 해주는 툴이 있지 않을까?' 하는 것...
구글에서 검색을 해보니 스택오버플로우 에서 비주얼 스튜디오에 딸려나오는 xsd.exe을 이용하면 이게 가능하더다군요:
- http://stackoverflow.com/questions/226599/deserializing-xml-to-objects-in-c-sharp
- http://stackoverflow.com/questions/87621/how-do-i-map-xml-to-c-sharp-objects
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 파일에서 제가 원하던 키프레임 정보를 읽어올 수 있어서..... 결국 사용하지 않았죠.. 뭐든간에... 알아두면 유용한 지식!
피드 구독하기:
글 (Atom)