Code for my bachelor thesis "Comparison of material models in modern physically based rendering pipelines", submitted in August 2020 at the Stuttgart Media University
To investigate how the PBR material models of the chosen rendering tools differ in terms of the quality and range of reproducible materials, several images depicting an object with different material properties in a certain lighting condition were generated. The material property is influenced by exactly one parameter at a time. Each time the value of the parameter is incremented with a specific step size, a new image is created. This results in a row of images for each rendering tool, which are contrasted in a table, also referred to as material chart.
Within the context of my paper, four material parameters are examined in more detail (Roughness, Specular, Metallic, Clearcoat). The so far examined shader models are:
In general, the rendering framework is controlled via command line. The user can specify an arbitrary parameter name and HDRi image for IBL (if the source image is provided in the appropriate folder).
The general syntax is:
renderer projectscene pythonscript [renderengine] parameter environment-name
However, the actual syntax differs between each software tool.
The command will execute a Python program that will change the material properties and render the scene afterwards. All references such as path names or the name of the material are defined in the Python scripts. If there are any questions, feel free to ask.
mayapy python-script scene parameter environment-name
I have used two batch scripts for conventiently rendering scenes:
mayaStandalone_AllEnvironments.bat
: scene with IBL (scene must include at least one AiSkyDome
) - render the scene with all possible HDRi background images, provided in the respective folder (see mayaStandalone_RenderMatParam.py
, l. 17)mayaStandalone_DirectionalLight.bat
: scene without IBLblender -b scene -P python-script render-engine parameter environment-name
Again, I have used two batch scripts for conventiently rendering scenes:
blender_AllEnvironments.bat
: scene with IBL (will change background of scene via world settings) - render the scene with all possible HDRi background images, provided in the respective folder (see blender_RenderMatParam.py
, l. 17)blender_DirectionalLight.bat
: scene without IBLIn this case, the logic is partly implemented in blueprints and partly in the provided Python script. If requested, I can provide the Unreal project including the blueprints as well.
The taken approach was to start the application (i.e. game), increment the chosen material parameter while in game mode, render the scene by taking a “high resolution screenshot” and automatically stop the application when the last value has been rendered.
However, Python scripts can only start a level in the so-called “Simulate” mode, that is a game mode without any player controller. As the scene camera cannot be assigned to any player entity, only the editor camera is available. This is a disadvantage because the final image does not necessarily correspond to the result of a digital production. Nevertheless, the renderings should not differ too much since the editor option “Game View” was activated before starting the rendering process.