화이트데이 이야기 #2 - CS의 사용과 스키닝 화이트데이 제작기

실시간 애니메이션 작업에 3d studio MAX와 캐릭터스튜디오(이하CS)를
사용하는데 초기의 많은 개발자들이 좌절했다. 이때의 주요 장벽은
Reset Transform 문제와 CS의 NU(non-uniform) scaling 문제였는데,
맨땅에 헤딩하듯 이것저것 시도해보자 그 해법을 찾을 수 있었다.

Reset Transform 문제는 고질적인 것으로 요즘도 가끔 일어나는 일이다.
맥스에서 .3ds나 .x포맷으로 익스포트했을 때 이상하게 나타나는 것도
같은 문제.

캐릭터가 평행사변형처럼 찌그러지는 NU 스케일링 문제는 CS 2.1버전부터
해결이 됐는데 그 이전에 알아낸 우회책은 biped 헬퍼 오브젝트 자체의
원숭이 모양 기본 메시를 edit mesh에서 강제로 삭제하고,
모델러가 만든 메시를 attach하는 것이었다. 바이페드를 메시로
간주하고 편집하다니 조금은 지독한 방법인데... 나름대로 온갖 삽질을
해서 알아낸 방법이었다. 이렇게해서 찾아낸 해결책으로 데모를 만들어서
하이텔 게임제작 동호회에 올렸더니 사람들이 매우 신기해해서 방법을
많이들 물어봤다. 좀 특이했던 ASE파일을 살펴보면 알아낼 수 있었으리라
생각하는데...

애니메이션 다음은 스키닝(꺾어지는 관절의 폴리건 잇기) 처리였다.
그때쯤만 해도 스키닝을 하는 게임은 콘솔이든 PC든 흔치 않았고,
3D 좀 만져본 사람들은 다들 그 처리에 관심이 있었다.

98년초에 철권3가 PS로 나왔을때, 스키닝이 어려운 골반부분까지도
꽤 깔끔하게 구현돼 있어서 3D하는 사람들 사이에서는 자극이 되었다.
그때쯤 나는 맥스 R2에 새로 생긴 ASE 파일 익스포트 기능을 살펴보고
어떤 가능성을 느꼈는데, 예전 dos용 3ds 시절에 존재하던 ASC 포맷에서
많이 진일보해서 실용적인 지오메트리 정보와 애니메이션 정보를
텍스트로 기술하는 것이었다. 특히, 버텍스 컬러를 사용할 수 있기 때문에
모델러가 맥스에서 스키닝 포인트를 지정할 수 있겠단 생각을 했다.
이에 대해선 손노리 입사전 취미삼아 테스트해보고 성과를 얻은게
있었기 때문에, 화이트데이 역시 같은 방법으로 진행해나갔다.

이런 버텍스 마킹 방법은 모델러에게는 정확한 프리뷰가 안돼서 불편한
방식이다. 제대로 하려면 맥스의 physique나 skin 모디파이어를 써야한다.
화이트데이를 만들 때는 피지크가 대세였는데, 요즘 맥스는 skin이 대세다.

그러나 어쨌거나 이 시절에는 펜티엄2도 귀하고 대부분 MMX200급 CPU를
쓰던 때라, 피지크를 쓰면 속도가 느려져서 맥스에서 애니메이션을 실시간
재생하기가 힘들었기에 버텍스 마킹처럼 관절을 끊어놓는 방식이 작업중에
부드러운 프리뷰가 보장되는 이점이 있었다.

나는 그때나 지금이나 전문 프로그래머가 아니다.
내가 코딩을 하는 것은 프로토타이핑이나, 간단한 툴을 만드는 정도이다.
화이트데이 작업중 첫 1년간 내가 왕리얼엔진 작업에 관여한 것은
사용할 툴과 작업할 방식을 연구해보고 프로토타이핑하는 것이었다.
실제로 게임에 돌아가는 엔진의 코드는 이듬해 초에 들어온 초능력
프로그래머 NOERROR군(김성익씨)이 제대로 만들었고,
그때부터는 디렉터로서 일을 시작하게 되었다.

배경엔진의 설계는 kwanny님이 맡아서
퀘이크2나 하프라이프와 비슷한 수준으로
런타임에서 on/off 가 가능한 다중 라이트맵의 BSP 렌더링을 구현하였고,
그것 역시 차후에는 NOERROR군이 바통을 넘겨 받았다.

하드웨어는 금방 발전했기에, 불편한 버텍스 마킹 방식은
추후에 NOERROR군이 피지크를 지원하도록 금방(정말 뚝딱) 고쳐놓았고,
더 나중에는 no-blend vertex 방식에서 다중의 weight를 지원하는
multi-blend vertex 방식으로 개량해주었다. 지금 생각해도 며칠만에
참 빨리 만들었다. (y)

그런데 아이러니한 것은, 당시 버텍스 마킹 방식을 몇몇 사람들에게
소개해주었고 그 중에는 마리텔레콤에서 아크메이지의 3D RPG 버전을
만들기 시작한 이현기 선배(게임회사 이야기의 캐릭터 말고, 악튜러스의
그 캐릭터;)도 있었는데...
그것이 어찌어찌해서 결국은 마O노기의 플O이오네 엔진의 초기코드에까지
흘러들어와서 7년 지난 지금까지 우리를 괴롭히고 있다.
하하하 인생 돌고 돌고 돌고..

덧글

  • qwerty 2005/07/21 01:34 # 삭제

    1년에 한편?
  • 버금 2013/02/22 02:58 #

    전문 프로그래머가 아니라고 하시는데

    제 눈엔...
※ 로그인 사용자만 덧글을 남길 수 있습니다.


링크