Visuals
Using your own kart model and rig
On this page
A fully rigged and procedurally animated skeletal mesh is included, with textures. You can replace it with your own model and keep all of the drift handling, because the physics never looks at the model.
How the kart is built
The kart has two layers:
- The collision box. The root component, a box called Kart Collision (the
Meshvariable in Blueprints). It simulates physics, and every force (driving, drifting, suspension) acts on it. It is invisible in game. - The visual meshes. The kart model, the rider and the particles. They are attached to the box, have no collision and simply follow it.
These are the components of the shipped BP_KartPawn:
| Component | Attached to | Job |
|---|---|---|
| Kart Collision | (root) | The physics body: a box collision component |
| KartSkeletalMesh | Kart Collision | The kart model, animated by BP_KartAnim |
| KartRiderSkeletalMesh | KartSkeletalMesh | The rider |
| Dust_L, Dust_R, Exhaust_L, Exhaust_R, Sparks_L, Sparks_R | KartSkeletalMesh | Niagara particle effects |
| SpringArm with Camera | Kart Collision | The camera |
| CameraShakeSource | Kart Collision | Camera shakes |
What the Blueprints expect from the model
The shipped model is SKM_KartBase on the skeleton SK_KartBase. It has no animation clips: BP_KartAnim moves its bones directly, found by name.
| Bone | What uses it |
|---|---|
Root | The top bone. BP_KartAnim moves and tilts the model with it. |
Body | The kart body. BP_KartAnim uses this bone too. |
Suspension_FL, Suspension_FR, Suspension_RL, Suspension_RR | The four wheels (front left, front right, rear left, rear right). BP_KartPawn reads their positions as the visual wheel positions (in its GetWheelPositions function). BP_KartAnim moves them up and down, spins them, and turns the front ones when steering. |
Steering_Wheel | Turned by BP_KartAnim with the steering input. |
The shipped skeleton also has four Suspension_Origin_FL, Suspension_Origin_FR, Suspension_Origin_RL and Suspension_Origin_RR bones. The simplest route is to copy the whole bone layout of SK_KartBase.
All of these bones are only for the visuals. The physics suspension uses the Suspension Locations setting instead (see the steps below).
For your model this means:
- Each wheel must move with its
Suspension_bone, otherwise it will not spin or bounce. - The steering wheel must move with
Steering_Wheel. - Keep
Rootas the top bone, like inSK_KartBase.
Swap the model step by step
- Rig your model with the same bone names and layout as
SK_KartBase. When you import it, chooseSK_KartBaseas the skeleton.BP_KartAnimis made for that skeleton, so it can then drive your mesh. - Create a child Blueprint. Right-click
BP_KartPawnin the Content Browser and pick Create Child Blueprint Class. The example project does the same withBP_KartPawnChild_Example. Use a child rather than a copy:BP_KartAnimreads its values fromBP_KartPawn. - Replace the mesh. In the child Blueprint, select KartSkeletalMesh and set Skeletal Mesh Asset to your model. Leave Anim Class on
BP_KartAnim. - Keep it without collision. On your mesh, keep Collision Presets on NoCollision. Only the box should collide.
- Rider and particles. Set your own rider on KartRiderSkeletalMesh, or clear it if your kart has none. Then move the particle components to the right spots on your model (exhausts, wheels).
- Fit the collision box. Select Kart Collision and set Box Extent (in the Shape category) so the box roughly covers your kart’s body.
- Place the suspension points. In Class Defaults, open Kart Base Settings > Suspension > Suspension Locations. Each entry is one wheel’s spring, as a point relative to the box. You can also drag them in the viewport. Put them where your wheels are.
- Play and re-test the handling (see below).
Size changes and handling
The drift, force and suspension defaults are tuned for the shipped box and suspension points. Changing them changes how the kart drives:
- The kart’s mass is 1000 kg whatever the box size, so a bigger box does not make the kart heavier.
- You can change the mass with Kart Mass Kg (Kart Base Settings > Mesh). All default forces are tuned for 1000 kg, so a different mass needs re-tuning. Coming in 1.1
- If the kart now sits too high or too low, adjust Target Suspension Height and Spring Length, see Suspension.
- Then fine-tune speed, acceleration and turning and the feel of kart drifting.
Multiplayer rules for visual meshes
In multiplayer, other players’ karts on your screen blend their visual meshes after a correction (see Visual smoothing). For that, the plugin moves the visual meshes under a helper component on those karts while the game runs. A mesh only takes part when it follows these rules: Coming in 1.1
- It is a mesh component (for example a Skeletal Mesh or Static Mesh) attached directly to Kart Collision, not to a socket. Particles and other components attached to that mesh come along with it.
- It, and everything attached to it, has no collision and does not Simulate Physics.
- It, and everything attached to it, is not replicated (Component Replicates off) and does not use absolute location or rotation.
- There is no camera or spring arm in that branch. Keep the camera on the collision box, like the shipped kart does.
Cameras, spring arms, triggers and anything with collision are left where they are. So are particles and other components that are not meshes but sit directly on Kart Collision. The shipped kart’s KartSkeletalMesh branch (model, rider, particles) follows all the rules.
A few more things to know:
- To get the collision box in a Blueprint, use the
Meshvariable. Do not use the visual mesh’s parent: on other players’ karts, it is the helper component. - Components you add later, while the kart is already driving, are not picked up.
- If your Blueprint attaches one of these meshes somewhere else, the plugin stops moving it.
- A mesh that breaks a rule still works. It only misses the extra blend and gets Unreal’s normal correction smoothing.
- Your own kart, single player games and the server never change the component layout.
Need help?
Ask on Discord and share a screenshot of your Components panel.
Not using the plugin yet? Get it on Fab.