Company: GameTextures
Role: Lead Technical Artist
Tools: Python3.4+

GameTextures Scan

February, 27, 2018

With photogrammetry growing rapidly our small team pushed interest in generating full photogrammetry content only to realize a lot of the time was spent on processing the image data from the camera into their associated project folders, making adjustments to images - being white balance, using full histogram range, etc. Having one artist do all this work did not seem worthwhile in the long run. I was given the task to research and develop a system to speed up the creation process.

The first step was to read in the raw image data from the camera, provided that the idea was that the artist would not have to do anything but insert their SD card to be read by the computer I/O. Each image from the input path would be compared to its previous image based off training data generated by the images histogram data. When the data no longer passed within accuracy a new image group, or project, is created. This system defines the project name given by the user in a project dialog.

Scan project dialog

The project dialog is the main control point to generating the photogrammetry content. This allows the artist to define the project name and photogrammetry process mode. Current modes are 4-point, 8-point light photoscan, and mesh generation. If the first image is not in the correct rotation, the artist has the ability to rotate it properly. This rotation parameter is saved to make the change if another image of that set is not properly oriented.

Image rotation to fix orientation

If the 4-point or 8-point light template is used the content is processed through Substance Designer using Automation Toolkit. This allows the graph generation to be done procedurally, injecting images and instantly creating the scanned material and saved to the project folder. From there, the artist can make any minor adjustments and changes before finally exporting the assets to be used in engine.

Substance designer file with output

One of the initial issues that came up was with the naming conventions of the image files. The camera raw files often have a generalized name — DSC########.* In order to successfully place the scan images into the proper input node within Substance Designer, I defined an image process to depict which direction the light was cast from, using cardinal directions as its identifier. This then generates the file name projectname_n.tif, projectname_w.tif, projectname_s.tif, and projectname_e.tif for the 4-point lighting solution. 'nw', 'sw', 'se', and 'ne' are used in addition for 8-point lighting.

Output folder of processed photos

While this is still being developed internally for further support issues, the initial phase has been extremely promising. There is one dedicated artist collecting photogrammetry data, and processing this data has enabled us to push out a great amount of content that would not be expected for such a small team.

Process of multiple assets