<선행학습>

울갤발 HDT-SMP xml내의 각종 지표들과 관련된 강좌

+

그동안 내가 모아둔 xml 프리셋들이랑 각종 가상바디 들어있는 니프파일 첨부

https://drive.google.com/drive/folders/1mY7bTDPAL8UG4TC7DnMTdRV_OgQDa4Sf?usp=sharing


HDT-SMP 3DS max 2012를 사용해서 본부터 박아넣는 공략

https://arca.live/b/tullius/4477855?mode=best&target=all&keyword=eev.zof&p=1

포팅학개론을 완숙하여 아웃핏 스튜디오와 바디 슬라이드를 다룰 줄 아는 숙련자


HDT-PE에서 SMP로 바뀌면서 의상 모더는 더이상 자동으로 완성되는 하복엔진의 꿀을 빨지 못하고

HDT본이 움직이는 xml을 직접 정의해줘야 하는 고통에 시달리고 있음

이 ㅈ같은거 나혼자 하기 억울해서 다른 사람도 제발 좀 했으면 좋겠어서 씀


HDT 본을 직접 3DS max로 심거나 아니면 HDT-PE로 작업되어 있는 작업물을 SMP로 변환해주기 위해서 이 xml을 작성해야만 함

본을 직접 심는다면 제로부터 작성하면 될 것이고, smp로 pe를 변환시킨다면


이런 외계어를 마주할 수 있음



걱정하지말고 ctrl a로 전체선택하고 del 해버리면 됨

hdt-SMP에서는 전혀 상관없는 것 들임


https://arca.live/b/tullius/6763025
이번 공략에서 보면서 진행할 xml은 신관옷의 xml




대부분 여기까지 보고 이게 뭐야 시발하고 글 내리더라

한 뭉텡이씩 설명할테니까 인내심을 가지고 보자



1번

이 부분은 xml 속성값 정의하는 것 같은데 뭐 중요한건 아니니까

다른 xml 작성할 때는 기존 xml에서 저 부분 그대로 복사해다 붙이면 끝


2번


바닥에 No image라고 도배되어 있는 네모난 Virtualground 메쉬를 xml에 정의해주는 부분

이 새기가 있어야 긴 치마등이 땅바닥과 충돌함

없으면 바닥과 충돌을 안하고 바닥속으로 관통해 들어가는 모습을 보여줄것임


3번


3번 부분은 아웃핏이나 니프에서 정의되어 있는 CBBE 바디 본들을 정의해 둔 것들임

xml에 본들의 이름을 일일이 적어놓은 이유는 저렇게 적어놓지 않으면 붕괴해내리기 때문임

몸이 무너져내리는 대표적인 현상은 CBBE SE 의상을 3BA 의상으로 컨버팅해주었을 경우

높은 확률로 가슴이랑 배, 심한 경우에는 보지 속 내용물까지 주르르륵 무너져 내릴 수 가 있음

이런 현상의 해결책은 당연하지만 무너지는 위치의 해당 본들을 추가해주면 됨




예니퍼 의상의 xml 중 일부인데, 이 의상은 삼본을 박으니까 가슴부터 시작해서 허벅지, 보지랑 자궁, 똥꼬 하나하나 다 무너져내렸음

그래서 무너지는 모든 본들을 일일이 다 정의해주어서 무너지는 것을 막아냈음

이건 가장 ㅈ같은 케이스고 보통은 슴가나 허벅지선에서 끝날거임





몸통 본들을 정의한 이후에는 NPC 어쩌고로 시작하지 않는 전혀 다른 형식의 본들이 등장함

이 부분은 이제 HDT본들 중에서 의상에 고정되어야 하는 부분을 정의해주는 부분임

대부분의 본은 0번 혹은 1번에서 시작하는데, 가장 첫번째 본은 이 위치에 적어주어서

안움직이게 고정시켜주는게 중요함


해당본이 0번 본으로 시작하는지 1번본으로 시작하는지는 nif를 들어가서 확인함


니프를 열어서 물리가 들어있는 쉐이프를 찾아서 하위메뉴를 열어줌

BSTriShape -> BSDismemberSkinInterface를 클릭하면

해당 쉐이프에 박혀있는 본들 목록이 주루룩 뜸


적당히 한개의 본을 클릭


그러면 밑에 뜨는 세부내역에서 동그라미 친 본 이름 클릭


그러면 본이 어떤식으로 연결되어 있는지를 보여주는 창으로 화면이 바뀜

103번 본은 102 - 101 - 100본에 순서대로 연결되어 있음

따라서 xml에서는 100번본을 고정시켜주면 됨



이 의상이 다소 특이한 경우인데, 100번본에서 시작하는데 101, 102번 본 역시도 아웃핏에서 리깅이 되어 있지 않은

일종의 가상본이라고 볼 수 있음

나머지 200번대~ 이후의 본들도 동일한 경우임을 확인할 수 있었기 때문에

100, 101, 102 ~ 900, 901, 902를 모두 고정시켜주었음




HDT 본을 고정시켜준 다음에 나오는 3BBBCO는 무엇이냐하면


SMP가 충돌하기 위한 가상의 바디를 정의해놓은 것임

흔들리는 로브가 여기에 부딪힐 수 있게끔 만들어둔 텍스쳐가 없는 투명메쉬라고 할 수 있음




그런 다음에 나오는 bone-default로 각종 수치들이 나오고 나오는 HDT 본들은 이제 실제로 흔들리는 본들을 정의해주는 문단임

각 문단에 나오는 수치는 상단에 미리 적어놓은 울갤발 xml 가이드에 상세하게 나와있으니까 일일이 굳이 설명하지 않겠음

위에서 100 101 102번 본을 움직이지 않게 고정시켜주었다면

여기서는 103부터해서 마지막 본까지 실제로 움직이는 본들이 어느정도의 힘을 받아서 움직이게 될지를 정의해둠


해당 의상은 치마형 로브이기 때문에

로브 끝자락으로 갈수록 큰 힘을 받고 더 오래도록 흔들리도록 수치를 조정해두었음



각 본들의 정의가 끝났다면, generic-constraint-default의 frame-inB(A)에서 본들의 연결구조를 정의해줌

frame-inB는 B번 본에 A번 본을 매달아주는 역할을 한다

즉 100번본에서 106번 본까지 일렬로 연결시켜줘서 본들이 무너지지 않게끔 해준 것이다

여기서 선언해주는 각 수치는 연결된 본들이 어느정도까지만 꺽여서 움직일지를 정의해주는 것




이해를 돕기 위한 그림판

각 본들의 위치는 빨간색 원이고

빨간색 선이 frame-inB에서 정의해주는 것이고, 다음에 이야기할 frameInLerp는 파란색 실선의 연결을 정의해주는 역할을 한다.


다르게 설명하면 위에서 nif로 확인해서 직접 연결되었던 본들을 frame-inB로 연결해줘서 무너지지 않게 해주고

의상이 흔들릴때 옆에 있는 애들이랑 같이 연동해서 흔들려서 더 예쁘게 흔들리게끔 해주려면 frameInLerp로 연결해주면 된다.



frameInLerp는 위에서 언급했다시피 좌우의 흔들림을 서로가 서로를 보조하게끔 해주기 위해서 선언해주는 부분임



제일 마지막에 위치한 부분은 물리충돌에 영향을 끼치는 쉐이프들을 정의해두었음

일반적으로 HDT본이 들어가 있는 쉐이프들만 정의해주면 됨

weight-threshold의 값은 일반적으로 0.2 정도를 사용하는데

idle 상황에서 물리가 과하게 충돌해서 진동하는 경우에 이 값을 최대 1까지 올려주면 그러한 문제를 줄여줄 수 있음


</system>으로 xml을 마무리 짓고 게임에서 옷을 뺏다 입으면

xml이 잘 적용되었는지를 확인할 수 있음

xml은 게임을 켜놓은 상태에서 바꾸고 저장하고 옷을 뺏다 끼면 실시간으로 확인할 수 있으니까 빨리 빨리 고쳐줄 수 있음


똑같이 했는데 안돼요? 체크리스트

1 바슬에서 hdt-PE가 아닌 SMP로 값을 바꿔주었는지? 혹은 그 경로가 제대로 되었는지

2 xml 내에서 잘못된 본, 쉐이프 이름이 있는지

3 xml 내에서 중복된 본 이름이 있는지 -> 특히 바디 본이 중복해서 정의되어 있으면 높은 확률로 굳음

4 다 확인했는데 안되면 다시 확인하셈 니 잘못임 ㅇㅇ