밀어서 잠금해제

MikuMikuDance PMX 모델 파서를 이용해 렌더링해보았다. 본문

Programming||Study/DirectX

MikuMikuDance PMX 모델 파서를 이용해 렌더링해보았다.

HAYAN_DEV! 2014.09.06 16:30



왼쪽 - MASS 적용, 오른쪽 - MSAA 미적용
#근대_왜_미쿠댄이_더_자연스럽고_퀄리티가_높은거냐

아직 스피어(PMX 포맷 설명에서는 그냥 일본어로 スフィア 라고 나와있습니다. 이펙트 셰이더 소스코드를 살펴보면 Sphia라고 나와있는데 Sphere인지 뭔지 모르겠네요)를 어떻게 처리해야 하는지 감이 안잡힙니다.
추측으로는 미쿠댄 방식대로 dist ratate_x_y_z의 값을 일일이 하나하나 저장해놓고 이걸 토대로 카메라를 구현한 후, 회전행렬을 만들어 VertexNormal * matRotate 형식으로 곱해주는게 아닌가 라는게 현재 추측 입니다.
하지만
카메라 구현하기 귀찮아 -ㅅ-; (일해라)

매직넘버 노가다와 MikuMikuDance를 잠시 뜯어(...) 이펙트 셰이더를 추출해서 대충 어떻게 렌더링 하는지는 보았습니다.
어음.. 뭐하는 코드인지 이해가 불가능합니다. 일단 따라 타이핑 해본 결과가 위 사진이긴 합니다.(그런데 베껴써도 결과가 똑같이 안나와!? 어떻게 된거야!?)
코드를 보면 아시겠지만 캐릭터 텍스쳐 샘플러를 s1 이라고 이름 지어놓고 주석으로 샘플러 라고 써놓은 센스를 보아 아마도 누군가 봐도 분석하기 어렵게를 노린게 아닌가 싶으니(그렇게 믿고싶습니다.)
코드를 암호화 안해준 것 만으로 감사히 여겨야겠습니다.

일단 위 사진은 대충 PCF 기법을 사용한 그림자 맵과 대충 VIew행렬 때려넣은 스피어와 게임 개발 포에버에 나온 글을 참고하여 외곽선을 구현한 결과입니다. 제 실력의 혼자 덩그러니 있는 무쓸모 소립자 수준이라 이거 만드는데만 한달 걸렸네요 -ㅅ-;;

시작은 엔하위키에 미쿠댄이 사실상 오픈소스랑 다름 없다 라는 내용을 보고 어라 그래? 하고 개발 시작한건데 오픈소스는 개뿔때기나 정보가 드럽게 없어서 개노가다짓을 하고 있습니다.
뭐 그나마 최신버전의 미쿠댄에서 셰이더 파일을 뜯어네 카툰렌더링을 어떤 방식으로 하는지 알아낸것 만으로도 감격의 눈물이...
사실 이 셰이더 뜯어내는 방법은 안쓰려고 했던 방법인데 2주 동안 아무리 값을 바꾸고 방식을 바꿔봐도 똑같이 안나오길래 결국 써버렸습니다..

이거 만들면서 느낀게 카툰 렌더링 만드는 방법은 참 많구나.. 하나와 만들기 진짜 귀찮구나... 정도..

만들면서 멘붕했던건

1. 카툰 렌더링 방법. 셰이더 뜯고 어느정도는 해결 됨.
2. Toon 텍스쳐는 대체 뭐냐... 현재 추측으로는 float2 ToonUV = float2(그림자_맵_에서_얻어온_깊이_값, 텍스쳐UV.v) <-인데 테스트는 아직입니다.
3. 스피어.. 이것도 추측일 뿐...
4. 추가 UV가 뭔지 모르겠음.
5. 모프가 뭔지 모르겠음.
6. 캐릭터 애니메이션도 문제라면 문제인데 BDEF라던가 뭐 이런 본 방식들이 뭘 말하는건지 전혀 모르겠음ㅜ_ㅜ..
7. 애초에 미쿠댄스 사용 방법도 모릅니다(사용해 본 적이 있어야지...)
8. 한자를 읽을 줄 모름... 일본에서 만든거다 보니 Wiki라던가 대부분의 글이 일본어라 한문이 들어가 있는데 번역기의 한계 때문에 읽기가 힘듭니다..

그럼 저는 이제... 아마도 애니메이션을 구현하러 가야겠군요... 으음.. 다..다녀오겠습니다.
좀 더 자세한 구현 이야기는 다음 멘붕 시간에뵈여!

0 Comments
댓글쓰기 폼