2014년 3월 12일 수요일

소스 엔진용 모델(MDL) 컴파일링

소스엔진의 캐릭터는 MDL 화일 형식으로 되어 있는데 주로 TGA 파일을 변환해서 만드는 VTF 텍스쳐 파일과 VTA 얼굴등의 형태등을 버텍스 값을 저장을 놓고 쓰는 VTA 포멧과 FBX 같은 3D 모델 데이터와 애니메이션 데이터를 이용해서 캐릭터의 움직임과 모델을 만들어주는 SMD[지금은 구형이 되었고 DMX 파일로 대체중이다.] 파일과 모델에 여러가지 게임에 쓰이는 속성들을 적용하기 위한 QC(QuakeC) 파일을 컴파일 하여 MDL 파일을 만들어 주는 StudioMDL 등의 툴등을 이용해서 벨브 소스 엔진에 쓰이는 모델 파일들을 만들어 줄수 있다.

텍스쳐를 VTF 변환.
TGA 2D 비트맵 파일을 VTF(Valve Texture File) 변환을 하자. Nem's tools VTFEdit 추천한다.

외부 링크
VTFEdit VMT 파일을 생성하는게 제일 쉬웠다자세한 내용은 VTFEdit 참조
그냥 VMT 파일도 VTFEdit 이용해서 만들어주자.

SMD 파일 작성

소프트 이미지 모드툴을 이용 벨브 어드온 다운로드후 압축푼뒤에 xsiaddon 파일을 소프트 이미지에 드레그&드롭 끌어서 던져주면 자동으로 설치가 된다. 설치 완료후 소프트 이미지를 다시 시작하면 된다.

소프트 이미지 사용을 원치 않는다면 블렌더를 추천한다.

모델링을 유니티 어셋 스토어 같은 인터넷틀 통해서 구하거나 직접 작성한뒤에 SMD Export 한다.
3DS MAX 사용시 Wallworm 툴이 있기는 한데 뭔가 정신 싸나워서 못쓰겠음. (-_-)

기본 모델이 되어줄 SMD 레퍼런스 모델 파일(T 포즈 모델) 필요함. 그리고 몇개의 애니메이션도 만들어주자

FBX 파일 이용

현재 소프트 이미지는 소프트 이미지 모드툴을 빼고는 SMD 익스포트를 할수 있는 방법이 없다 . 그래서 현재 공짜 툴중에서 가장 완벽한 블렌더를 이용하거나 FBX 파일 포멧으로 익스포트를 한뒤에 소스엔진 SDK 있는 FBX2DMX툴을 이용하여야 한다.

소스 필름 메이커용 모델을 FBX to DMX 이용해서 만드는 법을 설명하는 비디오 내용인데 해당 내용은 3DS MAX 이용한뒤에 FBX 익스포트한다이때 Bake animation 찾아서 체크를 해준뒤에 넘기는 같은데 소프트 이미지에는 해당 기능이 보이지가 않는다. 왜그렇지?



모델 익스포트시 주의할 .
  • 메쉬 모델 -> Geometry Approximation -> Polygon Mesh -> Discontinuity에서 Automatic 브이 체크를  제거.



Geometry Approximation 더블 클릭 하면 밑의 메뉴가 나온다





















여기서 Automatic 필히 브이 체크 해제 하자.

QC 파일 작성
StudioMDL 이용해서 소스엔진에서 쓰일 모델로 컴파일을 해주어야 한다.
자세한 명령은 벨브 캐발자 위키 QC Command  내용을 참고하자.
캐릭터 모델의 가장 기본적인 형태의 QC 파일은 아래와 같다.

$cd ".smd 파일 위치"
$scale
"1"
$modelname
"모델 출력이 데릭토리 이름"
$model
"게임상에서 쓰일 모델 이름" "reference.smd"
$surfaceprop
"" // 표면 속성 - // 재질 속성 리스트 참고
$cdmaterials
"표면 재질 파일이 위치한 디렉토리 이름"
$sequence idle
"reference.smd" fps 30.00 // Idle 모션 추가
$collisionmodel
"reference.smd" // 충돌/반응 등에 쓰일 메쉬
{
        $mass 30.0
// 질량
        $inertia 30.00
// 관성
        $damping 0.01
// 제동력
        $rotdamping 1.50
// 회전 제동력
}
// 코드 블록 부분은 쓰지 않아도 자동으로 studioMDL 계산해 넣는다.


studioMDL 이용하여 MDL 파일 생성
컴파일 작업에는 StudioMDL 이라고 하는 툴을 쓰면 된다
-game  스윗치를 이용해서 원하는 게임의 모델로의 컴파일 작업이 가능하다.
) studiomdl -game  Z:\SteamLibrary\SteamApps\common\Left 4 Dead 2\left4dead2\
gameinfo.txt  파일이 위치하고 있는 디렉토리를 적어주면 된다.
예로 든것은 레프트4데드2 디렉토리 되겠다.
-quite 디버그 메시지를 표시하지 않고 조용히 처리를 한다.
-nox360 엑박 360 파일을 출력하지 않는다.
-x360 엑박 360 파일을 출력한다.

-game <만들기 원하는 게임의 Gameinfo.txt 들어있는 디렉토리>  -quite -nox360  알아도 일반적인 모델 파일 만드는데 지장은 없다.
조금이라도 쉽게 하려면 .bat 확장자의  파일을 만들어도 된다.

Studiomdl.exe -game <게임 디렉토리> -nox360 %1

위의 내용을 저장한 뒤에 qc 파일을 드레그&드롭 해주면 mdl 파일이 만들어진다.]

외부링크
GUIStudioMDL - 도스 콘솔에 알레르기 반응을 일으키는 사람에게 추천 그냥 쓰기에도 가장 편한것 같다.
Crowbar Model De/compiler - 가장 최근에 나온 GUI 모델 컴파일러.


모델 위치
<게임설치된폴더>\materials
게임 모델의 재질 파일인 VMT 벨브사의 텍스쳐 파일인 VTF 파일이 여기에 저장을 하게 된다.

<게임설치된폴더>\models
벨브의 소스엔진에 쓰이는 모델 파일인 MDL 파일들이 저장이 되는 곳이다.

위의 폴더로
출력되는 파일들
MDL 확장자 파일 - 애니메이션 데이터, 히트 박스, 오브젝트 재질(Material) 정보, LOD(Level of Detail) 정보등을 담고 있는 게임에 쓰이는 모델 파일.
SW.VTX, DX80.VTX, DX90.VTX - 버텍스 데이터이다. SW software renderer 최적화 DX80 DX90 DirectX 8.0 9.0 최적화된 형태의 버텍스 테이터를 말한다.
PHY 확장자 - physic 추돌 메쉬 데이터

게임에 쓰일 모델 작성 완료
이제 만들어진 파일들을 VPK 묶은뒤에 배포하자.
워크샵이 있는 게임이면 게임 워크샵에 맞게 업로드하면 된다.