Shutterbug:
Icon
Generator
Unreal Engine 5, C++, Blueprint, Materials
The Task
Provide a system for capturing Towerborne loot item icons for both in-game and marketing quickly. It needs options for setting resolution and caching camera transforms for each item category.
Given the hundreds of gear, character customization, cosmetics and weapon items in the game,
tooling to hook into the backend setup and allow marketing and art to
generate—and iterate on—icons at a fast pace was critical.
The Process
I started looking at existing engine code surrounding the viewport widget, lighting preview and file management. This was also my first go at writing Slate UI, so I used the widget reflector editor tool to source various pieces of UI code already used un Unreal. The preview window was created from a render target displaying an image generated from a compositing material. I wrote the mannequin actor in C++ and spawned it into the scene, so no external blueprints were needed. An editor settings menu housed all the mannequin models as well as parameters and presets for the camera, folder paths and pose animation assignments.
The first few versions were given to the character artists for feedback. Options for the resolution were expanded. There were some bugs with the iris texture displays. Things like animation playing and scrubbing were add for emote icons. Overall, this ended up seeing some incredible mileage!
The Result
Asset data/backend populated lists with filtering
Lighting profile and post process adjustments
Resolution and upscaling options
Animation and VFX support for posing and emote icons
Skin and eye color options, values provided from colors in-game
Final icon image was downrez’d and comped with alpha transparency in an a utility material
Auto-import for texture uasset
Slew of presets in the preferences menu, including camera transforms per category
Icon preview window
In Game
Retro & Challenges
Originally, I had planned to create this in an editor utility blueprint, but given there was no easy access to SEditorViewport in UMG, I choose to take a very deep dive into C++ and Slate. Prior to writing this tool, my main experience modding editor code was exposing custom nodes in blueprints. This was a very fun experience!
After writing the tool, an engineer was able to complete the integration to the backend framework relatively easy.