소스엔진의 캐릭터는 MDL 화일 형식으로 되어 있는데 주로 TGA 파일을 변환해서 만드는 VTF 텍스쳐 파일과 VTA 얼굴등의 형태등을 버텍스 값을 저장을 해 놓고 쓰는 VTA 포멧과 FBX 같은 3D 모델 데이터와 애니메이션 데이터를 이용해서 캐릭터의 움직임과 모델을 만들어주는 SMD[지금은 구형이 되었고 DMX 파일로 대체중이다.] 파일과 모델에 여러가지 게임에 쓰이는 속성들을 적용하기 위한 QC(QuakeC) 파일을 컴파일 하여 MDL 파일을 만들어 주는 StudioMDL 등의 툴등을 이용해서 벨브 소스 엔진에 쓰이는 모델 파일들을 만들어 줄수 있다.
텍스쳐를 VTF로 변환.
외부 링크
- Physical surface type - 물체 표면 타입 QC 커멘드
- Valve source engine Material - 벨브 VMT에 대한 위키 설명이다.
- VMTGen
그냥 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 파일은 아래와 같다.
$cd ".smd 파일 위치"
$scale "1"
$modelname "모델 출력이 될 데릭토리 이름"
$model "게임상에서 쓰일 모델 이름" "reference.smd"
$surfaceprop "" // 표면 속성 - // 재질 속성 리스트 참고
$cdmaterials "표면 재질 파일이 위치한 디렉토리 이름"
$sequence idle "reference.smd" fps 30.00 // Idle 모션 추가
$collisionmodel "reference.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이 계산해 넣는다.
$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 파일이 만들어진다.]
외부링크
모델 위치
<게임설치된폴더>\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로 묶은뒤에 배포하자.
워크샵이 있는 게임이면 각 게임 워크샵에 맞게 업로드하면 된다.