Rendering Curves as Feathers - Arnold for Maya
![]() |
![]() |
Feather rendered as curves
This tutorial will cover how to render a feather using a paint effects brush that has been converted to curves.
A Maya file is available here.
- The curves were first generated as a Paint Effects brush - strokeFeatherExoticLarge.mel and then converted to curves - Modify>Convert>Paint Effects to curves.
- To render this many curves, you will first need to create an override set for the curves. This will enable you to add the following 'Override Attributes' to the curves without having to add them to each individual curve.
A quicker and more efficient way to render multiple curves is to use the curve collector.
Mode
There are two algorithms for rendering curves in Arnold, ribbon, and thick. For the main stem, you will need to render the curve using thick mode.
![]() |
![]() |
Mode: ribbon | Mode: thick |
The individual barbs look better when rendered as ribbon mode:
![]() |
![]() |
Mode: thick | Mode: ribbon (more suited for rendering feather barbs). |
Ai Curve Width
When the Ai Curve Width is set too high, the curves start to overlap, and errors in the sampling will occur.
![]() |
![]() |
Ai Curve Width: 0.01. Curves are overlapping. | Reducing the Ai Curve Width to 0.005 fixes the problem |
Opacity
Adding a ramp texture map to the opacity of the standard hair will soften the edges of the curves.
![]() |
![]() |
No opacity | Ramp texture connected to standard hair opacity shader |
Ensure that the opaque attribute is added to the set and that it is disabled for the opacity to work properly.
Stem
Increase the curve width so that it is at least twice the width of the feather curves (in this case a value of 0.04 was used). Make sure to change the mode to thick so that the curve appears rounded. The main stem of the feather will require a regular glossy material. Connect a standard surface shader to the Curve Shader of the stem curve.
![]() |
![]() |
Stem curve rendered as 'thick' mode | Wireframe |
Shading
Create a standard hair shader and connect it to the Ai Curve Shader attribute of the curves set.
Root Color
The images below show the effect of altering the root color.
![]() |
![]() |
root color: white | root color: black |
Texture
The images below show the effect of adding a colored circular ramp to the specular_tint of the standard_hair shader.
![]() |
![]() |
![]() |
Ramp texture connected to specular color | Ramp texture connected to root color | Ramp texture connected to root & specular color |
SSS only works with poly meshes and is therefore not supported by the curves primitive.
Visible in Specular Reflections/Transmission
To see the curves in glossy reflections and refractions you will need to add the following Override Attributes:
- Ai Visible in Glossy
- Visible in Refractions
![]() |
![]() |
Ai Visible in Glossy/Visible in Refractions: Off | Ai Visible in Glossy/Visible in Refractions: On |
Curves are not visible in reflections by default. If you want your curve to be reflected, you will have to add the attribute Visible in Reflections to the override set containing the curves.
![]() |
![]() |
Curve is not visible in Reflection | 'Visible in Reflections' override added to curve's override set |
Arnold Set attributes
That concludes this tutorial on rendering curves as feathers. Rendering curves as hairs using override sets is a useful way to create complex looking scenes without the overhead of working with heavy amounts of geometry.