Unreal 5 Conversion
If you created these vehicles in Unreal 4, and now require them in UE5 - this guide goes over that process.
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)
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.
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
Before we do anything else, go into your UE5 vehicle blueprint and add a new Skeletal Mesh Component
Add a new skeletal mesh
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
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
Select reparent - this will break the blueprint, but ensures the data survives the migration process.
Select reparent. Your blueprint will break.
Next you'll want to migrate it to the respective UE5 content folder
Migrate it to the CONTENT folder of the UE5 project.
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!
Remember to enable to UE5 Chaos Vehicles Plugin otherwise this process will not work
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!
You're going to want to change your Parent Class under Class Settings to WheeledVehiclePawn
Class Settings -> Parent Class -> WheeledVehiclePawn
Now delete the SteeringWheel Function in Functions tab and disconnect it from the Event Tick
Delete the function
Remove it from the tick and delete it
You can also delete the SteeringWheel function in the Event Graph
Now reconnect the tick to the UI Mouseover Line Trace
Reconnecting the UI trace
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
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
Use our vehicle Skeleton
Click the Class Settings and set the Parent Class to to a VehicleAnimationInstance
Class Settings -> Parent Class -> VehicleAnimationInstance
Create a new float variable called "Steer Angle"
Now in the Event Graph reproduce the graph below:
Now head on over to the Animgraph and paste the code below, you should end up with a graph like this.
Remember to connect "Component to Local" to the "Output Pose"!
Right click on the XYZ variables in the bottom left, and promote it to the Variable "Rotation"
"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.
Next drag and drop the 'Steer Angle' variable created earlier and 'Get' It
Drag and drop Steer Angle and "Get Steer Angle"
Connect it to the rest of the graph as pictured below and remember to connect 'Component To Local' to the 'Output Pose'
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
Check that Simulate Physics is enabled
Make sure "Simulate Physics" is enabled!
Now add the recently created animation blueprint
Select the Vehicle Movement Component in the details panel
You'll be seeing a lot of this node from now on.
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
Now head back to your config files and create a ChaosVehicleWheel
Name it BP_Hatchback_Wheel_Front
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
Set your Axle Type to "Front" and check "Affected by Steering"
Make sure you check "Affected by Steering" and set the correct Axle Type
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.
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
Make sure "Affected by Handbrake" is enabled
The final result of the front wheel's blueprint
Duplicate the tyre blueprint and name it "BP_Hatchback_Wheel_Rear" Open it, set the Axle Type to Rear and uncheck "Affected by Steering"
Make sure you uncheck "Affected by Steering" and change the "Axle Type" to Rear!
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.
Name the four bones for the wheels in this order:
Scroll down and now place the Torque graph you downloaded earlier into the torque curve section
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
Drag off the vehicle movement component and create a new "Set Throttle Input" Node
Reconnect all the old inputs to the new event.
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:
Make sure to also replace the handbrake input in the top right of the graph
You'll also need to update the unpossession - just refresh it with a new node "Event Unpossessed"
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
If you've followed all these steps, your vehicle should now be fully useable in UE5 *phew*