본문 바로가기

언리얼 엔진(Unreal Engine)/UE5

[UE5] 자동차 만들기 - 언리얼 엔진 비히클(Vehicle)

 

언리얼 엔진에는 카오스 비히클 플러그인(Chaos Vehicle Plugin)이라는 플러그인이 있습니다. 이 플러그인은 자동차나 오토바이 구분없이 차량 시뮬레이션을 해주는 플러그인입니다.

 

비히클을 구성하는 에셋은 다음과 같습니다.

  • 스켈레탈 메시
  • 피직스 에셋
  • 애니메이션 블루프린트
  • 비히클 블루프린트
  • 휠 블루프린트
  • 엔진 토크 커브를 표현할 플로트 커브 에셋

 

시작하기에 앞서 프로젝트에서 Chaos Vehicle Plugin 플러그인을 활성화시킨 후 프로젝트를 재시작해줍니다.

 

카오스 휠 블루프린트

차량은 대부분 2개 이상의 바퀴로 구성되어있습니다. 보통 엔진이나 브레이크에 영향을 받는 바퀴와, 구르기만 하는(?) 바퀴로 구분됩니다. 이러한 여러 바퀴들을 원하는 대로 조작할 수 있도록 도와주는 블루프린트가 카오스 휠 블루프린트입니다.

 

 

블루 프린트 클래스를 하나 생성해줍니다. 부모 클래스로는 ChaosVehicleWheel를 선택하고 생성해줍니다. 이름을 BP_TestFrontWheel로 지정하겠습니다. 같은 방법으로 클래스를 하나 더 생성해서 이번에는 이름을 BP_TestRearWheel로 지정해줍니다.

 

이제 BP_TestFrontWheel 블루프린트 에디터를 열어줍니다. 디테일 패널에 Wheel Wheel Setup으로 갑니다.

 

Axle Type : 차축 타입으로, 휠이 비히클의 정면에 있는지 아니면 후면에 있는지를 정의합니다.
Wheel Radius : 휠 반경으로, 렌더 모델과 크기가 일치해야합니다. 단위는 cm입니다.
Affected by Handbreak : 핸드 브레이크의 영향을 받는지 여부입니다.
Affected bt Engine : 엔진의 영향을 받는지 여부입니다. 전륜 구동이면 정면 휠에서, 후륜 구동이면 후면 휠에서 활성화해줍니다. 만약, 사륜 구동 차량이면 모든 휠에 적용해줍니다.
Max Steer Angle : 최대 스티어링 각을 지정합니다. 일반적으로 양수 값을 도(˚)단위로 지정합니다.
Affected by Steering : 스티어링의 영향을 받는지 여부입니다.

 

전륜 구동을 예시로 Axle Type은 Front로 하고 나머지 부분은 체크를 해줍니다.

 

엔진 토크용 커브 에셋

토크 커브는 지정된 RPM의 엔진에서 토크 출력의 양을 나타냅니다. 그래프의 X축은 0 ~ 최대 RPM 범위의 엔진 RPM을, Y축은 NM(뉴턴 미터) 단위의 엔진 토크 출력을 나타냅니다. 일반적으로 토크 커브는 역방향 U자 모양으로, 회전 범위의 중간 근처에서 토크가 최대에 이른 다음 양쪽 끝으로 향하면서 감소합니다.

 

토크 커브를 생성하려면, 콘텐츠 브라우저에서 추가 - 기타 - 커브를 선택합니다. 커브 클래스는 CurveFloat로 지정합니다. 이름은 TorqueCurve라고 지어줍니다.

 

이후 점들을 추기해 원하는 모양대로 만들어줍니다.

 

 

비히클 메시

이제 비히클 메시를 임포트해 피직스 에셋을 만들어줍니다. 적당한 스켈레탈 메시를 불러와서 피직스 에셋을 생성해줍니다.

피직스 에셋이 없는 스켈레탈 메시라면 다음과 같이 생성해줍니다.

 

(저는 Vehicle Variety Pack Volume 2라는 마켓 플레이스의 무료 에셋을 사용했습니다. 때문에 이미 다 구현되어 있는 사항들이지만, 공부를 위해 직접 만들어 봤습니다.)

 

무료 에셋 다운받기

https://www.unrealengine.com/marketplace/ko/product/9a705589d1994c6e8757fdbedaf698af

 

Vehicle Variety Pack Volume 2, 카테고리 소품 - UE 마켓플레이스

A collection of four brand new vehicles for absolutely free! Includes a Sedan, an SUV, a Box Truck and a Campervan!

www.unrealengine.com

 

피직스 에셋을 열어줍니다.

 

다른 부분들의 콜리전은 괜찮지만, 바퀴는 원형이 아니라 조금 불편(?)하네요. 이를 수정해주도록 합시다. 스켈레톤 트리 창에서 톱니바퀴 모양의 아이콘을 눌러 프리미티브 표시를 눌러줍니다.

 

스켈레톤 트리 창에서 휠과 관련된 모든 본들을 선택합니다. 그리고 툴 창에서 바디 생성 - 프리미티브 타입Sphere로 교체합니다. 이어서 아래의 바디 재생성을 눌러줍니다.

 

이제 깔끔하게 바퀴 부분의 콜리전이 둥글게 변했습니다.

 

 

휠 애니메이션

비히클에는 여러가지 애니메이션이 있습니다. 바퀴가 굴러가거나 브레이크, 스티어링 등 여러가지 입니다. 이런 애니메이션들을 생성할 때 필요한 작업들을 줄여줄 수 있도록 도와주는 휠 컨트롤러 노드(Wheel Controller Node)에 대해 알아보겠습니다.

 

애니메이션 블루프린트를 사용해 비히클의 애니메이션을 가져오고 제어하는 경우에 휠 컨트롤러 노드를 사용하면 추가적인 구성을 할 필요가 없이 비히클의 모든 애니메이션을 제어할 수 있습니다.

 

노드는 자동으로 휠에서 필요한 정보들(속도나 브레이크 작동 여부, 서스펜션 등)을 가져와 쿼리 결과를 휠이 연결된 본의 애니메이션으로 변환해줍니다.

 

먼저 애니메이션 블루프린트를 생성해줍니다. 부모 클래스로는 VehicleAnimationInstance를 선택하고 스켈레톤을 선택해줍니다.

 

애니메이션 블루프린트를 열어서 아래와 같이 설정해줍니다.

 

 

비히클 블루프린트

앞에서 만든 것들을 사용할 블루프린트를 만들 차례입니다. WheeledVehiclePawn을 부모 클래스로 하는 블루프린트를 생성합니다.

 

블루프린트 에디터를 열어서 Mesh의 스켈레탈 메시와 애님 클래스에서 애니메이션 블루프린트를 지정해줍니다. 또 피직스 - 피직스 시뮬레이트를 체크해줍니다.

 

스프링 암과 카메라를 추가해 원하는 대로 설정해줍니다. 그리고 카메라 컴포넌트의 디테일 창에서 카메라 옵션 - 폰 제어 회전 사용 체크해제해줍니다.

 

Vehicle Movement Component의 디테일 창에서 Wheel Setup - Wheel Setups에서 휠들을 추가해줍니다.

 

순서에는 상관이 없고 Bone NameWheel Class를 잘 맞춰줘야합니다. 마지막으로 Mechanical Setup에서 Engine Setup - Torque Curve - 외부 커브를 만들어 두었던 Torque Curve로 설정해줍니다.

 

 

비히클 컨트롤

비히클을 조작하는 키를 지정해줄 차례입니다. 여러가지 입력 바인딩을 추가해줍니다.

 

비히클 블루프린트에서 이동 설정을 완료합니다.

 

 

비히클 게임 모드

마지막으로 비히클에 대한 게임 모드를 만들어줍니다. 디폰트 폰 클래스는 방금 만들었던 비히클 블루프린터로 설정해줍니다.

 

이제 월드의 게임 모드를 지금 만든 게임 모드로 변경해서 비히클을 테스트해봅니다.

 

 

 

 


 

 

[Reference]

https://docs.unrealengine.com/5.0/ko/how-to-set-up-vehicles-in-unreal-engine/