ProVPilot › Modding › Movable Parts
How to separate vertices out of a single merged 3D model, turn them into their own named part, move the pivot (origin) onto the hinge line, and — when needed — rotate the pivot axes so control surfaces such as ailerons, elevators and rudders deflect correctly in ProVPilot and Godot.
Many downloaded aircraft models arrive as one big merged mesh — the ailerons, elevator and rudder are baked into the airframe and can't move on their own. ProVPilot animates a control surface by rotating its node about the node's local origin. If the origin sits at the model centre instead of on the hinge, the part swings around the fuselage centerline instead of hinging at the wing.
So the job has three parts: (1) split the surface off into its own object, (2) give it a clear name, and (3) move the origin onto the hinge line (and rotate the origin axes if the hinge doesn't run along a world axis). After that, ProVPilot's animation code does the rest.
Select the merged airframe object in the viewport, then press Tab to enter Edit Mode. To see through the model while selecting, toggle X-ray with Alt + Z so you can box-select both the top and bottom skins of the surface at once.
Switch to Vertex select (1). If the surface is a separate connected island, hover over it and press L to select linked — this grabs the whole island in one go. Otherwise box-select (B) around the front and back faces with X-ray on.
With the vertices selected, press P to open the Separate menu and choose Selection. Blender pulls those vertices out into a brand-new object while leaving the rest of the airframe intact.
Press Tab to return to Object Mode. The new part now appears as a separate entry in the Outliner.
In the Outliner, double-click the freshly created object
(it'll be named something like Airframe.001) and give it a clear,
stable name — e.g. Aileron_R, Aileron_L,
Elevator or Rudder. ProVPilot's aircraft config
references parts by this node name, so keep it consistent.
aircraft.cfg. After the model is loaded the node
path looks like
Sketchfab_model/…/Aileron_R — the last segment is
the name you set here.
Now move the origin onto the hinge line. Select the new part, enter Edit Mode (Tab) and switch to Edge select (2). The hinge is the leading edge of the surface — the row of vertices nearest the wing (for an aileron) or the fixed structure.
With the hinge edge loop selected, press Shift + S to open the Snap pie menu and choose Cursor to Selected. The 3D cursor jumps to the midpoint of those vertices — exactly where the hinge axis runs.
Return to Object Mode with Tab.
In Object Mode, go to Object → Set Origin → Origin to 3D Cursor. The part's origin (its little orange dot) snaps onto the hinge line. This is the pivot ProVPilot rotates around — now it hinges at the wing instead of swinging around the fuselage centerline.
A control surface hinges about one axis — an aileron sweeps about the span axis so the trailing edge moves up and down. If your hinge line doesn't run cleanly along a local axis, you can rotate the origin's axes (without moving the geometry) so one local axis lines up with the hinge sweep.
Open the Options dropdown (top-right of the viewport) and enable Affect Only → Origins. Then press R and rotate so the chosen local axis matches the hinge sweep. Turn Affect Only Origins back off when you're done.
aileron_hinge_axis / elevator_hinge_axis /
rudder_hinge_axis in aircraft.cfg) — no
re-export needed.
Re-export the model to glTF (e.g. pc7_edited.gltf). The new part
should carry a translation equal to the hinge position — proof
the origin moved. You can verify on the .gltf alone before
regenerating the runtime .glb: inspect the node and confirm the
surface node now has the expected hinge translation.
# Inspect the exported node translation (proof the origin moved)
# Each separated surface should report a translation on its hinge line.
.gltf references
external textures by URI, keep those image files next to the
.gltf when regenerating the .glb, or the rebuilt
model comes out untextured.
Once the pivot is set, a single [animation] entry pointing at
the new node path lets you watch the surface deflect in-sim.
Source & aircraft configs live on gitlab.md80.ch.