Post

2026-05-14 TIL (57일차)

2026-05-14 TIL (57일차)

피직스 머티리얼(Physical Material)

물리 엔진(Chaos Physics)의 핵심인 피직스 머티리얼을 열어보면 생각보다 굉장히 많은 설정값들이 존재한다. 단순히 마찰력과 반발력만 있는 것이 아니라, 최적화를 위한 수면(Sleep) 설정부터 파괴 시스템(Destruction)을 위한 강도 설정까지 다양하다.

오늘 피직스 머티리얼의 모든 디테일 패널 속성을 하나씩 분석해 보았다.


사진

1. Physical Material (기본 물리 속성)

가장 기본적이고 자주 쓰이는 물리 속성들이다. 차량의 타이어나 도로 재질을 만들 때 가장 많이 건드리게 되는 곳이다.

  • Friction (마찰력)
    • 기능: 물체가 표면을 따라 미끄러질 때 발생하는 저항력.
    • 현상: 값이 0에 가까울수록 얼음판처럼 마찰이 없어 끝없이 미끄러지며, 값이 1.0 이상이면 고무 타이어나 사포처럼 바닥에 끈적하게 달라붙어 잘 미끄러지지 않는다.
  • Static Friction (정지 마찰력)
    • 기능: 멈춰있는 물체가 ‘처음 움직이기 시작할 때’ 필요한 추가적인 저항력. (기본적으로는 0.0으로 두면 일반 마찰력을 따라감)
    • 현상: 이 값을 높이면 무거운 상자를 밀 때처럼 처음에 끄떡도 안 하다가, 일정 힘을 넘어서는 순간 훅 밀리는 현실적인 저항감을 구현할 수 있다.
  • Friction Combine Mode (마찰력 결합 모드)
    • 기능: 타이어(마찰력 1.0)와 얼음판(마찰력 0.1)처럼 두 물체가 만났을 때 최종 마찰력을 어떻게 계산할지 정한다. (Average, Min, Max, Multiply 등)
  • Override Friction Combine Mode (결합 모드 덮어쓰기)
    • 기능: 프로젝트 세팅에 지정된 기본 결합 방식을 무시하고, 현재 이 머티리얼에 설정된 결합 모드를 강제로 최우선 적용할지 체크하는 옵션이다.
  • Restitution (반발력 / 탄성)
    • 기능: 물체가 부딪혔을 때 충격 에너지를 얼마나 보존하여 튀어 오를지 결정한다.
    • 현상: 0.0이면 진흙이나 모래주머니처럼 바닥에 퍽 소리를 내며 달라붙고, 1.0에 가까울수록 탱탱볼이나 슈퍼볼처럼 에너지를 잃지 않고 높게 튀어 오른다.
  • Restitution Combine Mode / Override (반발력 결합 모드)
    • 기능: 마찰력과 마찬가지로 두 물체가 부딪혔을 때 누구의 탄성을 기준으로 튀어 오르게 할지 결정한다.
  • Density (밀도)
    • 기능: g/cm³ 단위로 설정되는 부피당 질량. 엔진은 3D 모델의 부피(Volume)에 이 밀도를 곱해서 물체의 최종 질량(kg)을 자동 계산한다.
    • 현상: 똑같은 크기의 큐브라도 밀도가 낮으면 스티로폼처럼 가볍게 날아가고, 밀도를 높이면 강철 금고처럼 무거워져서 차로 박아도 잘 밀리지 않는다.

2. Sleep 설정 (물리 연산 최적화)

물리 엔진은 물체가 움직이지 않을 때 연산을 끄는 ‘Sleep(수면)’ 상태로 전환하여 성능을 아낀다. 그 기준점을 정하는 곳이다.

  • Sleep Linear Velocity Threshold (수면 선속도 임계값)
    • 기능: 물체의 이동 속도가 이 값보다 낮아지면 물리 연산을 멈출 준비를 한다.
    • 현상: 값을 너무 높게 잡으면 굴러가던 공이 갑자기 뚝 하고 부자연스럽게 멈춰버린다.
  • Sleep Angular Velocity Threshold (수면 각속도 임계값)
    • 기능: 물체의 회전 속도가 이 값보다 낮아지면 물리 연산을 멈출 준비를 한다.
  • Sleep Counter Threshold (수면 카운터 임계값)
    • 기능: 위에서 설정한 속도 이하로 떨어졌을 때, 몇 프레임(또는 틱) 동안 그 상태를 유지해야 완전히 Sleep 상태에 빠질지 결정한다. (사진 속 4는 4번의 체크를 통과해야 잠든다는 뜻)

3. Advanced (고급 설정)

  • Raise Mass to Power (질량 거듭제곱)
    • 기능: 아주 거대한 물체(예: 거대한 바위, 건물 잔해)의 질량이 비현실적으로 너무 무거워져서 물리 엔진이 오류를 일으키는 것을 막기 위해, 부피 대비 질량 증가율을 완만하게 꺾어주는(스케일링) 기능이다. 기본값 0.75를 유지하는 것이 일반적이다.

4. Physical Properties (물리적 속성)

  • Surface Type (표면 유형)
    • 기능: 이 재질이 어떤 종류(아스팔트, 눈, 흙, 나무, 철 등)인지 물리 엔진에게 이름표를 붙여주는 기능이다. (프로젝트 세팅에서 미리 등록해 두어야 목록에 뜬다)
    • 현상: 자율주행 차량이 주행할 때 이 표면 유형을 읽어와서, ‘아스팔트면 타이어 스키드 마크와 끽 소리를 재생하고, 흙길이면 흙먼지 이펙트와 서걱거리는 소리를 재생하라’는 식의 로직을 짤 때 핵심 키(Key) 값으로 사용된다.

5. Strength & Damage (파괴 시스템 / Chaos Destruction)

이 부분은 주로 언리얼 엔진 5의 카오스 디스트럭션(물체 파괴 시스템)을 사용할 때 바위나 콘크리트 벽이 얼마나 쉽게 부서질지 결정하는 한계치(MPa 단위)다.

  • Tensile Strength (인장 강도): 양쪽에서 잡아당기거나 구부릴 때 버티는 힘.
  • Compression Strength (압축 강도): 위에서 무거운 것이 짓누를 때 버티는 힘. 콘크리트는 압축 강도가 매우 높다.
  • Shear Strength (전단 강도): 가위로 자르듯 엇갈리는 힘에 버티는 강도.
  • Damage Threshold Multiplier (데미지 임계값 배수): 위에서 설정한 강도를 바탕으로, 물체가 부서지기 위해 필요한 최종 데미지 요구량을 몇 배로 뻥튀기하거나 깎을지 결정한다.

(디지털 트윈 주행 시뮬레이션에서는 자동차가 도로를 부수고 다니는 것이 아니라면 이 항목들은 기본값으로 두어도 무방하다.)


6. Experimental (실험적 기능)

  • 현재 엔진 버전에 추가된 실험적인 물리 기능들. 사진에 보이는 Soft Collision 등은 부드러운 물체나 천 조각(Cloth) 등이 충돌할 때 물리적 두께감을 주거나 마찰 임펄스를 조절하는 옵션으로, 차량 시뮬레이션에서는 굳이 건드리지 않아도 된다.

Friction Combine Mode 분석

피직스 머티리얼에서 Override Friction Combine Mode를 체크하면, 두 물체가 충돌했을 때 마찰력을 어떻게 계산할지 직접 지정할 수 있다.

자율주행 시뮬레이션이나 레이싱 게임을 만들 때, 타이어(에이전트)도로(환경)의 마찰력이 충돌할 때 어떤 방식을 써야 할지 각 모드의 특징과 사용처를 정리해 본다.


왜 ‘결합(Combine)’ 모드가 필요할까?

물리적인 상호작용은 항상 두 물체 사이에서 일어난다.

  • 내 자동차의 타이어 마찰력: 1.0
  • 비 오는 아스팔트의 마찰력: 0.4

이 두 면이 맞닿아 달릴 때, 물리 엔진은 1.0을 써야 할까, 0.4를 써야 할까? 이 최종 마찰력을 결정하는 계산법이 바로 결합 모드다.


4가지 결합 모드와 사용처

1. Average (평균값) - 언리얼 엔진 기본값

  • 계산법: (A의 마찰력 + B의 마찰력) / 2
  • 특징: 두 물체의 마찰력을 반반씩 타협한다. (예: (1.0 + 0.4) / 2 = 0.7)
  • 언제 쓰나요? * 일반적인 게임의 프롭(상자, 나무통, 캐릭터 등)들이 부딪힐 때 가장 무난하게 사용하는 기본값.
    • 차량 시뮬레이션에서는 비추천: 타이어의 정교한 마찰력 세팅이 도로 값과 섞이면서 의도치 않게 변질될 수 있다.

2. Min (최솟값) - 환경이 강제로 미끄러움을 지배할 때

  • 계산법: 둘 중 더 작은 값 채택
  • 특징: 내 타이어가 아무리 접지력이 좋아도(1.0), 바닥이 미끄러우면(0.1) 무조건 미끄러운 값(0.1)을 따라간다.
  • 언제 쓰나요?
    • 빙판길(Ice), 바나나 껍질, 오일(Oil)이 쏟아진 도로
    • 타이어의 성능을 무시하고 강제로 차를 쭈욱 미끄러뜨려야 하는 극단적인 환경을 만들 때 도로 머티리얼에 설정한다.

3. Max (최댓값) - 강제로 멈춰 세워야 할 때

  • 계산법: 둘 중 더 큰 값 채택
  • 특징: 둘 중 하나라도 끈적하면 무조건 안 미끄러지는 값을 따라간다.
  • 언제 쓰나요?
    • 진흙탕(Mud), 끈끈이 덫, 모래사장
    • 차가 빠르게 달리다가도 늪처럼 바퀴를 꽉 잡아채서 강제로 속도를 줄이거나 멈춰 세워야 하는 환경에 사용한다.

4. Multiply (곱하기) - ⭐️ 차량 시뮬레이션의 핵심

  • 계산법: A의 마찰력 * B의 마찰력
  • 특징: 한쪽 값을 기준으로 삼고, 다른 쪽 값을 ‘퍼센트(%) 비율’처럼 사용하여 스케일을 조절한다.
  • 언제 쓰나요?
    • 일반적인 자율주행 / 레이싱 시뮬레이션의 도로 (아스팔트, 빗길 등)

🚗 실무 적용: “이미 타이어 마찰력이 구현되어 있다면?”

결론부터 말하면 도로의 피직스 머티리얼 결합 모드는 Multiply(곱하기)를 사용하는 것이 가장 이상적이다.

클라이언트 개발자가 자동차 폰(Pawn)의 타이어 마찰력을 세팅할 때, 마른 아스팔트에서 완벽하게 주행하도록 타이어의 마찰력을 1.0으로 정교하게 맞춰두었을 것이다. (이미 마찰력이 구현된 상태)

이때 환경(도로)이 타이어의 수학적 밸런스를 망치지 않으면서 영향을 주려면 도로가 ‘배수(Multiplier)’ 역할을 해야 한다.

  • 마른 아스팔트 (Friction 1.0): 타이어(1.0) * 도로(1.0) = 최종 마찰력 1.0 (100% 성능 발휘)
  • 빗길 아스팔트 (Friction 0.6): 타이어(1.0) * 도로(0.6) = 최종 마찰력 0.6 (타이어 성능이 60%로 감소)
  • 눈길 아스팔트 (Friction 0.3): 타이어(1.0) * 도로(0.3) = 최종 마찰력 0.3 (타이어 성능이 30%로 감소)

💡 요약 가이드 자동차의 섬세한 조향/가속 세팅(타이어)이 이미 완성되어 있다면, 도로의 피직스 머티리얼 결합 모드를 Multiply로 설정하자. 그러면 환경은 타이어의 세팅을 망가뜨리지 않고 자연스러운 스케일 조절기(가중치) 역할만 수행하게 되어, 디지털 트윈 시뮬레이션의 무결성이 유지된다!

This post is licensed under CC BY 4.0 by the author.