Website powered by

Icon Render Pipeline

This tool takes a set of meshes and sends them to a specified blender file. It then renders out model data to textures, and passes them into a SBSAR file. The SBSAR spits out the final image. At Rebellion, this tool was used to generate icons for all models. When done, this tool would also setup a Perforce changelist ready to be reviewed and to submit.

## Takeaways
### What's the problem?
For a project we have to create icons for each equip-able/useable object, and there were a lot of them.

### What does it do?
It takes renders of a mesh, each render has different object data, such as normals, roughness, metallic, albedo, ect. These are then sent over to a substance designer file, and ran as inputs. The file output a final single image and gets saved to an appropriate location.

Each mesh has an associated config file, so that through a batch process, we can set specific blender files per-mesh.

### How is it made?
It is a standalone python application, that has a 2 stage process involving Blender and Substance Designer. The first process take all the mesh files and sends them to a blender file, 1 by 1. The blender file has 'staging' empty objects that are used to define the transform of the object. Additionally, if the icon requires multiple instances of a mesh (such as a row of bullets), this can be done by adding in more empty objects. Once imported, the blender file renders out all the AOVs required to a 'renders' folder next to the mesh file.

The second stage uses sbsrender, a command line tool that generates an output image form a SBSAR file. To ensure clear instructions, I created a python class that contains all the command line arguments as properties, and orders them correctly when ran. Giving the render textures as inputs, the sbsrender spits out the final output image.

### Post dev thoughts?
- I liked how the sbsrender python class turned out. It became useful for other work later
- I would like to come up with a better way of saving configurations, rather than having a lot of config files
- Adding some functionality to handle what renders are needed based on the sbsar graph
- No threading was involved, but i should have threaded. It would have saved so much time.

This python tool requires a folder to process, an SBSAR file to run and an output folder. When selecting a SBSAR file, the "Graph" input auto updates to list the graphs in the SBSAR file. This can also be run via python code for a nightly build setup.

This python tool requires a folder to process, an SBSAR file to run and an output folder. When selecting a SBSAR file, the "Graph" input auto updates to list the graphs in the SBSAR file. This can also be run via python code for a nightly build setup.