포스트

UE5 C++ | Warehouse Wreckage, Collision과 정적 조명 빌드 (유데미)

언리얼 강의 중 Section 2를 정리한 네번째 글입니다.

UE5 C++ | Warehouse Wreckage, Collision과 정적 조명 빌드 (유데미)

강의 정보 🎓


Static Mesh 조립과 물리 시뮬레이션 🧩

  • SM_Rack 액터는 Static Mesh Component 1개만을 포함하고 있다.
  • 두 개의 액터를 마치 잘 조립한 것처럼 배치해도 실제 물리 시뮬레이션을 하면 서로 분리되기 쉽다.

해결법

하나의 메쉬를 다른 액터의 Static Component 하위 요소로 드래그 앤 드롭

자동으로 차일드 컴포넌트가 됨

  • 이 상태에서 최상위 부모 컴포넌트만 Simulate Physics를 활성화하면

    → 의도한 물리 환경이 잘 구성됨

[ 다음처럼 부모-자식 관계가 된다 ]

[ 다음처럼 부모-자식 관계가 된다 ]

💡 받침대의 Collision은 작동하지 않을 것이라고 예상했는데 실제로는 잘 작동했다. → Physics 설정과 Collision 설정은 별개라는 것을 알게 되었다.


Colision Mesh 🪢

언리얼 엔진에서 충돌을 판정하는 데 사용하는 단순화된 형태의 메쉬를 말한다. 게임에서 눈에 보이는 정밀한 모델(mesh)은 물리 연산에 그대로 사용되지 않으며, 대신 더 단순한 형태의 Collision Mesh가 사용된다.

View 모드에서 확인하는 방법

  • Wireframe 모드:

    → 모델의 실제 렌더링용 정밀 메쉬를 보여준다.

    물리 충돌에는 사용되지 않는다.

  • Player Collision 모드:

    → 물리 엔진이 사용하는 충돌 판정용 단순화된 메쉬를 확인할 수 있다.

    → 눈에 보이지는 않지만, 충돌 감지에는 이 형태가 사용된다.

콜리전 설정 확인

  • 콘텐츠 브라우저에서 애셋(Static Mesh 등)을 더블 클릭하면 상세 창이 열린다.
  • 상단 바에서 Collision 메뉴를 클릭하면 다양한 종류의 콜리전 형태를 확인할 수 있다:
    • Box, Sphere, Capsule, Convex Hull 등
  • 이 옵션을 통해 직접 콜리전 메쉬를 생성하거나 수정할 수 있다.

콜리전 메쉬는 어떻게 생성될까?

언리얼은 Static Mesh를 임포트할 때 자동으로 콜리전 메쉬를 생성하기도 한다.

이때 기준은 다음과 같다:

  • 임포트된 메시의 복잡도
  • FBX 파일 내에 포함된 커스텀 콜리전 정보 여부
  • 자동 생성 옵션 여부 (Auto Generate Collision 등)

하지만, 때때로 예상과 다른 형태로 생성되거나, 원하는 충돌 형태와 맞지 않는 경우도 있다고 한다..

→ 이럴 땐 수동으로 단순한 콜리전을 만들거나, 복잡한 메시의 경우 Use Complex Collision as Simple 옵션을 켜는 경우도 있다.


Build Lighting Only ⚠️

카메라 상에서 회전을 시킬 때마다 조명이 이상하게 비치는 문제가 발생하였다.

해결법

Build → Build Lighting Only를 실행했을 때 문제가 해결된 이유는 라이트맵(lightmap)이 다시 베이킹되면서 잘못된 조명 정보가 정리되었기 때문입니다.


Build Lighting Only의 역할

  • 정적인 조명 정보 (Lightmap)를 새로 계산하여 씬에 적용
  • BSP나 Static Mesh의 UV를 기준으로 정확한 그림자 생성
  • 잘못된 이전 조명 데이터를 제거하여 깔끔하게 반영

왜 Build를 해야 하는가?

언리얼 엔진에서는 정적 조명(Static Lighting)을 사용하는 경우, 실시간으로 라이트나 그림자 계산을 하지 않고 Lightmass라는 조명 베이커가 미리 텍스처 형태의 조명 정보(라이트맵)를 구워서 저장한다.

하지만…

  • 지오메트리 브러쉬(BSP)를 수정하거나 이동
  • 라이팅 관련 설정 변경 (예: Sky Light / Directional Light 위치 변경)
  • 조명 모드 변경 (Static → Stationary 등)

이런 변경을 하고도 라이팅을 다시 빌드하지 않으면, 이전의 구식 조명 정보가 장면에 그대로 남아 있게 됩니다. 이 때문에 빛이 새어보이거나, 그림자가 깨져 보이는 등의 문제가 생기게 된다.

참고

BSP는 기본적으로 프로토타이핑용이라 라이트맵 자동 생성이 정확하지 않은 경우가 많으므로 작업이 완료되면 Static Mesh로 변환 후 라이트맵을 수동으로 설정하는 것이 좋다.


요약 및 느낀점 📝

  • 두 개 이상의 액터의 올바른 물리 구현을 위해서는 메쉬 간의 부모-자식관계를 만들어서 부모에게만 물리 환경을 주는 방식으로 해결 할 수 있다.
  • 콜리젼 메쉬의 경우 상세 창에서 수정 할 수 있으며 이것이 물리 환경에서 상호 작용한다.
  • Build Lighting Only를 통해서 정적 조명의 정보에 영향이 있을때마다 새로 빌드를 해주어 버그를 없애야 한다.

느낀점 💡

Physics를 키지 않았다고 Collision이 발생하지 않는다는 생각을 가지고 있었는데 기본적으로 다른 개념이라는 것을 깨달았다. 또한 조명의 경우 역시 신경 써야 할점이 많다는 것을 느낄 수 있었다.

다음 포스트 🧭

다음 포스트에서는 블루프린트 함수에 관해서 자세히 알아보고 섹션 2를 마무리 할 예정

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.