Share

Curves - Arnold User Guide

Represents a set of curves that can be either flat (ribbon-like) or thick. This is useful for modeling hair or other objects consisting of long thin strands. The curves can be specified using various basis functions (Piecewise-linear, Bezier, B-Spline, or Catmull-Rom).

Note:

Currently, there is no checkbox to avoid SSS computations in point and curve primitives. However, the use of SSS is not supported with point and curve primitives and is therefore not recommended.

Curve Width

Defines the rendered thickness of the spline.

curve_width: 0.01 - 0.1

It is also possible to connect a texture map or shader (e.g. noise) to the curve_width.

noise -> curve_width

Note:

It is not currently possible to map a 3d texture or project a texture to the curve_width attribute. It is not possible to displace a spline curve using a displacement shader.

Min. Pixel Width

If this value is non-zero, curves with a small on-screen width will be automatically enlarged so that they are at least the specified size in pixels. The enlargement fraction is then used in the hair shader to adjust the opacity so that the visible thickness of the hair remains the same. For a given number of AA samples, this makes it a lot easier to antialias fine hair, at the expense of render time (because of the additional transparency/depth complexity). Good values are in the range of 0.2 to 0.7. Values closer to 0 are faster to render but need more AA samples. So if your scene already uses very high AA settings, you should use a low value like 0.1. For best results, you may need to increase the auto-transparency depth, and/or lower the auto-transparency threshold, but watch the effect on render times. Note that this parameter currently works with the ribbon mode only.

Mode

There are three algorithms for rendering curves in Arnold.

Ribbon

Ribbon mode is recommended for fine geometry such as realistic hair, fur or fields of grass. These curves are rendered as camera-facing flat ribbons. For secondary and shadow rays, they face the incoming ray direction. This mode doesn't look so good for very wide hairs or dramatic zoom-ins because of the flat appearance. This mode works best with a proper hair shader (perhaps based on a Kay-Kajiya or Marschner specular model).

Thick

Thick mode resembles spaghetti. It has a circular cross-section and a normal vector that varies across the width of the hair. Thick hairs look great when zoomed in, and are especially useful for effects work, but their varying normals make them more difficult to antialias when they are small. You can use any shader with this rendering mode, including lambert, phong, etc.

Oriented

Oriented mode allows the curves to face in a given direction at each point. This is more useful for modeling blades of grass, tape, and so on.

Wrap Mode

Set the periodicity of the curves. Allowed values are nonperiodic (default) and pinned. Setting the wrap_mode to pinned is only allowed on curves with either b-spline or catmull-rom basis. Pinned curves pass through the first and last point without having to introduce phantom points, thus reducing the amount of data stored on disk. This is similar to the wrap attribute found on the USD BasisCurves primitive. A pinned curve is allowed to have an equal number of varying values as points (Nv = N), since two points are added internally to elongate the curve, thus resulting in Nv = N-2.

The left curve's wrap_mode is set to nonperiodic, the right curve's is set to pinned.

Was this information helpful?