Materials control the appearance of 3D objects in a Scene. Within Autograph, you can:
- Create new materials to use with 3D objects
- Assign materials to 3D objects
- Override an existing material
Creating a Material
To create a new Material, go to the Outliner panel, and select Material in the Add menu.
A new Material type primitive will be created. Select it to display its properties in the Properties panel.
Assigning a Material to an Object
After creating a Material, you need to assign it to one or more objects in your Scene. To assign a Material to an Object, (1) select the Object in the Outliner and (2) go to the Materials panel. (3) Using the drop-down menu, pick a Material from the list of available Materials in the Scene. Your Material is now assigned to an Object and should be visible in the Viewport.
Do not forget to add a Light to your Scene, otherwise non-emissive materials will appear black.
Overriding a Material
Currently, when overriding a material loaded from an existing USD asset, Autograph will automatically load the texture maps and plug them in the right in the Material Property. However, this only works if the Material is defined by a
UsdPreviewSurface shader. All material textures are loaded inside a folder named after the Material (Name_Material), and all Material folders are put inside a folder named after the Scene (Name_Textures).
To override an existing Material primitive, (1) navigate to the Material in the Outliner and (2) click on the Edit primitive button on the panel below.
The properties of the overridden material are now displayed.
Autograph has two rendering backends (render delegates): Storm, part of the USD/Hydra project, and Filament, a real-time physically based rendering engine. Each has different rendering capabilities and material models. Autograph offers a unified material model, which lets you specify your material once and have it work with both renderers.
Under the hood, the parameters of this unified model are translated to delegate-specific material models:
- for Storm, Material properties are translated to the corresponding
UsdPreviewSurfaceinput, when such an input exists.
- for Filament, Material properties are translated to the Lit and Unlit models provided by Filament.
Some Material properties have an associated Map parameter, which can be connected to a texture map in order to make the value vary over the surface of the Object. Map parameters are regular image parameters, meaning that anything you use as layer Source could also be used as an animated texture map on a 3D object. This includes:
- Video sources
- Entire sub-compositions
Modifiers are also supported on texture maps.
Generators as texture maps
When binding a Generator to a texture map parameter, make sure that the Generator's Output Format is not Unbounded, otherwise rendering will fail.
Tangent-space normal maps
Normal maps should be specified in tangent space. We use MikkTSpace internally to generate a standard tangent space when tangents are not explicitly specified on a USD primitive.
List of Material properties
Some parameters are only supported by a specific render delegate, this is indicated below in the "Supported Delegates" column.
Some Material properties have both a numeric input and a texture map input (e.g. Base Color and Base Color Map). The texture map input, if it is connected, takes precedence over the numeric input.
|Selects the overall shading model of the material
(only Normal model supported on Storm)
|How the material blends with the rest of the scene. See the dedicated section below.
|Alpha value threshold for the Alpha Masked blending mode.
Base Color Map
|Base color (diffuse albedo or specular color for Metallic materials).
|The opacity of the material.
|Binary value specifying whether the material is metallic or not.
|Controls the perceived smoothness of the surface. See Roughness
|For non-metallic materials, control the specular intensity and index of refraction of materials. Reflectance
Sheen Color Map
|Controls the appearance the sheen layer, above the base layer and below the clear coat. See Sheen color
Sheen Roughness Map
|Roughness of the sheen layer. See Sheen roughness
|Strength of the clear coat layer. See Clear coat
Clearcoat Roughness Map
|Roughness of the clear coat layer. See Clear coat roughness
|Defines the normal at a point on the surface. See Normal.
|Defines the average unoccluded direction at a point on the surface. See Bent normal.
|Clearcoat Normal Map
|Defines the normal used for the clear coat layer at a point on the surface. See Clear coat normal.
|Enables anisotropic highlights. See Anisotropy.
|Controls the direction of anisotropic highlights. See Anisotropy direction.
Ambient Occlusion Map
|Defines how much of the ambient light is accessible to a surface point. See Ambient occlusion.
|Emissive component of the material.
|Name of the texcoord primvar to use on the primitive.
|Wrapping mode of the S texture coordinate.
|Wrapping mode of the T texture coordinate.
|Specular Ambient Occlusion Mode
|See Lighting: specularAmbientOcclusion
|Controls the refraction effect. None: disable refraction. Screen-space: screen-space refraction. See Blending and transparency: refractionMode
|Defines the refraction model used. See Blending and transparency: refractionType
|Controls the source of specular reflections. Environment-Only: only light from environment lighting (dome lights) is reflected. Screen-space: enable screen-space ray-marched reflections. See Lighting: reflections
|Controls how transparent objects are rendered. See Blending and transparency: transparency
|Enables shadows on transparent objects. See Lighting: transparentShadow
|Enables aliasing reduction on specular highlights. See Anti-aliasing: specularAntiAliasing
|Specular Anti-Aliasing Variance
|See Anti-aliasing: specularAntiAliasingVariance
|Specular Anti-Aliasing Threshold
|See Anti-aliasing: specularAntiAliasingThreshold
|Clearcoat IOR Change
|Enables attenuation of the base layer due to the change in index of refraction in the clear coat layer. See Lighting: clearCoatIorChange
|Multi-Bounce Ambient Occlusion
|See Lighting: multiBounceAmbientOcclusion
With the Filament render delegate, the Blending mode options control how the Material blends with the rest of the Scene:
|Blending is disabled, the alpha channel of the material's output is ignored.
|Blending is enabled. The material's output is alpha composited with the background. This is useful for materials with smooth, semi-transparent alpha such as results of a keyer. Note that transparent materials cannot intersect with each other, they only intersect with non transparent materials. You can however properly control their Z order by ordering the centroid of the bounding box of the object along the Z axis.
|Blending is disabled. This blending mode enables alpha masking. The alpha channel of the material's output defines whether a fragment is discarded or not using the Mask Threshold parameter. This is useful to properly intersect materials with completly opaque or completly transparent areas. Semi-transparent areas will be clipped according to Mask Threshold and may appear jaggy, use the Transparent blending mode instead in this case.
|Blending is enabled. The material's output is multiplied with the content of the render target, darkening the content.
|Blending is enabled. Effectively the opposite of the multiply, the content of the render target is brightened.
|Acts as Transparent but transparency is also applied to specular lighting. In Transparent mode, the material's alpha values only applies to diffuse lighting. This blending mode is useful to fade lit objects in and out.
The blending mode is ignored when using the Storm render delegate.
Blending mode and Depth AOV
When requesting the Depth AOV under Composition > 3D Settings, what is written in the depth buffer depends on the blending mode of the material:
- Opaque: the Alpha channel is ignored when writing the depth.
- All other modes are equivalent to selecting Alpha Masking: the depth target is written only for pixels with an Alpha value greater than the Mask Threshold specified on the material.