# Unreal 5 Conversion

{% hint style="info" %}
You don't need to start your project in Unreal 4 - if you are already in UE5 the previous guide will work exactly the same except for a few minor adjustments highlighted in [Vehicle Setup - Config Asset Adjustment (UE5)](/guides/first-person-vehicle-interaction-system/vehicles/vehicle-setup-config-asset-adjustment-ue5.md)
{% endhint %}

{% hint style="info" %}
This process is laborious and not recommended as the standard creation method. If you have vehicles made in PhysX that you absolutely need to convert, I recommend grabbing a nice drink and setting aside a chunk of time for this, as the process might take some time.
{% endhint %}

This process might look strange throughout - though has some logic behind it. The nesting of components and changing of actor means that information is not lost in the migration process. Chaos Physics removes a few key components when migrating that we have to ensure don't get caught up in the process.

First things first - in order to make sure your asset is safe in case of any errors, duplicate the blueprint of the vehicle and add the \_UE5 suffix

![Duplicate](/files/NrWCmXwHKCUodATrKqYm) ![Rename](/files/bzJoLush4o54v2OqrJao)

Before we do anything else, go into your UE5 vehicle blueprint and add a new **Skeletal Mesh Component**

![Add a new skeletal mesh](/files/pTyOv1bs98dKwJBbHZEq)

Now nest the *entire* components tab underneath the skeleton component EXCEPT the original skeletal mesh

![Attach all the components (Except the original vehicle mesh) to the new SkeletalMesh component](/files/Z6PoMueHEp1JN3VmBdUW)

Now we're going to want to go into the blueprint, go to **Class Settings** and set the parent class to "Actor"

![Class Settings -> Parent Class -> Actor](/files/3LZO8779avgoXWOqDQrC)

Select reparent - this will break the blueprint, but ensures the data survives the migration process.

![Select reparent. Your blueprint will break.](/files/2I1aeimcKlEWxX88drz3)

Next you'll want to migrate it to the respective UE5 content folder

![Migrate it to the CONTENT folder of the UE5 project.](/files/RM4chqn0Kn6C6WFjkyH1)

You'll also want to migrate the Skeletons and Physics components, as changing the default class they're no longer referenced by the blueprint.

![Remember to migrate the skeletons too!](/files/iGx56og9OROEojay9adI)

{% hint style="info" %}
Remember to enable to UE5 Chaos Vehicles Plugin otherwise *this process will not work*
{% endhint %}

Once you've migrated everything to UE5, open up the project and the Hatchback blueprint, you'll notice lots of errors - don't worry, we'll be fixing those quickly!

![Broken!!](/files/ZpZ67dvYSTd6hkYRFwPT)

You're going to want to change your **Parent Class** under **Class Settings** to **WheeledVehiclePawn**

![Class Settings -> Parent Class -> WheeledVehiclePawn](/files/fB1m1xOsNDsxnkjFko4n)

Now delete the SteeringWheel Function in Functions tab and disconnect it from the Event Tick

![Delete the function](/files/6Y3s4K5D3UaPbN2CttcJ) ![Remove it from the tick and delete it](/files/6OelqXzYGVUA848vHDXz)

{% hint style="info" %}
You can also delete the SteeringWheel function in the Event Graph
{% endhint %}

Now reconnect the tick to the UI Mouseover Line Trace

![Reconnecting the UI trace](/files/JAuiag7ARDozoakgSSBn)

Now head on over to the components tab and select everything nested under the SkeletalMesh we nested everything under earlier.

Drag them from under the SkeletalMesh and attach them to the Mesh (VehicleMesh) component

![Drag all the components under the SkeletalMesh to the Mesh (VehicleMesh) component](/files/SXSsjNiXqmsm6LonXDTX)

Delete the old SkeletalMesh component

Now we'll rebuild the vehicle's config files

Create a new Animation Blueprint using our vehicle skeleton

![Create a new Animation Blueprint](/files/CmihqBa9iEOO7SFycBhH) ![Use our vehicle Skeleton](/files/SrWjG8VeoRBpE8arjjJ1)

Click the **Class Settings** and set the **Parent Class** to to a **VehicleAnimationInstance**

![Class Settings -> Parent Class -> VehicleAnimationInstance](/files/fQ86yQKY4Md16BT7USdC)

Create a new float variable called "Steer Angle"

![](/files/bUyWPJoNEm3SSFukWL4b)

Now in the **Event Graph** reproduce the graph below:

![](/files/jFLcesQKhyKEwQAQsvi6)

Now head on over to the Animgraph and paste the code below, you should end up with a graph like this.

{% file src="/files/Q01dWwuquM1VZ6D6WdOB" %}

![](/files/IxAgHZsXBcSjbPsYC3fb)

{% hint style="info" %}
Remember to connect "Component to Local" to the "Output Pose"!
{% endhint %}

Right click on the XYZ variables in the bottom left, and promote it to the Variable "Rotation"

![](/files/Q4KiR9txllIwKuujLs3S)

{% hint style="info" %}
"Create Variable 'Rotation'" might not appear if you're clicking in the wrong area. Click on the empty space, NOT the text to promote it.
{% endhint %}

Next drag and drop the 'Steer Angle' variable created earlier and 'Get' It

![Drag and drop Steer Angle and "Get Steer Angle"](/files/ivCrkY6YwcVeVi0blUoL)

Connect it to the rest of the graph as pictured below and remember to connect 'Component To Local' to the 'Output Pose'

![](/files/PKGVkEixHHalDYEiL7gL) ![](/files/hL1Tsdhh3APbLFD6PyFF)

Compile and save and head back to the Hatchback blueprint

Now let's rebuild the vehicle! Select the Mesh (VehicleMesh) Component and drag the hatchback skeleton onto the Skeletal Mesh in the Details panel

![Bring in the hatchback mesh to the new vehicle component](/files/yfzu6CuHBWxM6p24A6UT)

Check that Simulate Physics is enabled

![](/files/Uo0pIB7bThBVsJeBCw2r)

{% hint style="info" %}
Make sure "Simulate Physics" is enabled!
{% endhint %}

Now add the recently created animation blueprint&#x20;

![](/files/OzpyFwK7CpZpM0aEMNqI)

Select the Vehicle Movement Component in the details panel

![You'll be seeing a lot of this node from now on.](/files/jNVUQOodBQSHJ88xh6fa)

On the right hand side, under the details panel - head on over to Wheel Setup and add **Four** new array elements to the **Wheel Setups** section

![](/files/UO1fiDsmOxfA6RpVNvbs)

Now head back to your config files and create a ChaosVehicleWheel

Name it BP\_Hatchback\_Wheel\_Front

![](/files/DEE8qS7MyknrqfmbvWsi) ![](/files/VlhwL4xPC2DaJi7tsEHc)

![](/files/RGbd4XG23Hff4iLFXJuJ)

Open your new BP\_Hatchback\_Wheel\_Front actor and set the original dimensions for the wheel from the Wheeled Vehicle Component you set in UE4

You can find those dimensions [Here](https://switchboard-studios.gitbook.io/advanced-vehicle-interaction-system-docs/guides/vehicles/vehicle-setup-config-asset-adjustments-ue4#wheeled-vehicle-component).

Set your Axle Type to "Front" and check "Affected by Steering"

{% hint style="info" %}
Make sure you check "Affected by Steering" and set the correct Axle Type
{% endhint %}

You might notice that the original method for defining the tyres (via a Data Asset) no longer exists and has been replaced with a graph system. This gives you more power to tweak your tyres. This guide will not go through creating one, the file below is the Lateral Slip Graph we'll be using.

{% file src="/files/mBu1CHxy5h4CkHeI481T" %}

Place these .uasset files in your content folder in **WINDOWS EXPLORER.** They should appear in the engine. There is also a TQC file, which we will use later - copy this as well.

Place the Lateral Slip Graph into the External Curve section&#x20;

{% hint style="info" %}
Make sure "Affected by Handbrake" is enabled
{% endhint %}

![The final result of the front wheel's blueprint](/files/3hv7EcrWJxAu4ztml8AE)

Duplicate the tyre blueprint and name it "BP\_Hatchback\_Wheel\_Rear" Open it, set the Axle Type to Rear and uncheck "Affected by Steering"

![](/files/t9n9ZCOrqzdxmA7RgT0d)

{% hint style="info" %}
Make sure you uncheck "Affected by Steering" and change the "Axle Type" to Rear!
{% endhint %}

Head back to your vehicle blueprint and select the Vehicle Movement Component

Add your Wheeled Vehicle blueprints to the corresponding array elements, two for the front, two for the rear.

![](/files/IFp5AUpAV6h4ixcroeEE) ![](/files/PQBYHUpz4ycrwnPJLLbv)

Name the four bones for the wheels in this order:

* Wheel\_Front\_Left
* Wheel\_Front\_Right
* Wheel\_Rear\_Left
* Wheel\_Rear\_Right

![](/files/iDx0IINlFFyIWE208Dpb)

Scroll down and now place the Torque graph you downloaded earlier into the torque curve section

![](/files/3ffRZR1r7IZwCzNG5sYq)

We now have to replace all the vehicle movement components with the new chaos vehicle movement component. Simply drag and drop the Vehicle Movement Component and replace all the  old ones in the graph.

![Drag the new vehicle component into the graph](/files/8KuOkh5DeeJJeU52D2Op) ![Drag off the vehicle movement component and create a new "Set Throttle Input" Node](/files/fUPOkESqbRWKcbZ7ZCna) ![Reconnect all the old inputs to the new event.](/files/VjlPk6HZohVpcvT2X5Zx)

Do this for the rest of the vehicle movement components.

The only difference is the steering wheel's angle is now set on the MoveAxis event.

Your new graph should look like this:

![](/files/gyRM0RullvInrmHGjU2V)

Make sure to also replace the handbrake input in the top right of the graph

![](/files/RMUgzxu5xUMTnrxs7CTb)

You'll also need to update the unpossession - just refresh it with a new node "Event Unpossessed"

![](/files/YZ0E480suz12GurQJHex)

Now we can start to reassemble all the components for the vehicle. If your vehicle uses sockets (like the hatchback) this process is a lot more straightforward. If your vehicle doesn't - you'll have to manually reposition everything which can take some time.

Essentially we're rebuilding the same component menu from UE4. Nest the corresponding blueprints and UI elements inside the meshes and making sure their location is updated.

Drag and drop the corresponding assets to their parents and things should snap back into place.

If they don't snap, try updating the socket or manually repositioning them

Place the camera onto the SpringArm component, this will fix its location.

![Components correctly nested and repositioned](/files/zBgLtOCM49X7h0NaB0DB)

If you've followed all these steps, your vehicle should now be fully useable in UE5 ***\*phew\****

![](/files/z5wIh91TCwJzCkWv19Oa)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.switchboard.studio/guides/first-person-vehicle-interaction-system/vehicles/unreal-5-conversion.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
