다크소울3 - 3D 모델 교체 튜토리얼 (모드 제작)
Blender 무료 3D 프로그램
DDS plugin 포토샵에서 DDS 파일을 읽어올 수 있게 하는 플러그인
https://software.intel.com/en-us/articles/intel-texture-works-plugin
Flver Editor 외부 3d 모델을 게임 파일에 넣어주는 프로그램
https://github.com/asasasasasbc/FLVER_Editor/releases
DS3Explore 다크소울3 내부 파일을 열어볼 수 있게 해주는 프로그램
http://rivernyxx.com/downloads.html
Yabber 게임 파일인 dcx 파일을 압축을 풀거나 다시 압축해주는 프로그램
https://www.nexusmods.com/sekiro/mods/42
Mod Engine 다크소울3에서 모드를 사용할 수 있게 해주는 프로그램
https://www.nexusmods.com/darksouls3/mods/332
DS3 Skeleton 블렌더용 다크소울 3 스켈레톤 파일
https://drive.google.com/open?id=1DKfA6IWXsnUiSzemkj08IyPQ1vxq8sXr
아래 방법은 꼭 순서대로 하실 필요는 없습니다. 설명을 위해서 의도적으로 끊어가거나 반복한 부분도 있으니 전체 흐름이 이해되시면 편한 방법을 찾아 작업하시면 됩니다.
모드 엔진 설치
모드 엔진을 다운받고 설치해줍니다. 설치는 특별한 방법이 있는 건 아니고 모드 엔진의 파일을 DarkSoulsIII.exe 파일이 있는 폴더에 압축 풀어주시면 됩니다.
압축을 푼 후에는 저 exe 파일이 있는 폴더에 바로 mod\parts 폴더를 생성해주세요.
원하는 장비 찾아서 압축 풀기
이제 DS3Expolore를 실행해 줍니다. 처음 실행하면 DarkSoulsIII.exe 파일이 있는 곳을 설정해줘야 합니다. 설정하고 나면 프로그램이 제대로 실행되고 게임 내 파일을 읽어와서 아래와 같이 나타납니다.
저기서 Data2 부분에 각종 장비 3d 파일이 들어있습니다. 여기서 원하는 장비를 찾아서 압축을 풀 수 있습니다. 어떤 장비가 몇번 파일인지는 저도 리스트가 없어서 일일이 열어보는 수밖에 없습니다...
그리고 파일 중에 _l 이 들어가는 파일이 있는데 이건 뭔지 저도 잘 모르겠네요. 그냥 이건 무시하시면 될 것 같습니다.
압축은 먼저 밑에 Output Directory를 설정해 줘야 풀 수 있습니다. 위에 스샷처럼 앞서 다크소울 3 폴더 내에 mod 라고 만들어 놓았던 폴더로 경로를 지정해 주세요. 거기에 풀면 위와 같이 mod\parts 폴더에 압축을 푼 파일이 나타납니다.
위에 보시면 am_ / bd_ / hd_ / lg_ 이렇게 4개의 파일을 풀어놓았습니다. 순서대로 팔, 몸, 머리, 다리 파츠를 의미합니다. 그리고 뒤에 붙은 m은 성별입니다. 여성의 장비일 경우 am_f_ 이런 식으로 시작하게 됩니다.
일단 먼저 bd 파일의 확장자를 dcx로 바꾸고 yabber를 활용해 그 dcx 파일의 압축을 풀어줍니다. 그러면 압축푼 bd 파일과 같은 이름을 가진 폴더가 생성됩니다.
그 폴더에 들어가 보면 위와 같이 xml 파일이 하나 있습니다. 그 파일을 열어보면 저렇게 복잡하게 되어있는데 저기 None를 DarkSouls3 로 바꿔줍니다. 안 바꿔주면 게임에서 계속 로딩만 하고 들어갈 수 없게 됩니다.
그리고 폴더를 쭉 들어가보면 저렇게 flver 파일이 나옵니다. 저 flver 파일이 3d 모델이 들어있는 파일이고, tpf 파일이 텍스처가 들어있는 파일입니다.
교체용 외부 모델 준비
DS3 Skeleton https://drive.google.com/open?id=1DKfA6IWXsnUiSzemkj08IyPQ1vxq8sXr
이제 교체할 수 있는 모델을 fbx 파일로 만들어야 합니다. 다크소울용 스켈레톤은 직접 추출해서 쓰셔도 되지만 만들어놓은게 있으니 위에 파일 받아서 쓰시면 됩니다. 저 파일은 잘 안쓰일 것 같은 본, 옷깃 날리는 거, 머리카락, 이런 것들은 삭제해서 간략화 해놓은 거라 정교하게 하고 싶으신 분들은 직접 추출해서 쓰셔야 합니다.
파일을 열어보면 위와 같이 스켈레톤과 여기에 리깅이 되어있는 인체 모델이 들어있습니다. 여기에 바꾸고 싶은 외부 모델을 import로 불러옵니다.
외부 모델을 불러와서 위치를 위와 같이 맞춰놓으면 Transform 정보가 기본 값이 아닌 상태로 설정되어 있습니다. 이것을 초기화 시켜주기 위해 Object > Apply > All Transforms 를 실행해 줍니다.
그러면 위와 같이 값이 변경됩니다.
이제 Scale X 값을 1 에서 -1로 바꿔줍니다. 그러면 저 옷깃을 보시면 아시겠지만 가운데를 기준으로 좌우가 바뀝니다.
그리고 다시 Transform 값 초기화를 해줍니다.
이걸 왜 해줘야하냐 하면, 나중에 flver editor를 쓸 건데, 이 툴이 게임 내 파일인 flver 파일을 읽어올 땐 제대로 읽어오는데 외부 fbx 파일을 읽어오면 좌우를 바꿔서 읽어오는 문제가 있습니다. 그래서 아예 좌우가 뒤집힌 파일을 만들어야 합니다.
flver editor 에 좌우를 바꿔주는 기능이 있긴 한데 이걸 쓰면 리깅된게 좀 꼬이는지 실제 게임에서는 이상하게 나오는 문제가 있어서 그냥 이렇게 미리 해놓고 만드는게 더 낫습니다. 그리고 이렇게 하면 메시의 표면 방향도 뒤집히는데 이것도 flver editor에서 수정할 수 있습니다.
지금은 이렇게 뒤집어서 작업을 하지만 flver editor 1.86 이후에 업데이트되면서 달라질 수도 있으니 버전을 확인하면서 작업해주세요.
이제 Modifier 탭으로 가서 Armature를 추가해 줍니다. 그리고 거기에 저 파일 안에 있는 skeleton을 지정해 줍니다.
그리고 외부에서 읽어온 모델과 DS3_base.blend 파일에 있던 기본 모델인 body 를 동시에 선택해줍니다. 외부 모델 먼저 클릭하고 ctrl 누른 상태에서 body 클릭해주시면 됩니다.
그리고 Object > Relations > Transfer Mesh Data 를 실행해 줍니다. 그러면 또 추가로 창이 뜰 때 Vertex Group(s)를 선택해주고, 또 세부 옵션에서 Source Layers Selection을 All Layer로 선택해 줍니다.
이 과정은 skeleton에 맞춰 리깅되어 있는 body의 웨이트 값을 새로 추가한 저 모델에다 복사해주는 과정입니다.
제대로 처리되었다면 웨이트 값이 복사된 걸 확인할 수 있습니다. 그러면 body 파일은 지우고 fbx로 export 해주면 교체할 외부 파일 준비가 끝납니다.
FLVER 파일 교체
그럼 다시 flver 파일이 있는 곳으로 돌아와서 진행합니다. Flver editor의 폴더를 살펴보면 UseThiusFileToimport3Dcharacter.flver 파일이 있습니다. 이 파일을 BD_M_7500 폴더로 복사하고 원본 BD_M_7500.flver 파일을 삭제하고 Use... 이 파일을 BD_M_7500.flver 파일로 이름을 변경시켜 줍니다.
다크 소울의 파츠인 BD_M_7500.flver 파일에는 스켈레톤이 전부 들어있는 게 아니라 몸통 부분 본 밖에 없어서 저 파일 그대로 쓸 수는 없습니다. Use 저 파일은 스켈레톤이 다 있고 그 외에 든게 별로 없어서 작업하기 편하기도 합니다.
외부 모델 넣기
그리고 이제 저 flver 파일을 flver editor 1.86으로 열어줍니다. 여기서 ImportModel을 클릭해서 앞서 블렌더에서 만들었던 교체용 파일을 선택해 줍니다. 파일을 읽어오면 확인창이 쭉 뜨는데 예 / 아니오 뜨는 건 모두 아니오를 선택해 줍니다.
앞서 블렌더에서 좌우를 뒤집었던 게 이 툴에서는 또 반대로 나오는걸 볼 수 있습니다.
여기서 Mesh > Rev. Mesh를 실행해 줍니다.
그러면 저 툴에서도 3d 모델의 면이 반전되서 이제 정상으로 바뀝니다.
이게 앞서 블렌더에서 scale x 값을 -1로 바꾸는 관련 작업을 하면서 면이 뒤집힌 것을 다시 뒤집어주는 과정입니다. 이게, 보통 3d의 면은 한쪽 면은 불투명, 반대쪽은 투명인데... 뭐 잘 모르겠다 그냥 이렇게 해주세요ㅋ
여기까지 해준 다음에 중간 점검입니다. 저 폴더를 yabber로 다시 압축해 줍니다. 그러면 새로 압축된 dcx 파일이 생성됩니다. 이제 게임을 실행해 봅니다.
텍스처는 제대로 안 들어가 있어서 저렇게 나옵니다. 몸통을 교체했기 때문에 얼굴, 팔, 다리는 겹쳐서 나옵니다. 이제 다른 부위를 투명하게 처리해 줘야 합니다.
투명 파츠 만들기
기존에 DS3Explore로 압축을 풀어놓았던 다른 부위도 dcx로 바꾼 뒤 yabber로 풀어서 폴더를 생성해 줍니다.
그리고 bd 할 때와 동일하게 xml의 압축을 DarkSouls3 로 바꿔줍니다.
그리고 flver 파일을 읽어들여서 Mesh 로 들어간 다음 Delete 항목을 체크하고 Modify 해줍니다. 그러면 파일 안에 있는 저 3d 모델은 삭제됩니다. 그래서 게임 내에서 장비하면 투명한 파츠가 됩니다.
bd 말고 나머지 am / hd / lg 3 부위를 모두 같은 작업을 해줍니다.
그리고 나머지 3부위 장비를 장착하면 위와 같이 투명한 장비를 장착한 상태로 나오게 됩니다.
텍스처 파일 추가
이제 텍스처 작업을 해야합니다. tpf 파일도 yabber로 풀어줍니다.
그러면 원본에 있던 텍스처 파일이 dds로 나타납니다. 얘네들은 그냥 안 쓰고 외부용 모델의 텍스처 파일을 불러와서 dds로 저장할 겁니다.
dds 파일을 읽거나 저장하려면 포토샵용 dds 플러그인을 깔아놨어야 가능합니다. 플러그인을 깔아놓은 상태면 텍스처 파일 읽어와서 저장할 때 dds 파일로 선택해서 저장하시면 됩니다. 저장할 때 compression은 BC1 / BC3 / BC7 아무거나 해도 이상 없습니다. 노멀맵만 type을 Normal Map으로 해주시고 나머지는 적당해 해서 dds 파일로 저장해 줍니다.
저장을 다 했으면 xml 파일을 열어봅니다. 저기에 name 에 파일명이 입력되어 있습니다. 이게 yabber로 압축할 때 이 파일을 집어넣겠다는 의미입니다. name 부분을 새로 생성한 파일들로 채워넣습니다. BD_M... 얘네들은 안 쓸거니까 지우셔도 되고요. (안 지워도 xml 파일 안에 입력을 안 해놓으면 yabber로 압축할 때 포함이 안 되니 그냥 둬도 상관은 없습니다.)
저기서 format은 어떻게 해야하는지 사실 잘 모르겠는데 노멀맵의 경우 대부분 0x6A로 되어 있고 나머지는 0x01 , 0x00으로 들어가 있었습니다. 저도 그냥 따라서 넣었습니다. 별 문제는 없었습니다.
xml 수정을 다 했으면 tpf 폴더를 yabber로 다시 압축해 줍니다.
텍스처 파일 경로 지정
다 했으면 이제 다시 bd flver 파일을 flver editor로 열어줍니다.
지금 저는 순차적으로 어떤 게 어떤 의미인지 설명하기 위해 모델 넣는 작업이랑 텍스처 수정하는 작업을 따로 분리해서 하고 있습니다. 모델 넣고 텍스처 넣는 걸 한 번에 하시는 게 맞습니다. 좀 감이 오면 그 때는 한번에 하세요.
거기서 material을 누르면 위와 같은 창이 뜹니다. 저기 있는 것 중에 0번 1번은 무시하시면 됩니다. 새로 추가한 모델의 텍스처는 2번 부터 입니다.
그럼 저기서 Edit 버튼을 눌러줍니다.
그러면 또 위와 같이 뜹니다. 저기서 Mtd path는 M[ARSN].mtd / M[ARSN]_e.mtd 요거 2개중에 하나 쓰시면 됩니다. 얘네들은 g_DiffuseTexture / g_BumpmapTexture / g_SpecularTexture 를 사용합니다. 딴거는.. 아마 안 쓸거에요. 사실 써본 적이 없어서 잘 모르겠습니다;;
여튼 여기 이 3항목에 Browse로 앞서 만들었던 파일을 지정해 주시면 됩니다. 경로 찾기 귀찮으면 파일 이름만 입력해도 됩니다.
머티리얼이 궁금하신 분들은 이 게임의 머티리얼 세팅을 수정할 수 있는 툴을 한 번 살펴보세요.
https://www.nexusmods.com/darksouls/mods/1455
커스텀 머티리얼을 만들거나 기존의 머티리얼을 수정한 다음 그 머티리얼 이름을 저 위의 Mtd path 입력하시면 쓸 수 있긴 합니다만.. 어떤 값을 얼만큼 수정했을 때 어떻게 변하는지 바로바로 확인 가능한게 아니고 수정하고 게임 실행해서 확인해보고, 또 수정하고 실행하고 뭐 이런 걸 반복해야하기 때문에 좀 비효율적이어서 저는 더는 손 못 대겠더라구요.
그럼 이제 텍스처 지정 다 해주고 저장한 다음, yabber로 dcx 파일도 새로 만들어준 다음 게임을 실행합니다.
그럼 게임에서 텍스처까지 들어갔음을 확인할 수 있습니다.
머티리얼이나 텍스처를 좀 더 만져줘야 색이 제대로 나올거 같긴 한데 그 부분까지는 개별 파일마다 세팅이 다 다르고, 세부적인 부분은 저도 모르는 게 많기 때문에 각자가 또 연구해보시면 좋을 것 같습니다.
그 외에 투명 파츠를 만들어도 목 부분의 메시는 남는데 그거 고려해서 원본 모델보다 좀 크게 만드시는게 좋습니다. 영상 후반부에 관련 내용 있으니 그거 참고해주세요.
*글이 많아지니 게시판 형식이 글 찾기나 보기가 더 편한 것 같아 카페를 만들어 같은 글을 올렸습니다.