Mobile Ready

Skava in Modeling


MobileReady — Documentation

Version 1.0.1 · Blender 4.2 LTS and later, tested on 4.2 LTS and 5.2 · Windows / macOS / Linux


1. Install

  1. Download the add-on archive. Do not unpack it.
  2. In Blender: Edit → Preferences → Add-ons, press the arrow button in the top right corner and choose Install from Disk... Pick the archive and enable MobileReady.
  3. Press N in the 3D Viewport: a tab named MobileReady appears in the sidebar.

2. Quick start

  1. Set a polygon budget, or pick a preset.
  2. Press Refresh Heatmap. Objects are coloured by their share of the budget.
  3. Press Estimate Draw Calls and Calculate Texture Memory to see what the scene will cost the device.
  4. Fix what is over: generate LODs, atlas the textures, trim the bone influences.
  5. Press Clear Heatmap when you are done. It sets the viewport colour of those objects back to white, Blender's default; an object colour you had set yourself before is not remembered.

3. The polygon budget

The budget is a number of triangles for the whole scene, or for the selection. Presets cover the common cases; the field is editable, because your target device is yours and not ours.

The heatmap colours each object by the share of the budget it takes. Green is comfortably under, red is over. The colouring is a viewport display setting only — it does not touch materials, and Clear Heatmap sets the object colour back to white.

4. Draw calls

Estimate Draw Calls counts one call per material slot of each mesh (a mesh with no material counts as one), then shows how many calls static batching would leave: one per unique material. It is an estimate: a slot that no polygon uses is still counted, so an engine may report fewer.

5. Texture memory

Calculate Texture Memory adds up the images the scene actually references, at their real resolution. Mipmaps can be included, which is what a mobile engine will do; the figure is shown with and without them so the two are never confused.

6. LOD generation

Generate LODs builds the chain to the number of levels you choose. Each level is a separate object, named so an engine importer will recognise the chain.

The budget is a target for Blender's Decimate modifier, not a promise. After generating, the status bar reports the triangles every level really ended with. If Decimate cannot go as low as asked, the level is named as not reaching its budget. A mesh that already has fewer triangles than a budget gets a level equal to the source, and the report says so.

With Parent to Empty on, the object and its levels are grouped under an empty that takes the object's place in the hierarchy: an object that had a parent stays where it was. The object is renamed with the suffix _LOD0; its mesh keeps its name.

A mesh with shape keys is skipped and named in the status bar: Blender cannot apply the Decimate modifier to a mesh that has shape keys, and dropping them from the copies would be your decision, not the add-on's. An object that already has a chain, and a level itself, are refused as well. Nothing is changed on a skipped object.

Remove LODs works on the selected object, any of its levels or the empty. It deletes only the objects MobileReady created and marked, never an object of yours that happens to have a similar name, and gives the object its name and its parent back. If nothing was moved, the object gets back exactly the location, rotation and scale it had. If you moved or re-parented the group (the _LODs empty) after Generate, the object stays where the group took it.

Copies you make yourself (Shift+D of the object or of a level) are yours: Remove LODs does not delete them and does not move them. A copy that sat under the empty moves up to the empty's place in the hierarchy, keeps its place in the world, and loses the copied MobileReady marks, so it can get a chain of its own.

A chain linked from another .blend file cannot be removed here (remove it in the file it comes from), and a linked object cannot get a chain; both are refused with the reason, and nothing is changed. In Edit Mode, Generate LODs asks you to switch to Object Mode first.

Chains made by version 1.0.0 carry no marks and are left alone, whether you select the object, a level or the empty, and Remove LODs says so. Delete those levels and the empty by hand: the levels are hidden in the viewport, so select them in the Outliner (or unhide them with Alt+H) first.

7. Texture atlas and channel packing

Create Texture Atlas packs the maps of the selected objects into one image, with the padding you set — padding matters, because without it neighbouring islands bleed into each other at lower mip levels.

Channel Pack writes metallic, ambient occlusion, roughness and smoothness into the four channels of a single image, which is what most mobile shaders expect.

8. Bone influences

Check Bone Influences reports the vertices that carry more influences than a mobile engine will read. Cleanup Bone Weights trims them to the limit and normalises what remains.

This matters because the engine does the same trimming silently at load time: the skin you see in Blender and the skin the player sees are then different, and nothing tells you.

9. What this add-on does not do

  • It does not export. Use your usual exporter — MobileReady is about what the asset costs, not about moving it.
  • It does not promise engine-identical numbers. Engines differ in their batching; the counting rule is stated above so you can see what is being counted.
  • It does not touch anything until you press a button, and every change it makes is a normal Blender operation you can undo.

10. Troubleshooting

The heatmap does not appear. The viewport must be in Solid shading; in Rendered shading Blender draws materials, not object colours.

Texture memory looks too small. Images that are only referenced by unused material slots are not counted, and neither are images packed into the file but not used by any material.

Cleanup changed my deformation. It will: trimming influences is exactly what the engine does. That is the point of running it in Blender, where you can still see the result.

11. Licence

GPL, as required for Blender add-ons.

Changelog

v1.0.1

  • Fixed: Generate LODs no longer fails with a Python error on a mesh that has shape keys. Such a mesh is skipped and named with the reason, and nothing is left behind on it.
  • Fixed: an object that has a parent no longer jumps when its LODs are generated, and Remove LODs puts the parent back.
  • Fixed: Remove LODs deletes only the objects MobileReady created. Before, it deleted any object whose name matched name_LOD1, name_LOD2 and so on, including your own.
  • Fixed: the mesh datablock is no longer renamed, also when two objects share one mesh, and Remove LODs gives the object its own name back, also when a <name>_LOD0 of yours already existed.
  • Fixed: Remove LODs no longer moves your own copies (Shift+D) of the object or of a level, keeps them in the hierarchy, and clears the copied marks from them. A group you moved after Generate keeps the object where it took it.
  • Fixed: Remove LODs on a chain linked from another file, and Generate LODs in Edit Mode, are refused with the reason instead of a Python error.
  • Decimate no longer leaves loose vertices in the levels when it collapses separate pieces.
  • Generate LODs on an object that already has a chain, or on a LOD itself, is refused with the reason instead of nesting a second chain.
  • The status bar reports the triangles every level ended with, and says when a budget was not reached or the mesh was already under it.
  • Chains made by 1.0.0 carry no marks and are not removed by Remove LODs, which says so; delete their LOD objects by hand.
  • Minimum Blender is now 4.2 LTS; tested on 4.2 LTS and 5.2.
$9.99

Have questions about this product?
Login to message

Details
Published 7 months ago
Blender Version 4.2 - 5.2
Extension Type N/A
Render Engine Used Arnold, Blender-Internal, Blender-Game-Engine, Cycles, Eevee, Freestyle, Luxrender, Mental-Ray, Octane, Vray, Yafaray
License GPL