Skeletal meshes
LOD Tailor handles skeletal meshes like static meshes: they are scanned, checked against every target, get a Nanite or LODs verdict and LOD pictures, and a batch run previews, builds, backs up and restores their LODs. They appear in the reports, the commandlet, Python and Data Validation. This page covers what is different for them.
In the panel, skeletal meshes have a Skeletal tag and their own Skeletal filter chip. Their mesh facts show Bones (with the number of unskinned bones) and LOD settings instead of LOD group.
Budgets per target
Section titled “Budgets per target”Every target has a triangle budget and a LOD threshold for one skeletal mesh, separate from the static mesh values: a character is usually heavier than a prop, and there are fewer of them on screen.
| Setting | PC | Steam Deck | Switch 2 | Meta Quest | Mobile | New target |
|---|---|---|---|---|---|---|
| Max Skeletal Triangles | 100,000 | 50,000 | 40,000 | 20,000 | 15,000 | 30,000 |
| Require Skeletal LODs Above | 15,000 | 8,000 | 6,000 | 3,000 | 2,500 | 5,000 |
The defaults are for one character; crowds need less. Change them per target in Project Settings > Plugins > ta LOD Tailor > Targets; see Target settings. Targets saved by LOD Tailor 1.0 have no skeletal budgets yet and start with the values of a new target, 30,000 triangles and LODs above 5,000: check them after updating.
The checks, the Triangles and Budget columns, the target readiness and the per-platform Min LOD of a batch run use these values for skeletal meshes. An Over budget finding says so:
Over the skeletal mesh triangle budget: <target> <triangles> / <budget>.A No LODs finding uses Require Skeletal LODs Above, for example:
6,118 triangles and no LODs, so the full mesh is drawn at every distance on Switch 2, Meta Quest.Presets
Section titled “Presets”| Preset | LOD 1 | LOD 2 | LOD 3 |
|---|---|---|---|
| Characters: four LODs out to 45 m, two bone influences from LOD 2 | 50 % at 8 m, 4 bones | 25 % at 20 m, 2 bones | 10 % at 45 m, 2 bones |
| Characters (mobile and VR): strong reduction early, fewer bone influences | 35 % at 5 m, 2 bones | 15 % at 12 m, 2 bones | 6 % at 30 m, 1 bone |
On the Batch LODs page, click Skeletal meshes above the recipe table to edit the recipe of the skeletal meshes; it starts with the first preset for skeletal meshes, Characters by default. Static meshes keep their own recipe, and one run changes both.
To make your own skeletal preset, add one to LOD Presets and set its Used For to Skeletal meshes (or Any mesh); a new preset is for static meshes. Your skeletal presets come first in the drop-down, followed by these two built-in ones, which are always offered unless one of your presets has the same name. Presets saved by LOD Tailor 1.0 count as static mesh presets, so a project set up with 1.0 still gets the built-in skeletal presets.
How the LODs are built
Section titled “How the LODs are built”Every LOD of the recipe becomes a reduction of LOD 0 with Unreal’s skeletal mesh reduction, the same reduction the Skeletal Mesh Editor uses: the recipe’s triangle share, and its bones as the limit of bone influences per vertex. The LODs after LOD 0 are removed first, and clothing is unbound while the LODs change and bound again afterwards.
Skeletal meshes have no automatic screen sizes, so their screen sizes always come from the recipe distances, even when Let Unreal compute screen sizes is on for the static recipe. Per-platform screen sizes and Min LOD are written as for static meshes. See Batch LODs.
Bone influences
Section titled “Bone influences”The Bones column of the skeletal recipe sets the most bones that may move one vertex on that LOD, from 0 to 12. Fewer influences make skinning cheaper, and on a far LOD the difference is rarely visible. 0 keeps the mesh’s own setting.
The scan reads the influences the vertices of each LOD really use; they are in the JSON report (maxBoneInfluences) and in Python (max_bone_influences).
Unskinned bones
Section titled “Unskinned bones”Many skeletons have bones that no vertex of the mesh is skinned to, for example helper, twist or IK bones meant for other meshes. The mesh facts count them, for example Bones “68 (15 unskinned)”.
With Remove unskinned bones from LOD on (from LOD 2 by default), the LODs from that one on drop these bones, which saves bone updates on far LODs. LOD Tailor keeps the root, every bone a socket or a physics body hangs on, and the parents of every bone it keeps. On Unreal Engine 5.8 it asks Unreal’s bone count reduction for the list; on older versions it works the list out itself.
- With a new LOD chain, the bones are removed while each LOD is built.
- When the LODs stay (settings only), the bones are removed from the existing LODs from that one on.
- The preview notes, for example,
removes 15 unskinned bones from LOD 2. Meshes that have no LOD at or after that number are left alone. - A restore rebuilds the LODs with their old settings, so the bones come back.
The option is shown when the scan has skeletal meshes.
LOD Settings assets
Section titled “LOD Settings assets”A skeletal mesh can take its LOD settings from a Skeletal Mesh LOD Settings asset. LOD Tailor leaves such meshes to that asset: the preview skips them with “Its LODs come from the LOD Settings asset LODSettings_Hero; change them there.” The mesh facts show the asset under LOD settings. The checks and the Nanite or LODs verdict still apply.
Imported LODs
Section titled “Imported LODs”A skeletal LOD that was imported from a file instead of generated by the reduction counts as an imported (hand-made) LOD, as for static meshes: it is kept unless you turn on Replace imported LODs, and the package file is copied to the backup folder before it is replaced. On Unreal Engine 5.3 and later, LOD Tailor also puts imported skeletal LODs back when a reimport removes them; see Reimport protection.
Nanite
Section titled “Nanite”On Unreal Engine 5.5 and later, skeletal meshes can use Nanite. LOD Tailor reads it for the checks and the verdicts, Keep Nanite, add LODs keeps it on (the preview notes keeps Nanite), and Turn Nanite off turns it off. The Fallback share applies to static meshes only. On older engine versions, skeletal meshes count as meshes without Nanite.
Command line and Python
Section titled “Command line and Python”| Where | What |
|---|---|
| Commandlet | -SkeletalPreset=Characters picks the skeletal recipe, -Meshes=Static,Skeletal the kinds of mesh -Apply changes, -RemoveUnskinnedBones removes unskinned bones from LOD 2. See Command line & CI. |
| Python | make_apply_options_for("Standard", "Characters"), and the options skeletal_preset, include_static_meshes, include_skeletal_meshes, remove_unskinned_bones and remove_bones_from_lod. A mesh has kind, bones, unskinned_bones and lod_settings_asset. See Python. |