Procedural Vegetation Nanite Foliage meshes crash packaged project

Cash package game (shipping/development), UE 5.8.1 :(((

On old PC: (intel CPU 14 series, GTX 1080, 16 ram), project open normally, windows 10

On my second PC (Ryzen 9 5950x, RTX 3080ti, 64 ram), crash in 90%(sometimes project work-10%), Windows 11. Update BIOS, change Windows, install last nvidea drivers: nothing changes!!

Hey folks, this is scheduled to be addressed in 5.8.2. I don’t have a date for that just yet.

3 Likes

“Permanent” workaround. Run this as a python script in the editor. (first it lists the Assets that has PV links) then edit the "DRY_RUN variable from True to False, to actually run the modification.

Not taking any accountablity of what might happen to your project (shouldnt “break” anything, but idk what they are doing later on if those Links are going to be required for something more than rightclick functionality at a later date). for now, the only consequence i see is that the the following actions will not be possible anymore:

1. Content Browser, right-click the mesh → ExecuteOpenInPVEditor (ProceduralVegetationEditorModule.cpp:161)
2. Level viewport, right-click a placed tree → ExecuteOpenInPVEditorOnSelectedActors (line 274)

# Strips UProceduralVegetationLink AssetUserData from PV-exported meshes/skeletons/physics assets.
# That AssetUserData holds a HARD ref back to the authoring PCG graph (UProceduralVegetation),
# which drags the graph into the cook -> UPVGrowerSettings::PostLoad crashes in packaged builds.
# Run from the editor: Tools > Execute Python Script (or the Output Log's python console).

import unreal

TARGET_DIRS = ["/Game/Megaplant_Library", "/Game/ProceduralVegetation"]
DRY_RUN     = True          # flip to False to actually modify + save

EAL = unreal.EditorAssetLibrary
hits = 0
failed = []

for d in TARGET_DIRS:
    for path in EAL.list_assets(d, recursive=True, include_folder=False):
        obj = EAL.load_asset(path)
        if obj is None:
            continue
        try:
            aud = obj.get_editor_property("asset_user_data")
        except Exception:
            continue                      # asset type has no AssetUserData
        if not aud:
            continue
        kept = [u for u in aud
                if u is not None and u.get_class().get_name() != "ProceduralVegetationLink"]
        if len(kept) == len(aud):
            continue
        hits += 1
        unreal.log("PV link on: %s" % path)
        if not DRY_RUN:
            EAL.checkout_asset(path)
            obj.set_editor_property("asset_user_data", kept)
            # only_if_is_dirty=False -> always write, don't trust the dirty flag
            if not EAL.save_asset(path, False):
                failed.append(path)

unreal.log("PV links found%s: %d" % ("" if DRY_RUN else " and stripped", hits))
if failed:
    unreal.log_error("FAILED TO SAVE %d asset(s) - check them out manually and re-run:" % len(failed))
    for p in failed:
        unreal.log_error("   %s" % p)
1 Like

Update to UE 5.8.2

Crashed build on start! Not resolved!

1 Like

Hey, I ran a few tests and started a new thread here: