# 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.

###### Catclark

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.

The metric used to determine the amount of error between a given subdivision level and the limit surface. Can be either "flatness" where the curvature of the mesh in pixels is the feature used to choose the adaptive subdivision level, "edge_length" where the length of the polygonal edges in pixels is used, or "auto" which uses "flatness" when no displacement map is applied and "edge_length" when a displacement map is applied to the polymesh.

The maximum allowable difference in pixels or object space (if `subdiv_adaptive_space` = object) between the adaptively chosen subdivision level and the "limit" subdivided surface. Either a "flatness" or "edge_length" metric can be used, depending on polymesh.subdiv_adaptive_metric. It refers to the acceptable tessellation error as seen from the camera, in pixels. If there's no displacement, then the pixel error represents the distance (in pixels) from the subdivided mesh to the "true" or "limit" surface -- sort of a "flatness" heuristic. 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. If displacement is enabled, then the pixel error represents the final size of the subdivided quads (again, in pixels). A value of 0 disables adaptive subdivision, reverting to uniform subdivision, which sometimes is more stable in animation.

See examples here.

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.

#### Dicing Camera

The camera to use when determining subdivision levels of patches during adaptive subdivision.

When enabled, the user provides a specific camera that will be used for all dicing (subdivision) calculations during Adaptive Subdivision (in other words, the tessellation of the object will not vary as the main camera is moved). This can be useful to fix objectionable flickering introduced by Adaptive Tessellation with certain camera moves. If you set a static dicing camera you will still get the benefits from Adaptive Subdivision (higher polygon detail closer to camera) while getting a tessellation that does not change from frame to frame.

By default this is disabled, and should only be used when necessary, and with a carefully chosen position for the dicing camera.

#### 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. This option is not supported yet for adaptive subdivision. 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 to 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).

• No labels