Displacement

The Arnold Proxy allows to add Displacement on Entities geometry to add details at render time. As Arnold Displacement parameters can not be stored in the Character Geometry File (.fbx or .gcg), displacement information must be stored at the Character File level.


Examples of Displacement Mapping with different displacement amounts

Creation

Displacement Shaders are created automatically when a displaced mesh is imported to the character geometry mapping.
 
However, a Displacement Shader can be added manually:
  • open the Character File in the Character Maker and go to the Geometry Tab
  • select the Mesh you want to displace in the Main Workspace
  • drag and drop a Shader Node from the Asset Nodes tab
  • enter a name for the Shader
  • enter "displacement" as the category of the Shader


Example of a Displacement Shader applied to a Shading Group Node

Configuration

It is possible to configure a Displacement Shader by linking to the Shading Group Node some specific Renderer Attributes. Here is an example of Arnold Attributes which can be set via the Renderer Attributes (those parameters are the same attributes defined by Arnold for each mesh in Maya). Notice that the same result (and even more!) can also be achieved using Arnold Operators

Attribute Name Description
arnold.disp_height.float

Controls the amount of displacement. Displacement height can have either positive or negative values. This attribute only applies with normal displacement (notice that this value can also be controlled with a ppAttribute).

arnold.disp_padding.float Padding defines how much to extend the bounding box of the object, so that it can include any additional displacement coming from the displacement shader. When the bounding box is hit first by a ray, the displacement will be computed, so an unnecessarily high value will decrease the render efficiency. On the other hand, a low value could result in a clipping of the displaced mesh (notice that this value can also be controlled with a ppAttribute).
arnold.disp_zero_value.float Floating point value which is applied as a shift to the displacement amount. This value can vary depending on how the displacement map has been generated. (notice that this value can also be controlled with a ppAttribute).
arnold.disp_autobump.bool Autobump puts the high frequencies of a displacement map into the bump attribute so that you do not need as many Subdivision Iteration values. It is on by default. in the Arnold attributes of the displacement node: 1 to activate it else 0 (notice that this value can also be controlled with a ppAttribute).


Example of Renderer Attributes applied to a Displacement Shader

To work properly, the default Subdivision parameters of the Arnold Proxy should be changed as specified in Arnold User Guide.