Bulk Edit Minimum LOD for Platform groups

Hi.

Is there a way to bulk edit the Minimum LOD per platform for multiple meshes? (C++? Python? Blueprint?)

Screenshot-20190424-at-09.10.14.png

Did you find a solution for this?

No. Nothing so far.

https://docs.unrealengine.com/en-US/…ODs/index.html
https://api.unrealengine.com/INT/PythonAPI/class/MeshLOD.html
https://api.unrealengine.com/INT/PythonAPI/class/MeshLODSelectionType.html

This can be done. It has to be in the C++ files for AssetTypeActions_StaticMesh (.cpp & .h). A new function needs to be built to use the LODCopyMesh, and then use the function GetMinimumLODForPlatform(“Mobile”). In this example, it’s easier to just use one platform, rather than having to loop through each. I’d probably just build a new context menu entry for PastePlatformMinLOD, at that point. If only using desktop and mobile, this should be a more simple solution (just checking the mobile platform).

What I do is setup reference meshes which have the proper override I need (i.e. Mobile = 1, Mobile = 2). Then, RMB in the content browser and select “Copy LOD”, then select a group of meshes and RMB>paste PlatformMinLOD from {0}. This is basically like bulk-editing. Setup the view filter to static mesh and go to the root content folder, and all project static meshes can be manipulated quickly.

The “Desktop” platform override is unnecessary–just use “Default” for that.

Hey there Jonathan!
Your solution for this issue sounds excellent! Would you care to share the changes you made to the engine to get this working?

The min LOD per platform information is stored in Unreal as a FPerPlatformInt. It’s a special int that is allowed to be a single value or multiple values. The solution mentioned above is not to create one of those FPerPlatformints, but instead to copy it from another static mesh. If you can get both meshes passed to a function, a line like this will copy the info from LODCopyMesh to Mesh:

Mesh->SetMinLOD(LODCopyMesh->GetMinLOD());

I needed this for myself. I’m using 5.3. I found python API is the easiest way to achieve this. I wrote small python code like:


# For unreal python api, get selected assets and set min LOD for mobile platform if the selected assets are static mesh.

import unreal

# Get selected assets
selected_assets = unreal.EditorUtilityLibrary.get_selected_assets()

# Set min LOD for mobile platform
for asset in selected_assets:
    # Check if the asset is static mesh
    if isinstance(asset, unreal.StaticMesh):
        # Set min LOD for mobile platform
        asset.set_minimum_lod_for_platform("Mobile", 3)
        # Save asset
        unreal.EditorAssetLibrary.save_loaded_asset(asset)
        # Print asset name
        print(asset.get_name() + ' set min LOD for mobile platform.')
    else:
        # Print asset name
        print(asset.get_name() + ' is not static mesh.')

Enable python editor plugin. Select static mesh assets. Run the above python code.

4 Likes