언어:
페이지 정보
수준별:
엔진 버전:
언리얼 엔진

스태틱 메시에 콜리전 구성

언리얼 엔진

UE4 에서는 스태틱 메시에 여러가지 일을 시킬 수 있는데, 게임플레이 도중 텍스처나 머티리얼을 바꾸거나, 마티네를 사용하여 레벨 여기저기로 이동시키는 것입니다. 레벨에 스태틱 메시가 무슨 일을 하든, 보통은 플레이어가 메시를 통과해 걸어가거나 총을 쏘지는 못하게 하고 싶을 것입니다. 그럴 때 스태틱 메시에 콜리전을 셋업해 두면 좋습니다.

셋업

이미 작업할 레벨과 스태틱 메시가 있으시다면, 이 단계는 건너뛰셔도 됩니다. 없으시다면, 런처에서 UE4 를 실행한 다음 새 프로젝트를 만듭니다. 프로젝트를 저장할 경로를 선택하고 이름을 지어주세요. 또 이 예제에서는 블루프린트 일인칭 템플릿을 사용하겠습니다. 꼭 이 템플릿으로 시작할 필요는 없지만, 이 템플릿에는 프로젝타일을 발사할 수 있는 기능이 구현되어 있어서 나중에 데모 시점에서 사용되므로, 따라하기에 좋을 것입니다.

또한 시작용 콘텐츠 포함 여부도 확인합니다. 포함되지 않은 경우, 나중에 작업할 애셋이 없어서 따라하기가 어려울 수 있습니다.

NewProjectWithStarterContent.png

단순한 모양 메시의 콜리전

프로젝트가 열렸고, 시작용 콘텐츠 를 포함시켰다면, 콘텐츠 브라우저Starter Content 라는 폴더가 있을 것입니다. 그 폴더 안에는 또 Props 라는 폴더가 있습니다. 그 폴더로 이동하여 SM_Door 라는 스태틱 메시를 찾습니다.

ContentBrowserWithStarterContent.png DoorInContentBrowser.png

SM_Door 를 찾았으면, 그 애셋에 더블클릭 하거나 우클릭 컨텍스트 메뉴에서 편집 을 선택하여 스태틱 메시 에디터에서 엽니다. 에디터가 열렸으면, 아래와 비슷해 보일 것입니다.

DefaultDoor.png

기본적으로 이 메시에는 콜리전이 설정되어 있지 않습니다. 콜리전이 없으면 플레이어는 메시를 통과해 걸어갈 수 있을 것이며, 메시에 물리 시뮬레이션이 있는 경우, 플레이가 시작하자마자 그냥 낙하할 것입니다. 콜리전 셋업 전 레벨에 메시를 배치한 다음 플레이하여 테스트해 볼 수 있습니다. 플레이어가 견고한 메시를 통과해 걸어가는 것이 보입니다. 또한 문을 쏴서 날려버리고 싶거나, 하늘에서 시작해서 땅으로 낙하하게 하려는 경우, 디테일 패널에서 Simulate Physicstrue 로 설정하면 되는데, 기본적으로 스태틱 메시에 콜리전이 없으면 그렇게 할 수 없습니다.

PhysicsDetailsPanel.png

이렇게 되면 대부분의 경우 바람직하지 못하므로, 이 메이세 콜리전을 셋업해 주도록 하겠습니다. 에디터 상단에 콜리전 드롭다운 메뉴가 있습니다. 클릭하면 메시에 콜리전을 추가하기 위해 필요한 옵션이 보입니다.

CollisionMenu.png

여기서는 메시가 왠지 단순한 모양입니다. 메시에 콜리전 셋업하기가 쉽겠네요. Collision 메뉴의 위쪽 세 개의 옵션은 무엇이 메시를 막거나 겹칠 수 있게 또는 못하게 하는지 경계로 사용할 단순한 모양으로 메시를 둘러쌉니다. 아래는 단순한 모양 콜리전 메시가 포함된 메시 예제입니다.

Sphere1.png

Capsule1.png

Box1.png

Sphere2.png

Capsule2.png

Box2.png

Sphere Simplified Collision

Capsule Simplified Collision

Box Simplified Collision

콜리전 설정 이후 여전히 메시 주변의 외곽선을 볼 수 없다면, 툴바의 콜리전 버튼이 (CollisionButton.png) 선택되었는지 확인하세요. 또 한가지, 메시에 이미 단순화된 콜리전이 있는데 하나 더 추가한 경우, 기존의 것이 새로운 것으로 대체되는 것이 아니라 그냥 더해집니다. 기존의 콜리전을 제거하지 않고 위의 단순화된 콜리전 셋을 전부 추가하면, 이와 같아 보일 것입니다.

AllCollision.png

이 문제를 해결하려면, 콜리전 중 하나를 선택하고 delete 키를 누르거나 콜리전 드롭다운 메뉴에서 선택된 콜리전 제거 메뉴를 선택하여 하나씩 지우거나, 콜리전 메뉴에서 콜리전 제거 를 선택하여 메시의 모든 콜리전을 지웁니다. 모든 콜리전 메시를 지우겠냐고 묻는 창이 뜹니다. 를 클릭하면 스태틱 메시에서 콜리전이 제거됩니다.

RemoveCollision.png RemoveCollisionPopUp.png

메시에 콜리전을 적용한 이후, 콜리전에 이동 위젯이 생긴 것이 보입니다. 콜리전을 설정한 이후에는 UE4 의 다른 오브젝트와 마찬가지로 콜리전 메시를 이동, 회전, 스케일 조절 가능합니다.

좀 더 복잡한 메시의 콜리전

캡슐이나 박스에 잘 맞는 메시든, 정교한 콜리전이 있는 메시든 상관 없이 지난 섹션에서 셋업한 단순 콜리전을 사용해도 됩니다. 하지만 좀 더 복잡한 모양에 정교한 콜리전이 필요한 경우도 있을 수 있습니다. 여기서는 그러한 경우에 대한 셋업 방법을 알아보겠습니다.

Starter ContentProps 폴더로 돌아가 SM_Chair 스태틱 메시를 찾습니다. 썸네일에 더블클릭 하여 스태틱 메시 에디터에서 엽니다. 보시면 이 메시에는 이미 콜리전이 설정되어 있어, 아래와 같은 모습일 것입니다.

ChairDefaultCollision.png

이 예제에서 플레이어가 의자 쿠션에 앉을 수 있도록 하고싶다 가정합시다. 기본 구성 콜리전 메시대로라면 보이지 않는 벽때문에 플레이어가 그렇게 할 수 없습니다. (참고로 플레이어가 게임을 플레이할 때는 스태틱 메시 자체만 보일 뿐 콜리전 메시는 보이지 않으므로, 플레이어가 의자에 앉으려 해도 무엇때문에 막히는지 알 수가 없습니다).

에디터 상단의 콜리전 드롭다운에서 콜리전 제거 를 선택하여 메시의 콜리전을 제거합니다. 이 비법 이전 섹션에서 사용했던 프리미티브 모양을 사용해 볼 수도 있지만, 아래 그림에서 보시듯이 딱 원하는 자세가 나오는 것이 없습니다.

ChairSphere.png

ChairCapsule.png

ChairBox.png

Sphere Simplified Collision

Capsule Simplified Collision

Box Simplified Collision

프리미티브 모양으로는 원하는 자세를 내기가 힘든 것 같습니다. 하지만 콜리전 드롭다운 메뉴의 다른 옵션으로 더욱 가까이 갈 수 있습니다. 이 옵션은 K-DOP 단순 콜리전 생성기라고 합니다. K-DOP 는 바운딩 볼륨의 한 유형으로, K discrete oriented polytope 의 약자이고, K 는 축에 평행인 면의 갯수를 말합니다. 기본적으로 K 개의 축 평행면을 잡아 메시에 가급적 가까운 모양을 만들어 냅니다. 그 최종 모양을 콜리전 헐로 사용합니다. 스태틱 메시 에디터 에서 K 에 가능한 것은:

  • 10 - X, Y, Z 중 한 축에 평행인 4 개 에지(선분)가 각진 박스입니다.

  • 18 - 모든 에지가 각진 박스입니다.

  • 26 - 모든 에지와 코너가 각진 박스입니다.

의자 메시에 10-DOP, 18-DOP, 26-DOP 를 각각 적용한 모습은 이렇습니다.

10DOP.png

18DOP.png

26DOP.png

10DOP

18DOP

26DOP

이 정도 콜리전 메시면 내고자 하는 자세에 가까워 지고는 있지만, 쿠션 사이에 플레이어가 의자에 앉지 못하게 하는 갭이 아직 있습니다. 콜리전 제거 를 한 번 더 선택한 다음, 콜리전 드롭다운 메뉴에서 자동 컨벡스 콜리전 을 선택합니다. 그러면 아래 그림과 같은 컨벡스 분해 창이 뜹니다.

ConvexDecomposition.png

이 창의 위 옵션은 Accuracy 로 콜리전 메시 표현을 위한 최소한의 메시를 생성합니다. 아래 옵션 Max Hull Verts 는 콜리전 메시에 있는 버텍스 수를 늘리거나 줄입니다. 값이 높을 수록 콜리전이 정교해지지만 콜리전 메시가 복잡해 집니다. 적용 을 클릭하면 이 세팅이 메시에 적용됩니다.

AutoConvexCollision1.png

AutoConvexCollision2.png

기본 세팅

최대 정확도 & 최대 헐 버텍스

복합 콜리전 셋업을 위한 또 한가지 간단한 방법은, 다수의 단순한 모양 콜리전 메시를 사용하여 메시의 콜리전을 만드는 것입니다. 이 비법의 앞부분에서 다른 단순 콜리전 메시를 만들어도 원래 것이 대체되지 않고 추가된다던 것 기억 나시나요? 각각의 콜리전 메시마다 별도의 트랜스폼 위젯이 있어서, 별도로 이동, 회전, 스케일 조절 가능하다는 것도 다뤘습니다. 이렇게 해서 스태틱 메시의 콜리전을 만들 수 있습니다.

우선 콜리전 드롭다운 메뉴에서 박스 단순화 콜리전 추가 를 선택합니다. 콜리전 메시에 좌클릭 하여 트랜스폼 위젯을 띄웁니다. 의자 왼팔에서 땅까지 맞도록 콜리전 메시를 이동, 회전, 스케일 조절합니다. 여전히 콜리전 메시를 선택한 채로 콜리전 드롭다운 메뉴의 선택된 콜리전 복제 를 선택하거나 Ctrl + W 키를 눌러 콜리전 메시를 복제합니다. 이 콜리전 메시가 의자의 반대쪽 팔에 맞도록 이동시킵니다. 메시를 한 번 더 복제합니다. 이번에는 의자 하단에 맞도록 이동, 회전, 스케일 조절합니다. 그 콜리전 메시를 복제한 다음 위로 이동시켜 의자 시트에 맞도록 합니다. 한 번 더 복제한 다음, 의자 뒷판에 맞도록 회전시킵니다. 다 됐으면 이와 비슷한 모습일 것입니다.

CompositeBoxCollision.png

물론 돌아가서 의자 모양에 더욱 잘 맞게 할 수도 있지만, 이 예제의 목적상 박스 다섯 개만 사용해도 전체 의자에 대한 콜리전 셋업은 물론 플레이어가 쿠션에 앉을 수 있도록 콜리전 셋업이 완료되었습니다.

물리 시뮬레이션 및 콜리전 프리셋

스태틱 메시에 콜리전이 생겼으니, 이제 물리 시뮬레이션이 가능합니다. 스태틱 메시 에디터 툴바 왼쪽 부분의 저장 버튼을 클릭하여 의자 메시를 저장한 다음 콘텐츠 브라우저 에서 SM_Chair 를 찾습니다. 메시 사본을 끌어 레벨에 놓은 다음 선택한 채로 디테일 패널을 봅니다. 디테일 패널의 Physics 섹션에 첫 번째 옵션인 Simulate Physics 가 기본으로 false 일 것입니다. 그 상태로 레벨을 플레이하면, 캐릭터가 메시를 통과해 걸을 수 없으며, 탄환을 발사해도 메시에 전혀 영향을 끼치지 못할 것입니다.

PhysicsDetailsPanel.png

레벨 플레이를 중지하고 Simulate Physicstrue 로 설정합니다. 이제 플레이해 보면, 캐릭터가 의자로 걸어갈 때 메시도 여전히 움직이며, 메시에 총을 쏘면 레벨 이리저리 하늘로 움직이는 것이 보입니다. 이는 메시에 물리 시뮬레이션이 있을 뿐만 아니라 메시가 기본 콜리전 프리셋 대로 모든 것을 막도록 설정되어 있기 때문이기도 합니다.

의자의 디테일 패널로 돌아가서 Collision 섹션에 보면, 콜리전 프리셋 이라는 드롭다운 메뉴가 있습니다. 이 메시 인스턴스가 월드 내 다른 오브젝트에 반응하는 방식은 이 콜리전 프리셋 에 달려있습니다. 먼저 그 옵션을 살펴보시기 바랍니다.

CollisionPresets.png

기본적으로 BlockAll 로 설정되어 있습니다. OverlapAll 로 전환하면, 플레이를 시작하자마자 메시가 바닥을 뚫고 떨어지는 것을 볼 수 있습니다. Custom... 프리셋도 있는데, 레벨의 다양한 오브젝트에 메시가 어떻게 반응할지를 수동으로 설정할 수 있습니다. Pawn 은 막음, Projectile 은 겹침, 나머지는 무시로 설정하면 좋겠지요. 커스텀 프리셋에서 그렇게 설정할 수 있습니다. 메시에 콜리전 셋업이 완료되었으니, 이제 레벨에 배치하고 그 콜리전을 사용하여 레벨의 다른 오브젝트에 어떻게 영향을 주고받을지 설정할 수 있습니다.

레벨 에디터에서 스태틱 메시 액터 를 선택하거나 블루프린트 에디터에 있는 Static Mesh 컴포넌트 같은 것을 선택할 때, 디테일 패널 -> Collision Category (콜리전 지오메트리) -> Collision Presets (콜리전 프리셋)에 보면 Default (기본)이라 표시됩니다. 원래 콜리전 프리셋에서 변경된 것이 없음을 나타내는 것입니다. 이것이 BlockAll 처럼 다른 것으로 되어 있으면, 선택된 스태틱 메시 액터/컴포넌트의 콜리전 프리셋이 덮어씌여졌다는 것을 나타냅니다.

defaultCollision.png