Difference between revisions of "LuxCoreRender Hair and Fur"

From LuxCoreRender Wiki
Jump to navigation Jump to search
(Created page with "LuxCoreRender includes a strand primitive to allow for efficient rendering of large collections of thin strands, such as hair, fur, grass, etc. It loads sets of curves in the...")
 
 
Line 1: Line 1:
LuxCoreRender includes a strand primitive to allow for efficient rendering of large collections of thin strands, such as hair, fur, grass, etc. It loads sets of curves in the [http://www.cemyuksel.com/research/hairmodels/ cemyuskel hair format] and tessellates them at load time. Since the strands produce actual geometry, they can use normal materials and support all lighting effects, including reflections, refractions, shadows, and global illumination, including from each other (for example, self-shadowing)
LuxCoreRender includes a strand primitive to allow for efficient rendering of large collections of thin strands, such as hair, fur, grass, etc. It loads sets of curves in the [http://www.cemyuksel.com/research/hairmodels/ cemyuskel hair format] and tessellates them at load time. Since the strands produce actual geometry, they can use materials and support all lighting effects, including reflections, refractions, shadows, and global illumination, including from each other (for example, self-shadowing)
 
In a typical workflow, a hair system within the 3D package will be used to generate a collection of strand-curves representing each hair. The LuxCoreRender exporter will create the necessary hair file and shape definition. Note that this hair file is in binary format, and there is only a single shape definition exported, so the time to export this data should be minimal.


<!--
In a typical workflow, a hair system within the 3D package will be used to generate a collection of strand-curves representing each hair. The LuxCoreRender exporter will create the necessary hair file and shape definition. Note that this hair file is in binary format, and there is only a single shape definition exported, so the time to export this data should be minimal.-->


==Tessellation options==
==Tessellation options==
Line 10: Line 10:
===Ribbon===
===Ribbon===


This mode renders the strands as simple ribbons made of triangles. The primitive includes data of the camera position, allowing all ribbons to face towards the camera. This mode can be memory intensive. In most cases, the adaptive-ribbon mode should be used instead. It will give similar results with a fraction of the memory use.
This mode renders the strands as simple ribbons made of triangles. The primitive includes data of the camera position, allowing all ribbons to face towards the camera. This mode can be memory intensive so the adaptive-ribbon mode should be used instead. It will give similar results with a fraction of the memory use.


===Adaptive Ribbon===
===Adaptive Ribbon===


This mode builds the strands as curves, then tessellates them into ribbons of triangles. Like the simple ribbon mode, it includes data on the position of the camera and will use that to ensure all ribbons face the camera. In addition, this mode will automatically adjust the polygon count of each ribbon to keep avoid building unnecessary geometry.
This mode builds the strands as curves, then tessellates them into ribbons of triangles. Like the simple ribbon mode, it includes data on the position of the camera and will use that to ensure all ribbons face the camera. In addition, this mode will automatically adjust the polygon count of each ribbon to keep avoid building unnecessary geometry. This mode is recommended for large numbers of very fine strands, such as hair, fur, or grass.
 
''This mode is recommended for large numbers of very fine strands, such as hair, fur, or grass.''


'''Options'''
'''Options'''


*Max depth
*Max depth
**Maximum tesselation depth for strands
**Maximum tesselation depth for strands. If the render shows hairs with sharp corners instead of smooth curves, try ''increasing'' this value.


*Max error
*Max error
**Maxiumum error tolerance during tesselation. Smaller values use more memory, but can prevent patchy or broken hair.
**Maxiumum error tolerance during tesselation. Smaller values use more memory, but can prevent patchy or broken hair. If the render shows hairs with sharp corners instead of smooth curves, try ''decreasing'' this value.


===Solid===
===Solid===
Line 57: Line 55:


*Max depth
*Max depth
**Maximum tesselation depth for strands
**Maximum tesselation depth for strands. If the render shows hairs with sharp corners instead of smooth curves, try ''increasing'' this value.


*Max error
*Max error
**Maxiumum error tolerance during tesselation. Smaller values use more memory, but can prevent patchy or broken hair.
**Maxiumum error tolerance during tesselation. Smaller values use more memory, but can prevent patchy or broken hair. If the render shows hairs with sharp corners instead of smooth curves, try ''decreasing'' this value.


<!--
<!--

Latest revision as of 20:03, 14 December 2017

LuxCoreRender includes a strand primitive to allow for efficient rendering of large collections of thin strands, such as hair, fur, grass, etc. It loads sets of curves in the cemyuskel hair format and tessellates them at load time. Since the strands produce actual geometry, they can use materials and support all lighting effects, including reflections, refractions, shadows, and global illumination, including from each other (for example, self-shadowing)


Tessellation options

The strand primitive includes several different methods for tessellating the hairs into the final shape, as follows:

Ribbon

This mode renders the strands as simple ribbons made of triangles. The primitive includes data of the camera position, allowing all ribbons to face towards the camera. This mode can be memory intensive so the adaptive-ribbon mode should be used instead. It will give similar results with a fraction of the memory use.

Adaptive Ribbon

This mode builds the strands as curves, then tessellates them into ribbons of triangles. Like the simple ribbon mode, it includes data on the position of the camera and will use that to ensure all ribbons face the camera. In addition, this mode will automatically adjust the polygon count of each ribbon to keep avoid building unnecessary geometry. This mode is recommended for large numbers of very fine strands, such as hair, fur, or grass.

Options

  • Max depth
    • Maximum tesselation depth for strands. If the render shows hairs with sharp corners instead of smooth curves, try increasing this value.
  • Max error
    • Maxiumum error tolerance during tesselation. Smaller values use more memory, but can prevent patchy or broken hair. If the render shows hairs with sharp corners instead of smooth curves, try decreasing this value.

Solid

Solid builds the hairs into mesh cylinders. This mode is very realistic, but also very memory intensive. In most cases, the adaptive solid mode should give similar results with a fraction of the memory useage.

Options

  • Side count
    • Number of sides of each cylinder. Higher values are smoother, but use more memory.
  • Cap bottom
    • Enables or disables caps on the roots of the strands
  • Cap top
    • Enables or disables caps on the tips of the strands

Adaptive Solid

Adaptive solid builds hairs into cylinders and adaptively tessellates them base on camera position. This mode works well for small numbers of thick hairs, such as porcupine quills.

Options

  • Side count
    • Number of sides of each cylinder. Higher values are smoother, but use more memory.
  • Cap bottom
    • Enables or disables caps on the roots of the strands
  • Cap top
    • Enables or disables caps on the tips of the strands
  • Max depth
    • Maximum tesselation depth for strands. If the render shows hairs with sharp corners instead of smooth curves, try increasing this value.
  • Max error
    • Maxiumum error tolerance during tesselation. Smaller values use more memory, but can prevent patchy or broken hair. If the render shows hairs with sharp corners instead of smooth curves, try decreasing this value.