UDN
Search public documentation:

CollisionReferenceKR
English Translation
日本語訳
中国翻译

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 홈 > 스태틱 메시 > 콜리전 참고서
UE3 홈 > 피직스 > 콜리전 참고서
UE3 홈 > 배경 아티스트 > 콜리전 참고서

콜리전 참고서


문서 변경내역: James Golding 업데이트. 홍성진 번역.

개요


그래픽적인 디테일이 늘어감에 따라, 게임 내 콜리전(collision, 충돌)을 간단히 유지시키는 것이 매우 중요합니다. 두 가지 이유에서 그런데, 적은 폴리곤에 대한 콜리전 계산이 훨씬 빠르기 때문이고, 플레이어가 작은 지오메트리 조각에 걸리지 않도록 하여 조작감을 부드럽게 하기 위해서입니다. 콜리전 반응은 언리얼 콜리전과 PhysX, 별개의 두 부분으로 나뉘어 있습니다. 여기서는 언리얼 콜리전에 초점을 맞추도록 하겠으며, PhysX 에 대한 것은 Physics Home KR 페이지를 참고하시기 바랍니다. 콜리전 관련해서 더욱 자세한 기술적 정보는 Collision Technical Guide KR 페이지를 참고하시기 바랍니다.

스켈레탈 메시 콜리전 헐 만들기

스켈레탈 메시가 사용하는 콜리전 헐 제작법에 대해서는 PhAT User Guide KR 페이지를 참고하시기 바랍니다.

스태틱 메시 콜리전 헐 만들기

빌더 브러시를 사용하여 콜리전 헐 만들기

콜리전 헐을 추가하려는 스태틱 메시를 레벨에 놓습니다. 그런 다음 넣으려는 콜리전 헐 모양대로 그 주변에 빌더 브러시를 놓습니다. 가급적 간단히 하시고!

Collision_CreateCollisionHullWithBrush_0.jpg

스태틱 메시를 선택한 다음 우클릭하고 맥락 메뉴의 빌더 브러시에서 콜리전 설정 을 선택합니다. 스태틱 메시에 적용한 스케일도 계산에 들어갑니다.

Collision_CreateCollisionHullWithBrush_1.jpg

매우 중요한 점 한가지, 이 콜리전은 선택한 스태틱 메시의 모든 인스턴스에 추가된다는 점입니다. 브러시를 콜리전으로 저장한 효과를 확인하려면, 스태틱 메시가 들어있는 패키지를 저장해야 합니다.

Collision_CreateCollisionHullWithBrush_2.jpg

K-DOP 툴을 사용하여 콜리전 헐 만들기

K-DOP 는 스태틱 메시 에디터에서 단순한 콜리전 헐을 만드는 툴입니다. K-DOP 는 일종의 바운딩 볼륨으로, K Discrete Oriented Polytope 의 약자입니다. (K 는 축-정렬된 면의 수이며, DOP 는 쉬운 용어로 '면체'로 번역했습니다.) 기본적으로는 K 개의 축 정렬된 면을 메시에 가급적 가까이 밀어 넣는 것입니다. 그 결과 나오는 모양을 콜리전 헐로 사용합니다. 스태틱 메시 에디터에서 가능한 K 는:

  • 6 - 축-정렬된 박스입니다.
  • 10 - 네 변을 각지게 만든 박스입니다. X-, Y-, Z- 축을 선택할 수 있습니다.
  • 18 - 모든 변을 각지게 만든 박스입니다.
  • 26 - 모든 변과 모서리를 각지게 만든 박스입니다.

예제는 아래를 참고하십시오. 이 툴은 파이프, 기둥, 레일같은 것이 가득한 패키지에 꽤나 좋습니다:

kdop_sizes.jpg

구체 단순화 콜리전을 사용하여 콜리전 헐 만들기

이 툴은 단순히 스태틱 메시 모든 부분이 안에 들어가도록 구체로 감쌉니다. 물론 구체같은 모양의 스태틱 메시에 가장 좋습니다.

Collision_CreateCollisionHullWithSphere.jpg

자동 컨벡스 콜리전 툴을 사용하여 콜리전 헐 만들기

스태틱 메시에 대한 컨벡스 콜리전 헐 세트를 세우기 시도하는 툴입니다. 파라미터를 조절하여 컨벡스 헐 생성 방식을 조정할 수 있습니다.

Collision_CreateCollisionHullWithAutoConvex_0.jpg

  • 깊이 - 메시로 얼마나 깊이 들어갈지를 정합니다. 이 파라미터를 조절하면 콜리전 헐을 스태틱 메시 모양에 더욱 가깝게 일치시킬 수 있습니다.
  • 최대 헐 버텍스 - 콜리전 헐 버텍스 최대 수입니다. 이 값은 콜리전 헐 복잡도를 결정합니다.
  • 분할 허용치 - 최대 분할 허용 횟수입니다. 이 값을 올리면 생성되는 콜리전 헐 갯수가 늘어납니다.

Collision_CreateCollisionHullWithAutoConvex_1.jpg

보시듯이 자동 컨벡스 콜리전은 폴리곤 수를 낮게 유지하면서도 꽤나 정확합니다.

Collision_CreateCollisionHullWithAutoConvex_2.jpg

3D 콘텐츠 제작 프로그램을 사용하여 콜리전 헐 만들기

3D 콘텐츠 프로그램 안에서 스태틱 메시 콜리전 헐을 만드는 법에 대해서는 FBX 스태틱 메시 파이프라인 페이지를 확인하시기 바랍니다.

볼륨

볼륨이란 게임 내 액터와 충돌가능한 보이지 않는 BSP 입니다. 아래 예제는 블로킹 볼륨을 만드는 법입니다. 볼륨은 블로킹 콜리전이 될 수도 안될수도 있습니다.

블로킹 볼륨 만드는 법

우선 올바른 형태의 빌더 브러시를 만듭니다.

Collision_Volume_CreateBrush.jpg

언리얼 에디터의 볼륨 버튼에 우클릭하고 목록에서 BlockingVolume 을 선택합니다.

Collision_Volume_RightClickMenu.jpg

이 방법은 보통 레벨의 특정 구역에 도달하지 못하도록 막는 데 사용됩니다.

Collision_Volume_CreatedVolume.jpg

예제


일반적인 콜리전 시나리오에 있어서 다양한 콜리전 플랙 설정법에 대한 예를 조금 들어보겠습니다. 목표는 피직스 시뮬레이션에 대한 콜리전 검사와 플랙의 올바른 조합을 찾는 것입니다.

플레이어 이동과 무기 발사

플레이어가 제대로 움직이도록, 특히나 폰 이동에 콜리전 실린더를 사용하여 다른 폰과 충돌하도록 하고, 그러면서도 (발사시의 레이 트레이싱 등에) 키네마틱 본을 사용하여 정확한 콜리전 감지를 하도록 하려면, 다음과 같은 사항을 고려해야 합니다:

  • 언리얼 피직스 (PHYS_Walking 등) 는 CollisionComponent 에서만 축 정렬된 바운딩 박스를 쓸어냅니다. PHYS_Walking 사용시 CollisionComponent 로 SkeletalMeshComponent 를 사용하는 것은 좋지 않은데, 캐릭터가 움직이면서 모양을 많이 바꿔버리기 때문입니다.
  • PrimitiveComponent 에 CollideActors 와 BlockZeroExtent 옵션이 참으로 설정된 경우, 선 검사는 액터에 붙은 모든 프리미티브 컴포넌트를 대상으로 검사합니다.
  • 본에 대한 선 검사를 하는 데는 PhysicsAssetInstance 와 키네마틱 본을 가질 필요가 없습니다. 단순히 PhysicsAsset 을 할당하고 CollideActors 와 BlockZeroExtent 을 참으로 설정하기만 해도 (컴포넌트가 붙은 것으로 간주하고) 선 검사 결과를 얻을 수 있습니다.
  • RBChannel/RBCollideWithChannel 은 피직스 엔진 콜리전에만 영향을 끼칩니다. 플레이어가 PHYS_Walking 을 사용중이라면, 효과가 없을 것입니다.

기본적으로 Pawn 은 CylinderComponent 와 SkeletalMeshComponent 를 원합니다. CollisionComponent 리퍼런스는 CylinderComponent 에 할당해야 하고, SkeletalMeshComponent 는 CollideActors 와 BlockZeroExtent 를 참으로 설정해야 하며, CylinderComponent 에는 BlockZeroExtent 를 거짓으로 적절히 설정해 둬야 웨폰 트레이스에 걸리적거리지 않게 할 수 있습니다.

게임안에서 콜리전 살펴보기


게임안에서 콜리전 구성 상태를 살펴보는 용도로 사용할 수 있는 콘솔 명령은 여럿 있습니다. 여기 몇 개 소개드리며, 그냥 입력만 하면 껐다 켰다 토글됩니다.

  • show collision - 레벨에 사용중인 모든 콜리전 모델과 블로킹 볼륨을 그립니다.
    Collision_ShowCollision.jpg
  • show zeroextent - 0-규모 트레이스인 양 레벨의 콜리전을 표시합니다. 안보이는 오브젝트는 콜리전이 없습니다.
    Collision_ZeroExtent.jpg
  • show nonzeroextent - 0-이외-규모 트레이스인 양 레벨의 콜리전을 표시합니다.
    Collision_NonZeroExtent.jpg
  • show rigidbody - 리짓 바디인 양 레벨의 콜리전을 표시합니다. (주: RBCC 필터 그룹의 이펙트는 표시하지 않으며, BlockRigidBody 와 UseSimpleRigidBodyCollision 만입니다.)
    Collision_ShowRigidBody.jpg
  • nxvis collision - 레벨에 대한 PhysX 콜리전 정보를 표시하여, 어떤 리짓 바디가 충돌중인지 알 수 있습니다.
    Collision_NxvisCollision.jpg
  • stat game - 다양한 콜리전 타입이 얼마나 오래 걸리나에 대한 여러가지 유용한 통계를 표시합니다.
    Collision_StatGame.jpg