Unreal Engine 5 Asset Management Tool
This tool is made for Unreal Engine. It currently includes features such as mass-importing assets with pre-defined settings, distributing assets into custom created folder structures, as well as auto instancing materials for multiple static meshes at once. My idea for this tool originally started out during my time as the Art Lead of a 4-person VR team, and further when I was the Tools Tech Artist on my capstone team. I was handling the assets and directory structures both inside and outside engine, and I was also having to create a ton of material instances with every prop that was added. This made me realize that I wanted a to automate this process somehow, and what better way to do that than write a script!
I found the Unreal Engine Python API and that served as my starting point as I went through the libraries. My first step was to figure out how I can create folder structures and distribute assets. Since the asset class was bound to be a constant, I decided to use that to decide which folder to move it to. I used the EditorAssetLibrary to get asset data such as name and class name. I then used a dictionary to determine folder names.
My next step was to script asset import with pre-set parameters for each asset type. I found this to be most challenging as the documentation was not very detailed. My understanding of it in the end was that you have to set certain FBX import options (such as combine meshes or build nanite) and feed these into the task options for each asset. Finally I made a list of these task options and fed the list into the AssetToolHelpers import_asset_task(). This would batch import these assets with the desired settings, which were read from a JSON file.
I would like to make the same improvements in readability here.
Finally, I wanted my tool to be able to iterate over all the static meshes, find the corresponding textures, create the material instance for it with those textures and assign it to the static mesh. Naming conventions are crucial for this step, and so I made sure to set certain export settings in Substance Painter for the 3D artists so they wouldn't have to worry about it.
I would definitely like to improve how I assert naming conventions for imported assets, and I see myself making further improvements in this tool moving forward.
Finally, I made a simple UI to allow for testing and demonstration of the tool using PyQt, and wrote a script that would make my own custom menu for this tool. This script was added to the set of initial Python scripts in the project that Unreal Engine would run on startup. My next steps here would be to make the UI executable outside unreal and allow it to open the Unreal Project. Here is the link to my GitHub repository.