Skip to main content

Animation

The Animation section holds two separate things, split into tabs:

TabWhat it covers
PartsDoors, trunks, wipers and windows. Motion authored as curves.
PassengerWhat the Zoi in a seat does - the seated posture, plus driving, reversing and steering. Set by animation Id, not by curve.

The two are unrelated systems that happen to share a section, so the rest of this page treats them separately.

The section is hidden only when the vehicle has neither parts nor seats. A bicycle has no animatable parts but does have seats, so it opens on the Passenger tab.


01. How a part animation is put together

Each entry in the section is one part in one state - for example DriverDoor / Open. Behind it is a curve that describes where the part travels over time.

Three things matter before you touch anything:

ConceptWhat it means for you
Delta from the closed poseMotion is described as an offset from where the part sits when closed, not as absolute positions.
Open drives CloseOpen and Close share one animation. Author Open; the part closes back along the exact reverse automatically.
Curves are the source of truthOnce a curve exists, it is what plays. The values you seeded it with no longer matter.

That second point is the one that saves the most time: you never author a Close state.


02. Authoring a motion

Step 1 - seed it

The first time you author a state, you give it a starting shape:

FieldUnitNotes
Delta LocationcmWhere the part ends up relative to closed.
Delta RotationdegreesHow far it swings.
DurationsecondsHow long the motion takes.
Smoothon/offOn for eased motion, off for a constant-speed linear move.

A conventional door is mostly rotation; a sliding door or a lifting trunk is mostly location. A scissor door is both.

Step 2 - shape it

Once the curve exists, the seed fields disappear and an inline curve editor takes their place inside the slot's group. Drag keys there to shape the motion - add a slow start, a small bounce at the end, whatever the part needs.

The seed fields go away on purpose. Regenerating the curve from a delta would throw away the keys you just tuned.

Step 3 - watch it

Use the Preview button on the slot to play the motion in the editor. The preview reads the same curve the game does, so what you see is what the player gets.


03. Mesh Name

Mesh Name tells the animation which mesh to move. Most vehicles fill this in already, but some ship it empty - Casper's wipers are the usual example.

If a part refuses to move, check this field first. An animation with no mesh named has nothing to drive, and it fails quietly.


04. Working on the curve outside ModKit

The curve is a normal asset, so you can open it in the Unreal curve editor if you want more room to work.

Reopen the workspace afterwards. The panel reads the curve when it opens, so an edit made elsewhere while the workspace is open will not show up until you do.


05. Animation and the shared template

Part animation lives on the vehicle template, which several vehicles can share. To keep your change off the other vehicles, the workspace splits off a private template the first time you author a motion. You do not have to do anything - it happens on the first edit.

The practical consequence is that an animation edit makes your vehicle stop sharing template-level data with its siblings from that point on.


06. The Passenger tab

The other tab has nothing to do with curves. It sets which animation the Zoi in a seat plays, by pointing a field at an AnimCharacter row Id. Every seat gets a group of its own.

FieldWhen it plays
Vehicle Posture Anim IdBoarding, exiting and the seated idle. One Id covers all three, because the montage behind it carries Default / Loop / End sections.
Driving Anim IdMoving forward.
Reverse Driving Anim IdReversing. Empty means the seated posture is kept.
Driver Left / Right Steering Anim IdTurning. Empty means the seated posture is kept.

Every seat has a posture Id. The moving Ids are read from the driver seat only, and which of them exist differs by type:

VehicleDrivingReverseSteering
Bicycle, motorcycleyesyesyes
Boatyes-yes
Car--yes

A car has no driving animation at all. That is not a gap in ModKit - the game does not define one.


07. Reusing an Id versus making your own

Each field is a dropdown of existing Ids plus two buttons.

You wantDo this
A different animation that already existsPick it from the dropdown. Nothing else to do.
Your own animationClone, then swap the montage in the row that opens.
To see what an Id actually containsEdit.

Clone is the important one. The shipped data points several vehicles at one Id - the child bicycle's driver seat uses Scooter_DriverSeat, the same row the scooter uses - so editing that row in place changes every vehicle that shares it. Clone copies the row to an Id only your workspace uses and repoints the field at the copy.

To supply an animation of your own you still need a montage: matching skeleton, Root or Head playing component, and one entry per gender / growth-step combination. Clone gives you the row to hang it on, not the animation itself.

The Ids are spread across several AnimCharacter files. Bikes, scooters and boats live in AnimCharacter_Vehicle; car seat postures live in AnimCharacter_Posture as S_DriverSeat and friends. The dropdown lists all of them, and Edit opens whichever file actually holds the row.


08. A field is empty but the vehicle animates anyway

Expected for now, and only for the four moving Ids. The shipped ObjectBP data was exported before they could travel in a mod patch, so they read blank even though the vehicle plays the animation in game. Vehicle Posture Anim Id is unaffected - it has always been exported.

Typing or picking an Id saves normally from that point. Leaving a field blank writes nothing, so an untouched field cannot wipe the vehicle's existing animation.


09. Common issues and fixes

IssueCauseFix
Part does not move at allMesh Name is emptySet it from the mesh list
No Animation sectionThe vehicle has neither animatable parts nor seatsNothing to do - a few test vehicles are like this
Motion plays but ends in the wrong placeDelta was measured from the open poseDeltas are relative to closed
Curve edits do not show in the previewCurve was edited elsewhere while the workspace was openReopen the workspace
Door closes wronglyTrying to author Close separatelyAuthor Open only; Close is its reverse
Another vehicle changed tooTemplate still sharedAuthor one motion to trigger the split, or duplicate the template first
A passenger field is empty although the vehicle clearly animatesThe shipped ObjectBP data predates these fieldsType or pick the Id; it saves from then on
A moving Id is missing entirelyIt does not exist on this vehicle typeCars have steering only; ships have no reverse
Changing a passenger Id changed another vehicleThe Id was sharedUse Clone to get your own copy, then point the field at it

10. Chapter summary

ChecklistDone
Is Mesh Name filled in for every part I animated?
Did I author only the Open state?
Are my deltas measured from the closed pose?
Did I preview the motion rather than trusting the numbers?

11. What the MCP tools cover

ToolUse
modkit_set_vehicle_animationAuthor a part animation from a delta: part, state, location/rotation offset, duration, smoothing.
modkit_create_vehicle_templateSplit off a private template up front, before any template-level edit.
modkit_set_vehicle_seat_animSet a passenger animation Id on a seat: posture, driving, reverse or steering.
modkit_list_vehicle_componentsReports each seat's current passenger Ids, and only the fields that apply to it.

Shaping the curve by hand is editor-only. The tool gives you the seed; the inline curve editor gives you the finish.


12. Data reference