Subdivision Settings

 

The following settings are provided via the Attribute Editor for geometry objects.

Note that you can also set a global maximum number of subdivisions via the global Arnold Render Override settings - the actual number of subdivisions for each object will be the lower of the two values.

 

The following examples have been shaded with the 'Utility' shader in 'polywire' mode.

Type

This enum. Defines the subdivision rule that will be applied to the polymesh at render time. Possible values are catclark (catmull clark) and linear.

None

Ignores any subdivision and renders the mesh as it is.

Linear

Linear subdivision puts vertices in the middle of each face.

 

The Catmull–Clark algorithm is used to create smooth surfaces by recursive subdivision surface modeling. The resulting surface will always consist of a mesh of quadrilateral faces.


Iterations

The maximum number of subdivision rounds applied to the mesh. When subdiv_pixel_error is 0 the number of rounds will be exact instead of a maximum. 

Bear in mind that each subdivision iteration quadruples the number of polygons. If your object has 2 levels of subdivision iterations set and 4 additional iterations set in Arnold, that's 6 subdiv iterations total and therefore 426936 * 4^6 = 426936 * 4096 = 1.7 Billion polygons.

Care should be taken when increasing Arnold's subdivision iterations in combination with Maya's Smooth Mesh Preview (3 on the keyboard). Arnold will also render this preview smoothed state in the final image. This may result in a subdivided mesh that far exceeds the necessary amount of polygons required and will result in longer export/render times.

Adaptive Metric

The metric used to determine the amount of error between a given subdivision level and the limit surface.  

  • edge_length: no final edge will be longer than subdiv_adaptive_error.
  • flatness: the distance to the limit surface will be smaller that subdiv_adaptive_error.
  • auto: in general, flatness will produce better approximation for the same number of tessellated triangles. But since subdivision tessellation does not take into account displacement, "flatness" might stop way too early and miss a lot of displacement detail (think of a displaced plane: a single quad will represent the plane exactly, but will not have enough vertices to show the displacement's detail). To avoid this issue "auto" uses the "edge_length" metric if the polymesh has a displacement shader assigned, otherwise, it will use the "flatness" metric.


Adaptive Error

The maximum allowable difference for the chosen metric (subdiv_adaptive_metric) in the chosen space (subdiv_adaptive_space). The smaller the error, the closer to the limit surface a mesh will be and the less inter-frame "popping" when the subdivision level jumps, at the expense of using more polygons. A value of 0 disables adaptive subdivision, reverting to uniform subdivision, which can be more stable in animation.
Examples:
  • a value of 1.0 with subdiv_adaptive_space set to "raster" and subdiv_adaptive_metric set to "edge_length" will subdivide until all edges are shorter than 1 pixel.
  • a value of 1.0 with subdiv_adaptive_space set to "object" and subdiv_adaptive_metric set to "flatness" will subdivide until the tessellation is closer than 1 unit in object space to the limit surface.

See examples here.

Adaptive Space

Adaptive subdivision in raster space is problematic when instancing: A tessellation that is good for one instance will not be good for another further away. Using object space subdivision will ensure that all instances will subdivide to the proper level.

Raster

Corresponds to adaptive subdivision in raster space.  

Object 

This method corresponds to adaptive subdivision in object space. This is useful for instances or when adaptive tessellation is desirable regardless of a specific camera. Arnold will warn when raster-space tessellation is used on more than one visible instance.

UV Smoothing

The face-varying "limit" dPdu and dPdv vectors computed during subdivision are stored and used for shading instead of computing face-constant dPdu and dPdv vectors on the fly during shading. This can be useful for anisotropic shaders but has a storage cost. Choose between linear, pin borders, pin corners,  or smooth.

Smooth Tangents

You may notice faceting appear in specular highlights when using anisotropy. It is possible to remove the faceted appearance by enabling smooth subdivision tangents (via Arnold subdiv_smooth_derivs parameter). Take into account this requires a subdivision iteration of at least one in the polymesh to work.

Below is an example consisting of a sphere with an anisotropic highlight. On the left image, polygon faceting is noticeable in the specular highlight. On the right image, the specular highlight is much smoother because Smooth Subdivision Tangents has been enabled for the mesh.

If enabled, it will compute smooth UV derivatives (dPdu and dPdv), which is the reason you need a UV map associated with the object).

When the option is disabled, these derivatives are constant per triangle, which results in a faceted appearance whenever dPdu and dPdv (like in the anisotropic computations from the Standard shader).

Enabling this option will have a memory overhead (roughly 100 extra bytes of data per vertex per keyframe).

Ignore Frustum Culling

Disables Subdivision frustum culling of the mesh.

 

  • No labels