Mobile Ready

Skava in Modeling


MOBILEREADY DOCUMENTATION

Version 1.0.0 · Blender 3.0+

------------------------------------------------------------

TABLE OF CONTENTS

- 1. Installation

- 2. Getting Started

- 3. Polygon Budget & Heatmap 3.1 Per-Object Budgets

- 3.2 Threshold Settings

- 3.3 Viewport Color Coding

- 3.4 How to Read the Heatmap

    4. LOD Generation

- 4.1 Presets Table

- 4.2 Custom Targets

- 4.3 Parent to Empty

- 4.4 LOD Naming Convention

    5. Draw Call Estimation

- 5.1 How Draw Calls Work

- 5.2 Scope: Selection vs. Scene

- 5.3 Batching Explanation

- 5.4 Reading Results

    6. Texture Memory Calculator

- 6.1 Format BPP Table

- 6.2 Mipmap Multiplier

- 6.3 Resolution Override

- 6.4 Reading Results

    7. Bone Influences

- 7.1 Why 4 Bones on Mobile

- 7.2 Checking Influences

- 7.3 Auto Cleanup Algorithm

- 7.4 Weight Normalization

    8. Channel Packing

    9. Texture Atlas

    10. Operator Reference

    11. Troubleshooting

    12. FAQ

------------------------------------------------------------

1. INSTALLATION

METHOD A — INSTALL FROM ZIP

1. Download the mobile_ready.zip file from Blender Market

2. Open Blender → Edit → Preferences → Add-ons

3. Click Install... and select the ZIP file

4. Enable the checkbox next to MobileReady

5. The MobileReady tab will appear in the 3D Viewport sidebar


METHOD B — MANUAL INSTALL

1. Extract the mobile_ready folder from the ZIP

2. Copy it to your Blender addons directory: Windows: %APPDATA%\Blender Foundation\Blender\4.4\scripts\addons\ macOS: ~/Library/Application Support/Blender/4.4/scripts/addons/ Linux: ~/.config/blender/4.4/scripts/addons/

3. Restart Blender and enable the addon in Preferences


  Note: MobileReady requires NumPy, which is bundled with Blender by default. No additional packages are needed.

------------------------------------------------------------

2. GETTING STARTED

OPENING THE PANEL

Press N in the 3D Viewport to open the sidebar, then click the MobileReady tab.


PANEL OVERVIEW

The main panel displays a summary of your current selection (object count, total triangles, material count). Below it are seven collapsible sub-panels:

  Panel            Purpose

  ---------------  ---------------------------------------------

  Polygon Budget   Set triangle budgets per object and visuali..

  LOD Generation   Generate level-of-detail chains using mobil..

  Draw Calls       Estimate runtime draw call count with per-m..

  Texture Memory   Calculate VRAM usage for compressed mobile ..

  Bone Influences  Find and fix vertices exceeding the 4-bone-..

  Channel Packing  Pack multiple PBR maps into a single RGBA t..

  Texture Atlas    Combine textures from multiple objects into..


QUICK START

1. Select the objects you want to analyze

2. Open the Polygon Budget panel to check triangle counts against mobile budgets

3. Open Draw Calls to see your material cost

4. Open Texture Memory to profile VRAM usage

5. Use LOD Generation, Bone Influences, Channel Packing, and Texture Atlas to fix any issues

6. Export your optimized assets

------------------------------------------------------------

3. POLYGON BUDGET & HEATMAP

The Polygon Budget system lets you assign triangle limits to individual objects and instantly see which objects exceed their budget through color-coded viewport overlays.

3.1 PER-OBJECT BUDGETS

Each mesh object can have its own triangle budget. You can set budgets in three ways:

- Manual entry — type a specific triangle count into the budget field

- From preset — choose a preset category (Character, Prop, Environment) and LOD level to auto-fill a budget value

- Batch assign — select multiple objects and assign the same budget to all of them at once

When no budget is set for an object, it defaults to the global fallback value (configurable in addon preferences, default: 5000 triangles).

3.2 THRESHOLD SETTINGS

Two threshold percentages control when the heatmap color changes:

  Setting                Default  Description

  ---------------------  -------  ---------------------------------------------

  Warning Threshold      75%      Objects using more than this percentage of ..

  Over-Budget Threshold  100%     Objects exceeding their budget turn red

You can adjust these thresholds in the panel header. For example, setting the warning threshold to 60% gives you an earlier heads-up.

3.3 VIEWPORT COLOR CODING

When the heatmap overlay is enabled, MobileReady applies a solid color override to each object based on its budget usage:

  Color   Range       Meaning

  ------  ----------  ---------------------------------------------

  Green   0% – 75%    Within budget. No action needed.

  Yellow  75% – 100%  Approaching the limit. Consider optimizing ..

  Red     > 100%      Over budget. This object needs polygon redu..

3.4 HOW TO READ THE HEATMAP

The heatmap is designed for rapid scene-wide triage:

1. Enable the heatmap overlay by clicking Show Heatmap in the Polygon Budget panel

2. Scan your viewport. Any red objects are immediate priorities for optimization

3. Yellow objects are borderline — consider reducing them if you need headroom

4. Green objects are safe. Focus your effort elsewhere

5. Hover over any object to see its exact triangle count and budget in the panel info area

Note:

  Tip: The heatmap overlay is non-destructive. It uses Blender’s object color display mode and does not modify your materials. Toggle it off to return to normal shading.

------------------------------------------------------------

4. LOD GENERATION

MobileReady generates complete LOD chains from your high-detail meshes using Blender’s Decimate modifier. Each preset is tuned for real mobile polygon budgets.

4.1 PRESETS TABLE

  Preset       LOD0 (tris)  LOD1 (tris)  LOD2 (tris)  LOD3 (tris)  Typical Use

  -----------  -----------  -----------  -----------  -----------  -------------------------------------------

  Character    5,000        2,500        1,000        500          Player characters, NPCs, enemies

  Prop         2,000        1,000        500          200          Weapons, pickups, furniture, crates

  Environment  10,000       5,000        2,000        1,000        Buildings, terrain chunks, large set pieces

4.2 CUSTOM TARGETS

If the presets do not match your project, you can set custom triangle targets for each LOD level. Enter exact triangle counts in the Custom fields. MobileReady will use ratio-based decimation to reach each target as closely as possible.


  Note: The Decimate modifier produces approximate results. Final triangle counts may differ slightly from the target, especially for meshes with complex topology or edge constraints.

4.3 PARENT TO EMPTY

When LOD generation completes, all LOD meshes are automatically parented to an Empty object named ObjectName_LODGroup. This hierarchy is directly compatible with:

- Unity — recognized by the LODGroup component importer

- Unreal Engine — detected as LOD levels on FBX import

- Godot — works with LOD node setup

4.4 LOD NAMING CONVENTION

Generated meshes follow the standard engine naming convention:

    MyCharacter_LOD0   (original or highest detail)

    MyCharacter_LOD1   (medium detail)

    MyCharacter_LOD2   (low detail)

    MyCharacter_LOD3   (lowest detail)

The original mesh is duplicated and renamed to _LOD0. Your source mesh is preserved untouched.

------------------------------------------------------------

5. DRAW CALL ESTIMATION

Draw calls are one of the most critical performance metrics on mobile. MobileReady estimates your runtime draw call count and shows you exactly where the cost comes from.

5.1 HOW DRAW CALLS WORK

A draw call is a command sent from the CPU to the GPU to render a batch of geometry. On mobile, each draw call has significant overhead. As a general guideline:

- Under 50 draw calls — excellent for mobile

- 50–100 draw calls — acceptable for most devices

- 100–200 draw calls — may cause frame drops on low-end devices

- Over 200 draw calls — likely to cause performance problems on mobile

Each unique material on each unique object typically results in one draw call. An object with 3 material slots generates 3 draw calls.

5.2 SCOPE: SELECTION VS. SCENE

The Scope dropdown lets you choose what to analyze:

- Selection — only the currently selected objects are counted

- Scene — all visible mesh objects in the active scene are counted

5.3 BATCHING EXPLANATION

MobileReady reports two numbers:

- Current Draw Calls — the estimated count if every object/material combination is a separate draw

- Batched Draw Calls — the estimated count if objects sharing the same material are batched together (as most engines do with static/dynamic batching)

The difference between these two numbers is your batching potential — the number of draw calls you could save by ensuring objects share materials and are eligible for batching.

Note:

  Tip: To reduce draw calls, combine objects that share the same material, use texture atlasing to merge materials, and minimize the number of material slots per object.

5.4 READING RESULTS

The results panel shows:

  Column      Description

  ----------  ---------------------------------------------

  Material    The material name

  Objects     Number of objects using this material

  Draw Calls  Number of draw calls this material contribu..

  Triangles   Total triangles rendered with this material

Materials are sorted by draw call count (highest first), making it easy to identify the biggest offenders.

------------------------------------------------------------

6. TEXTURE MEMORY CALCULATOR

Mobile devices have limited VRAM (often 1–4 GB shared with system memory). The Texture Memory Calculator shows you exactly how much GPU memory your textures will consume after compression.

6.1 FORMAT BPP TABLE

MobileReady supports the following texture compression formats. BPP (bits per pixel) determines the final compressed size.

  Format             BPP    Platform            Notes

  -----------------  -----  ------------------  ---------------------------------------

  ASTC 4×4           8.00   Android, iOS (A8+)  Highest quality ASTC block size

  ASTC 6×6           3.56   Android, iOS (A8+)  Good balance of quality and size

  ASTC 8×8           2.00   Android, iOS (A8+)  Smallest ASTC; some quality loss

  ETC2 RGB           4.00   Android (ES 3.0+)   No alpha channel

  ETC2 RGBA          8.00   Android (ES 3.0+)   With alpha channel

  PVRTC 4bpp         4.00   iOS (legacy)        Requires power-of-two & square textures

  PVRTC 2bpp         2.00   iOS (legacy)        Lowest quality; significant artifacts

  Uncompressed RGB   24.00  All                 No compression, baseline reference

  Uncompressed RGBA  32.00  All                 No compression, with alpha

6.2 MIPMAP MULTIPLIER

When mipmaps are enabled (the default for 3D rendering), the full mipmap chain adds approximately 33% to the base texture size. MobileReady applies a 1.33× multiplier to all size calculations when the Include Mipmaps checkbox is on.

The formula used:

    memory = width * height * (BPP / 8) * mipmap_multiplier

    Where mipmap_multiplier = 1.33 (with mipmaps) or 1.0 (without)

6.3 RESOLUTION OVERRIDE

The Resolution Override lets you simulate what would happen if you resized all textures to a different resolution. This is useful for answering questions like:

- “How much VRAM would I save by halving all my textures?”

- “Can I fit within 64 MB if I drop everything to 512×512?”

Set the override to a resolution (256, 512, 1024, 2048, or 4096) and MobileReady recalculates all sizes as if every texture were that resolution. Set it to Original to use each texture’s actual size.

6.4 READING RESULTS

The results panel displays:

- Per-texture breakdown — each texture image, its resolution, and size in each selected format

- Total VRAM — sum of all texture memory for the selected format

- Budget indicator — a color-coded bar showing usage against common mobile budgets (64 MB, 128 MB, 256 MB)


  Important: These are estimates. Actual GPU memory usage depends on the game engine’s texture streaming, mipmap bias settings, and runtime loading behavior.

------------------------------------------------------------

7. BONE INFLUENCES

Skeletal meshes on mobile have a hard limit on the number of bones that can influence a single vertex. MobileReady helps you find and fix violations before they cause rendering errors in your game engine.

7.1 WHY 4 BONES ON MOBILE

Mobile GPU vertex shaders typically support a maximum of 4 bone influences per vertex. This limit exists because:

- Each influence requires a bone index + weight attribute, consuming vertex buffer bandwidth

- The vertex shader must perform a matrix multiply for each influence — more influences = slower skinning

- Unity, Unreal Engine, and Godot all default to 4-bone skinning on mobile quality settings

Vertices with more than 4 influences will either be silently clamped by the engine (potentially causing visible artifacts) or cause import errors.

7.2 CHECKING INFLUENCES

Select one or more armature-driven mesh objects and click Check Bone Influences. MobileReady scans every vertex and reports:

- Total number of vertices

- Number of vertices exceeding 4 influences

- Maximum influence count found

- A list of the most affected vertex groups (bones)

7.3 AUTO CLEANUP ALGORITHM

Click Auto Clean Bone Influences to automatically reduce all vertices to 4 or fewer influences. The algorithm works as follows:

1. For each vertex, collect all bone weights

2. Sort weights in descending order (highest influence first)

3. Keep the top 4 weights

4. Discard any remaining weights (they are the smallest and least visually significant)

5. Normalize the remaining 4 weights so they sum to exactly 1.0

Note:

  Tip: In most cases, the discarded weights are very small (under 0.05) and the visual difference is imperceptible. For critical deformation areas (face, hands), review the results manually.

7.4 WEIGHT NORMALIZATION

After cleanup, all vertex weights are normalized so they sum to 1.0. This is required by all game engines for correct skinning. Unnormalized weights cause mesh distortion and are a common source of “exploding mesh” bugs on mobile.

You can also run normalization independently (without removing influences) using the Normalize Weights button.

------------------------------------------------------------

8. CHANNEL PACKING

Channel Packing combines multiple grayscale PBR maps into the RGBA channels of a single texture. This reduces the number of texture samples the GPU must perform per fragment, which is critical for mobile fill-rate performance.

HOW IT WORKS

1. Select an object with a Principled BSDF material that has PBR textures connected

2. Open the Channel Packing panel

3. Assign which map goes into each channel: R Channel — e.g., Ambient Occlusion

4. G Channel — e.g., Roughness

5. B Channel — e.g., Metallic

6. A Channel — e.g., Emission Mask (or leave empty)

7. Click Pack Channels

8. A new RGBA image is created and appears in Blender’s Image Editor

SOURCE DETECTION

MobileReady automatically detects textures connected to the Principled BSDF node inputs (Roughness, Metallic, Normal, Emission). You can also manually select any image in the blend file as a channel source.

PRESETS

  Preset          R         G          B            A

  --------------  --------  ---------  -----------  -------------

  ORM             AO        Roughness  Metallic     —

  Unity Mask      Metallic  AO         Detail Mask  Smoothness

  Mobile Compact  Metallic  Roughness  AO           Emission Mask

------------------------------------------------------------

9. TEXTURE ATLAS

The Texture Atlas tool combines textures from multiple objects into a single shared atlas. All selected objects are re-UV-mapped to reference the atlas, reducing the total number of materials and draw calls.

SETTINGS

  Setting         Description                                    Default

  --------------  ---------------------------------------------  --------

  Resolution      Output atlas size (512, 1024, 2048, 4096)      2048

  Padding         Pixel padding between tiles to prevent blee..  Auto

  Include Albedo  Atlas base color textures                      On

  Include Normal  Atlas normal maps                              On

  Include ORM     Atlas ORM packed textures                      On

  Atlas Name      Base name for generated images and material    MR_Atlas

HOW TO USE

1. Select 2 or more mesh objects with textures

2. Open the Texture Atlas panel

3. Configure resolution and map types

4. Click Create Atlas

5. All selected objects now share a single atlas material

BEST PRACTICES

- Group similar-sized objects together for best UV space utilization

- Use 1024 or 2048 for mobile — avoid 4096 unless absolutely necessary

- Enable auto padding to prevent mipmap bleeding

- Combine atlasing with LOD generation: atlas your LOD0 meshes, then generate LODs from the atlased result

------------------------------------------------------------

10. OPERATOR REFERENCE

  Operator                    Python ID                       Input                      Description

  --------------------------  ------------------------------  -------------------------  ---------------------------------------------

  Check Polygon Budget        mobileready.check_budget        Selected meshes            Evaluate triangle counts against assigned b..

  Show Heatmap                mobileready.show_heatmap        Selected meshes            Enable viewport color overlay based on budg..

  Hide Heatmap                mobileready.hide_heatmap        None                       Remove viewport color overlay and restore n..

  Generate LODs               mobileready.generate_lods       Selected meshes            Create LOD chain using preset or custom tar..

  Estimate Draw Calls         mobileready.estimate_drawcalls  Selection or Scene         Calculate draw call count with per-material..

  Calculate Texture Memory    mobileready.calc_texmem         Selected meshes            Compute VRAM usage for mobile texture formats

  Check Bone Influences       mobileready.check_bones         Selected armature meshes   Scan vertices for bone influence count viol..

  Auto Clean Bone Influences  mobileready.clean_bones         Selected armature meshes   Reduce influences to 4 and normalize weights

  Normalize Weights           mobileready.normalize_weights   Selected armature meshes   Normalize all vertex weights to sum to 1.0

  Pack Channels               mobileready.pack_channels       Active mesh with material  Pack PBR maps into a single RGBA texture

  Create Atlas                mobileready.create_atlas        2+ selected meshes         Generate multi-object texture atlas with UV..

CALLING FROM PYTHON

    # Check polygon budgets for selected objects

    bpy.ops.mobileready.check_budget()

    # Show heatmap overlay

    bpy.ops.mobileready.show_heatmap()

    # Generate LODs with Character preset

    bpy.ops.mobileready.generate_lods(preset='CHARACTER')

    # Generate LODs with custom targets

    bpy.ops.mobileready.generate_lods(preset='CUSTOM', lod0=8000, lod1=4000, lod2=2000, lod3=800)

    # Estimate draw calls for selection

    bpy.ops.mobileready.estimate_drawcalls(scope='SELECTION')

    # Calculate texture memory with ASTC 4x4 format

    bpy.ops.mobileready.calc_texmem(format='ASTC_4x4', include_mipmaps=True)

    # Check and clean bone influences

    bpy.ops.mobileready.check_bones()

    bpy.ops.mobileready.clean_bones(max_influences=4)

    # Pack channels with ORM preset

    bpy.ops.mobileready.pack_channels(preset='ORM')

    # Create texture atlas

    bpy.ops.mobileready.create_atlas(resolution=2048)

    # Access addon settings

    settings = bpy.context.scene.mobileready

    settings.budget_warning_threshold = 0.75

    settings.budget_over_threshold = 1.0

------------------------------------------------------------

11. TROUBLESHOOTING

HEATMAP COLORS DO NOT APPEAR

Make sure Viewport Shading is set to Solid mode. The heatmap uses Object Color display, which is only visible in Solid shading. In Material Preview or Rendered mode the object color overlay is not displayed. Also verify that Color → Object is selected in the Solid shading options.

LOD GENERATION PRODUCES 0 TRIANGLES

This happens when the target triangle count is too low relative to the mesh complexity. The Decimate modifier may collapse the entire mesh. Increase the LOD target or use a custom target that is at least 5% of the original triangle count.

DRAW CALL COUNT SEEMS TOO HIGH

MobileReady counts each object/material combination as one draw call. Objects with multiple material slots contribute multiple draw calls. If you see unexpectedly high numbers, check for objects with many material slots. Use the per-material breakdown to identify the most expensive materials and consider consolidating them.

TEXTURE MEMORY SHOWS 0 BYTES

The calculator only measures Image Texture nodes connected to the Principled BSDF. If your materials use procedural textures, vertex colors, or non-standard shader setups, no textures are detected. Bake your procedural textures to images first.

BONE CHECK FINDS NO VERTICES BUT THE MESH HAS AN ARMATURE

Verify that the mesh has vertex groups assigned and that the Armature modifier is present. Meshes parented to an armature without an Armature modifier or without vertex group weights will not be detected as skinned meshes.

AUTO BONE CLEANUP CHANGES VISIBLE DEFORMATION

This typically occurs in areas with complex joint deformation (shoulders, hips, face). The cleanup removes the weakest influences, which may matter in these regions. After cleanup, enter Weight Paint mode and manually adjust weights on affected areas. Focus on the 4 most important bones for each region.

CHANNEL PACKING OUTPUT APPEARS BLACK

This means no source textures were found for any channel. Make sure your Principled BSDF has Image Texture nodes connected to the Roughness, Metallic, or other relevant inputs. If textures are connected through reroute nodes or other intermediary nodes, they may not be detected. Connect Image Texture nodes directly to the BSDF inputs.

ATLAS TEXTURES SHOW BLEEDING AT EDGES

Increase the padding value. Switch from Auto to Manual padding mode and set 8–16 pixels. Also ensure your game engine is generating mipmaps — bleeding is most visible at lower mip levels.

"SELECT AT LEAST 2 MESH OBJECTS" ERROR ON ATLAS

The texture atlas requires at least 2 selected mesh objects with materials. Ensure you are selecting mesh objects (not empties, cameras, or lights) and that they have at least one material assigned.

------------------------------------------------------------

12. FAQ

Q: DOES MOBILEREADY WORK WITH BLENDER 4.X?

Yes. MobileReady is tested with Blender 3.0 through 4.4 and later. It uses stable API features compatible across all recent Blender versions.

Q: CAN I UNDO ALL OPERATIONS?

Yes. All MobileReady operators support Ctrl+Z undo. LOD generation, bone cleanup, atlas creation, and channel packing are all fully undoable. Note that generated images persist in Blender’s data until you save and reload.

Q: DOES THE DRAW CALL ESTIMATOR ACCOUNT FOR GPU INSTANCING?

The estimator focuses on material-based draw call counting, which is the primary cost model for mobile. It does not simulate GPU instancing, as instancing behavior depends heavily on the target engine’s implementation. The batching potential number gives you a reasonable approximation of best-case batching.

Q: ARE THE TEXTURE MEMORY SIZES ACCURATE FOR MY SPECIFIC DEVICE?

The sizes are mathematically accurate for the specified compression format. Actual runtime memory may vary slightly due to engine-specific texture headers, alignment requirements, and streaming tile overhead. The estimates are within 5% of real-world values for all supported formats.

Q: CAN I USE MOBILEREADY ALONGSIDE ATLASPRO?

Yes. The two addons are fully compatible. A typical workflow is to use MobileReady for analysis and optimization, then use AtlasPro for advanced atlas features like trim sheets and palette textures. MobileReady’s built-in atlas is designed for quick mobile optimization; AtlasPro offers more control for complex atlas setups.

Q: DOES BONE CLEANUP WORK WITH RIGIFY RIGS?

Yes. MobileReady operates on vertex groups regardless of the rig system. It works with Rigify, Auto-Rig Pro, Mixamo, and any custom rig. The cleanup only modifies vertex group weights; it does not alter the armature itself.

Q: WHAT IS THE RECOMMENDED TEXTURE RESOLUTION FOR MOBILE?

It depends on the asset type and target device tier. As a general guideline:

- Characters (hero) — 1024×1024 or 2048×2048

- Characters (NPC/enemy) — 512×512 or 1024×1024

- Props — 256×256 to 512×512

- Environment (tiling) — 512×512 or 1024×1024

- UI elements — as small as possible, often 128×128 to 256×256

Use the Texture Memory Calculator with resolution override to find the sweet spot for your VRAM budget.

Q: CAN I EXPORT OPTIMIZED ASSETS TO ANY ENGINE?

Yes. MobileReady generates standard Blender meshes, materials, and images. Export via FBX, glTF, or any format your engine supports. LOD naming conventions are compatible with Unity, Unreal Engine, and Godot.

Q: IS MOBILEREADY SUITABLE FOR NON-MOBILE OPTIMIZATION?

Absolutely. While the presets and budgets are tuned for mobile, the tools work for any platform. VR/AR projects, WebGL games, and even desktop titles benefit from polygon budgets, draw call estimation, and texture memory profiling. Simply adjust the budget values to match your target platform.

Q: CAN I USE MOBILEREADY IN A COMMERCIAL PROJECT?

Yes. The license permits use in any personal or commercial project. You may not redistribute the addon itself.

------------------------------------------------------------

  MobileReady v1.0.0 · Created by DimaP · For Blender 3.0+

MOBILEREADY DOCUMENTATION

Version 1.0.0 · Blender 3.0+

------------------------------------------------------------
$9.99

Have questions about this product?
Login to message

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