MinshuG / pyUE4Parse

ue4 asset parser/reader
MIT License
47 stars 15 forks source link
python unreal-engine-4

UE4/5 Asset Parser

Installation

python -m pip install git+https://github.com/MinshuG/pyUE4Parse.git  // minimal installation

python -m pip install git+https://github.com/MinshuG/pyUE4Parse.git[tex]  // with texture decoders

Features

Usages

Basic Usages ```python from UE4Parse.Assets.Objects.FGuid import FGuid from UE4Parse.Provider import DefaultFileProvider, MappingProvider from UE4Parse.Versions import EUEVersion, VersionContainer from UE4Parse.Encryption import FAESKey import logging logging.getLogger("UE4Parse").setLevel(logging.INFO) # set logging level path = r"C:\Program Files\Epic Games\Fortnite\FortniteGame\Content\Paks" aeskeys = { FGuid(0,0,0,0): FAESKey("0xFE478B39DF1B1D4E8D8DFD38272F216DBE933E7F80ADCC45DC4108D70428F37D"), } import gc; gc.disable() # temporarily disabling garbage collector gives a huge performance boost provider = DefaultFileProvider(path, VersionContainer(EUEVersion.LATEST)) provider.initialize() provider.submit_keys(aeskeys) # mount files provider.load_localization("fr") gc.enable() # enable garbage collector again provider.mappings = MappingProvider("path/to/mappings.usmap") package_path = 'FortniteGame/Content/Animation/Game/MainPlayer/Skydive/ParaGlide/MechanicalEngineer/BS_MechanicalEngineer_Into_NoPack_GLIDER' package = provider.try_load_package(package_path) if package is not None: package_dict = package.get_dict() # get json serializable dict # write package_dict to json import json with open('something.json', 'w') as f: json.dump(package_dict, f, indent=4) ```
Converting Textures ```python if texture := package.find_export_of_type("Texture2D"): image = texture.decode() # returns PIL Image object image.save("cool_image.png", "PNG") # save image # for more information refer to https://pillow.readthedocs.io/en/stable/reference/Image.html?highlight=Image#PIL.Image.Image ```

Links