1. 물리모드 종류 소개


HDT - PE



풀네임 - HDT Physics Extensions (HDT Physics Extensions at Skyrim Nexus - Mods and Community (nexusmods.com) )

제작자 - HydrogensaysHDT

사용한 프레임워크 - Havok Physics

편집 툴 - JFF (hdtHavokModifier "Just For Fun" (JFF) v4 - HDT Physics - LoversLab )

콜리젼 방식 - 사전 정의된 모양 기반

사용 가능한 본 범위 - 무제한

LE/SE 여부 - LE O / SE X (Havok Physics 64비트가 유료라서 제작자가 안 만듬)

사용하는 하드웨어 - CPU만 사용



가장 스카이림에 처음 등장한 물리 모드


스카이림이랑 동일한 havok 엔진을 사용하지만

그렇다고 해서 스카이림의 물리엔진을 직접 가져다 쓰는건 아니고

단순히 가져다 쓴 프레임워크가 동일한 havok 일뿐임


콜리젼 방식도 스피어, 캡슐, 실린더 같은 미리 정의된 모양 가지고 짜맞추는식


모드이름은 Physics Extensions 라서 PE 이고

만든이가 HDT라서 단순히 HDT - PE라고 불리는건데

사람들이 앞쪽에 붙은 HDT만 불러서

사실상 HDT 라고 하면 이 모드라고 알면 됨





HDT - SMP


풀네임 - HDT Skinned Mesh Physics (HDT-SMP (Skinned Mesh Physics) at Skyrim Special Edition Nexus - Mods and Community (nexusmods.com) )

제작자 - HydrogensaysHDT (추가 수정자 - Aers)

사용한 프레임워크 - Bullet Physics

편집 툴 - 메모장

콜리젼 방식 - 폴리곤/버텍스 기반

사용 가능한 본 범위 - 본 웨이트로 칠해진 본 한정

LE/SE 여부 - LE O / SE O

사용하는 하드웨어 - CPU만 사용



스카이림에서 두번째로 등장한 모드

PE 만든 제작자랑 동일한 제작자가 만든 모드


오픈소스인 Bullet Physics를 사용했고

원래 Bullet Physics에서 PE처럼 미리 정의된 모양을 사용할수 있지만

제작자가 무슨 이유에선지 빼버리고 폴리곤/버텍스 모양기반으로만 할 수 있게 만듬


그리고 만들다가 만듯한 기능들이 다수 포진해있어서

대충 aers가 수습해다가 완성함


보통 뉴비들은 이걸 SE에서 나온 SE 전용 물리모드다 라고 아는데

원래는 얘도 LE에서 나왔다가 SE로 와서 다시 만들어진거임


HDT라고 하면 PE랑 헷갈려서인지 가끔 HDT 라고 부르는 뉴비 말고는 대부분 SMP라고 부르는편




CBP


풀네임 - CBP Physics (CBP Physics at Skyrim Special Edition Nexus - Mods and Community (nexusmods.com))

제작자 - Polygonhell

사용한 프레임워크 - X (자체 구축)

편집 툴 - 메모장

콜리젼 방식 - 콜리젼 없음

사용 가능한 본 범위 - 가슴 배 엉덩이

LE/SE 여부 - LE X / SE O

사용하는 하드웨어 - CPU만 사용



스카이림 SE에서 처음 나온 모드이자 LE SE 둘다 합치면 3번째로 나온 모드

따로 프레임워크 안 쓰고 물리계산 공식 가져다 직접 다 만든거라서

코드길이 자체는 물리모드중엔 가장 압도적으로 짧고 간단하다보니

리버스 엔지니어링이 쉬워서 개선된 파생모드가 잘 나오는편


그래서 폴아웃에도 OCBP란 이름으로 금방 포팅되고 스카이림에서도 파생모드가 좀 나오는편


사실 제작자는 PE가 SE로 오기전에 임시로 쓸려고 만든 모드였는데

PE는 정작 못 오고 SMP만 와서 입지가 애매해진 모드




CBPC


풀네임 - CBPC Physics with Collisions (CBPC - Physics with Collisions for SSE and VR at Skyrim Special Edition Nexus - Mods and Community (nexusmods.com))

제작자  - Shizof

사용한 프레임워크 - X (CBP 파생이라 자체 구축)

편집 툴 - 메모장

콜리젼 방식 - 사전 정의된 모양 기반 (현재는 스피어 한정)

사용 가능한 본 범위 - 뼈대파일에 존재하는 모든 것

LE/SE 여부 - LE X / SE O

사용하는 하드웨어 - CPU만 사용



CBP를 개량해서 확장성과 콜리젼을 더한 모드

얘도 원래는 VR에서 가슴 만지고 놀려고 만든 모드였는데 PE가 SE에 못오게 되면서

퍼포먼스를 위한 물리 모드가 되버림

얘도 역시 리버스 엔지니어링이 쉽다보니 폴아웃에도 OCBPC란 이름으로 나옴


PE나 SMP랑 비교하면 아직 부족한점이 많고 버그도 있긴한데

SMP가 워낙 사양 많이 먹다보니 안 쓸래야 안 쓸수가 없어짐





2. 콜리젼 방식의 차이


약간 어려울수도 있는데 쉽게 설명하기 위해서

스피어 형태의 콜리젼에 대해서만 설명해봄


폴리곤/버텍스 모양 기반 (SMP)

설정 난이도 - 쉬움

퀄리티 (정확도) - 폴리곤/버텍스 개수에 달림

성능 - 사양 많이 먹음


대충 공모양 메쉬 만들고

이 메쉬를 그대로 콜리젼 정의 하면 되는 매우 간단한 설정방법을 가지고 있음


그러다보니 바디슬라이드 같은 메쉬 모양이 달라질때마다

다시 콜리젼 범위를 재정의하거나 설정파일을 만질 필요가 없이

그냥 그 콜리젼 전용 메쉬도 함께 메쉬 모양을 변형하면 됨




근데 보통 메쉬는 이렇게 작은 삼각형 조각을 이어붙여서

공모양을 만들거나 박스모양을 만들거나 하게 됨



근데 그 작은 삼각형 조각이 부족하다면

이렇게 각지게 되는거고

콜리젼도 이렇게 각진 모양으로 사용하게 됨

그래서 퀄리티/정확도를 높이려면 작은 삼각형이 많아야 하고

이는 폴리곤/버텍스가 많아야된다는 뜻임



그리고 이 방식의 문제가 있는데

이 두개가 서로 닿을때

매 프레임마다 작은 면 하나씩 공에 닿았는지 아닌지 전부 측정해야

얘가 닿았는지 아닌지 판단이 가능해짐



근데 간단한 공에도 사용되는 삼각형 면이 960개나 됨



그리고 공끼리 충돌할때도

그리고 서로 닿았는지 아닌지에 대해서

이 작은 삼각형면 하나씩 측정하게 됨


무식하게 각 삼각형 면 위치랑 범위 측정해서 콜리젼 범위를 생성해야된단 소리



즉 이 공에 닿았는지에 대해서 각 삼각형면마다 측정해야되니

960번이나 연산해야 하는셈


물론 추가적인 최적화 때문에 960번 전부 하진 않겠지만

폴리곤이 많으면 많을수록 연산해야하는 횟수가 그대로 늘어나게 됨


요즘 하드웨어 발달로 어느정도 폴리곤 최적화 하면

감상용 게임이나 따로 블렌더에서 렌더링 돌리고 그럴때

이런 방식을 사용해도 괜찮아졌지만


원경도 로드해야하고 많은 NPC를 생성하고 AI를 조작해야 하고

레벨업시스템에 몹 스폰이며 경험치며 NPC가 어떻게 길 찾아갈지 까지 등등

물리외에도 연산 요소가 많은 스카이림 같은 게임에서는

아직 부담스러운 방식임




사전 정의된 모양 기반 (PE, CBPC)

설정 난이도 - 어려움

퀄리티 (정확도) - 설정 하는 사람 실력에 달림

성능 - 사양 적게 먹음

공 중심 좌표랑 그 주변 반지름을 설정해야 하고

이거 하나로 메쉬 하나를 조작하는데 부족하다면 여러개를 설정해야됨


하지만 공이랑 닿았는지 아닌지 판단할때 무식하게 모든걸 계산하는게 아닌

그저 공 중심으로부터 반지름만큼의 범위내에 들어왔는지만 측정하면 됨


즉 반지름 1짜리 공 두개가 있는데

공 하나는 중심이 0위치에 있고 다른 하나는 중심이 3 위치에 있다면

두개의 반지름을 합하면 2 인데

이 두개의 거리는 3이 되니까 닿지 않았다고 바로 측정이 가능하게 됨


이런식으로 미리 사전정의된 모양에 맞춰서 가장 최적화된 알고리즘만으로 돌아가다보니

대부분 모든 게임이 이런 방식을 사용함


그래서 LE때는 PE쓰면서 모든 NPC가 물리 망토 두르고 다녔는데도 렉이 안걸렸는데

SE와서 SMP쓰면서 NPC한테 물리 망토 달아주니 렉걸려요 가 나오는것




두개의 방식 차이에서 오는 설정 난이도

이렇게 불규칙하게 생긴 메쉬가 있고


이 불규칙한 메쉬끼리 충돌할때


폴리곤/버텍스 기반 콜리젼의 경우 설정할때 이게 어떻게 밀려나갈지 미리 예상을 하려면

현실에 입각해서 예상하거나 아니면 직접 테스트를 해보는 수 밖에 없음

그리고 현실에 입각하더라도 메쉬가 복잡하게 생겼으면 그것도 힘들고


아니면 퀄리티/정확도 를 포기하고 따로 예상하기 쉬운 메쉬를 가져와서 콜리젼으로 정의해야 한다 던지 해야 하는데

굳이 이러기보단 차라리 사전정의된 모양을 사용하는게 낫겠지


즉 만드는 사람 입장에서는 그냥 여러번 테스트 해보거나 아니면 대충 설정해놓고 알아서 굴러가겠지 하는 식으로 하게 됨


단순하게 보면 메쉬 놓고 이건 콜리젼이요 하면 장땡이라 쉽지만

자기가 원하는대로 밀려나가길 원하는 배찔 이나 보픈 같은 특수한 경우를 생각하고 한다면

그때부터 예상하기가 어려워지니까 골이 좀 때리게 됨



근데 사전정의된 모양 기반은

딱 봐도 서로 충돌 이후에 어떻게 밀려나갈지 알기 쉽게 생기지 않았음?


이런식으로 모양이 간단하다보니

배찔 보픈 같은거는 설정 잘해놓은 PE를 아직도 SMP가 못 따라오고 있음


다음에 어떤 일이 일어날지 예상이 쉽고 의도한대로 움직이게 하는거도 쉬운편


다만 모양을 정의할때 폴리곤/버텍스 기반보다는 이게 어떻게 움직일지 예상해야할거, 설정해야할거 좀 더 많다보니

초보자한테는 진입장벽이 높은편이지만

어느정도 깨우치고나면 오히려 이게 테스트횟수가 줄어들어서 더 편해짐


그래서 CBPC 코인 타는 이유에 이것도 있음



그래서 대충 요약하자면


폴리곤/버텍스 기반은 설정은 간편하고 콜리젼 범위도 직관적이지만

이후에 어떻게 밀려날지 의도한대로 움직일지에 대해선 비직관적임


사전정의된 모양 기반은 설정은 처음 보기에는 난해하고 콜리젼 범위도 메쉬 전체를 커버할려면 해야할 일이 많지만

이후에 어떻게 밀려날지 의도한대로 움직일지에 대해선 직관적임





3. 사용 가능한 본 범위 차이


SMP - 본 웨이트로 칠해진 본 한정

SMP는 풀네임이 Skinned Mesh Physics임

Skinned는 본웨이트가 발라져있다는 의미이고

skinned mesh는 본웨이트가 발려진 메쉬니

이런 메쉬에 한정된 물리라는 셈


본웨이트 발려진것은

이런식으로 아웃핏스튜디오에서 보면 알록달록하게 칠해진 본이 있는데

이러한 본들 한정해서 물리 구현이 가능함


그렇다보니 무기같은 경우는

본이 발려지지 않은 static 메쉬 라서

이러한 것들은 꼼수가 아니면 SMP로 움직이는게 불가능함


무기 같은게 이런 이유는 보통 무기를 칼집에 들고다니다가

무기를 꺼내면 손으로 옮겨 붙잖아?

그게 본웨이트 바르는걸로는 구현 불가능해서 그럼


물론 꼼수면 본웨이트 바르는걸로도 되긴하는데 굳이 불편하게 그럴 이유가?



그러다보니

HDT Equipment at Skyrim Nexus - Mods and Community (nexusmods.com)

이런 모드는 PE에서는 됐었지만 SMP에서는 불가능함

그래서 여전히 SE에서 못 보는 이유임


꼼수 쓰자면 무기마다 호환 작업 해야 하거나

아니면 강제로 플레이어/NPC마다 아머슬롯 하나 사용해야 해서 거의 못한다고 보면 됨




PE, CBPC - 무제한 혹은 뼈대파일에 있는 본 전체

이런것들은 따로 본웨이트 발려지고 그런 여부가 아니라

그냥 모든 본을 움직일수 있는거라서 무기가 본웨이트 발려져있던 아니던 상관이 없음

그래서 HDT Equipment가 PE로 완성이 가능해진거도 이 이유


마찬가지로 비슷한 CBPC도 SE에서 무기 흔드는게 가능하긴 했는데

대충 설정한 cbp 무기 흔들기 - 툴리우스 채널 (arca.live) 


CBPC가 아직 미완성이고 하다보니 로테이션이 X축밖에 없는지라

미완성으로 끝났음

나중에 CBPC 업뎃되서 로테이션 좀 다양해지면 이거 다시 만들거임


아무튼 이런 차이가 있어서

내가 SMP 개선에 크게 기대를 안 거는 이유임




4. 앞으로 나올 물리모드 유망주들


현재 개발중이거나 개발예정인 물리모드들임


Karona1's SMP

GitHub - Karonar1/hdtSMP64: hdt-smp for 64 bit Skyrim


제작자 - Karona1

사용한 프레임워크 - Bullet Physics

콜리젼 방식 - 폴리곤/버텍스 기반

사용 가능한 본 범위 - 본 웨이트로 칠해진 본 한정

사용하는 하드웨어 - CPU&GPU 둘 다 사용


대충 Aers가 수정한 SMP에서 추가적으로 버그 고치고

콜리젼 연산할때 GPU 쓸수있게 개조중인 모드




CBPC v2

아직 개발 시작 안함


제작자 - Shizof

사용한 프레임워크 - X (CBP 파생이라 자체 구축) 

콜리젼 방식 - 사전 정의된 모양 기반 (모든 모양 지원)

사용 가능한 본 범위 - 무제한

사용하는 하드웨어 - CPU 만 사용


CBPC 제작자가 v2 만들거라고 예고한 모드

대충 제작자가 썰 푼걸로는 PE, SMP xml을 따로 변환없이 그대로 CBPC v2에서 사용가능해지고

콜리젼도 스피어가 아닌 모든 모양을 사용할 수 있게 될것 (CBPC 1.4에서 콜리젼 대개편 예정)

그리고 SMP처럼 체인노드를 지원해서 천물리 헤어물리 사용가능해질 예정




CBP v2

GitHub - SlavicPotato/CBPSSE: CBP Physics for Skyrim SE 


제작자 - SlavicPotato

사용한 프레임워크 - Bullet Physics (CBP 파생이지만 Bullet Physics 사용하게 수정됨)

콜리젼 방식 - 사전 정의된 모양 기반 (모든 모양 지원)

사용 가능한 본 범위 - ?

사용하는 하드웨어 - CPU 만 사용


세후 툴붕이는 봤을법한 디스플레이 트윅, Simple Dual Sheath 제작자임

CBPC가 아닌 CBP를 기반으로 아예 다 뜯어고치는 중이고

인게임에서 UI를 통해서 직관적이고 쉬운 물리설정 방식을 가질 예정임

다만 설정파일이 JSON 이라서 기존 CBP, CBPC 설정파일과는 물론이고 PE, SMP의 XML과도 호환이 안될 예정






근데 글이 너무 길어서

다 읽는 챈럼 없겠지? 킥킥


각 물리모드마다 아직 말하지 않은 장단점, 버그 등등 많긴한데

아무튼 흔들리는게 몬가 이상하다 싶으면

그냥 그 물리모드 단점/문제점이려니 하면 대충 9할은 맞음