Polymesh#
The Polymesh geometry is defined by polygons and vertices. A polygon is a flat plane formed by vertices. In Clarisse, any polymeshes can be used as a poly cage for subdivision surfaces.
Common Attributes#
All polymeshes share quite a few common attributes to manage vertex normals and also subdivision surfaces.
Smoothing Options#
Polygonal meshes are made of flat polygons. To simulate a smooth surface, Clarisse provides controls to smooth the surface normals and to compute a surface approximation for raytracing.
Normals#
By default, smooth normals are rendered using the first available normal map of the polymesh. If no normal map is found, the normals are interpreted as completely smooth. You can change the Smoothing Mode and define a custom Smoothing Angle. Just change Smoothing Mode to Use Smoothing Angle.
Using normal maps defined by the geometry
Custom smoothing angle set to 25°
Smoothing Approximation#
Most of the time, polygonal meshes are approximating smooth surfaces. However, due to the inconsistency between the geometry and the smooth normals, ray tracing artifacts may occur such has the infamous shadow terminator problem due to under tessellation.
To resolve these problems, Clarisse approximates as an offset the geometric position of smoothed surface during ray tracing. This offset can be controlled using the Smoothing Approximation attribute.
- When set to 0% the geometric surface is used during ray tracing.
- When set to 100%, the approximation of the smooth surface is used. Change this value if you get rendering artifacts such as missing shadows.
Subdivision Surfaces#
Subdivision surfaces (Subd) is a method that creates a smooth surface mesh from a linear polygon mesh. Clarisse provides two subdivision surface engines: Native and Pixar's Open Subdiv.
Clarisse's native subdivision engine creates a mathematical representation of the surface and is able to sample the surface without tessellation.
To enable subdivision surfaces, check Enable Subdivision Surface attribute.
Attribute | Description |
---|---|
Enable Subdivision Surface | Converts the polymesh into a subdivision surface mesh |
Subdivision Mode | Sets the subdivision surface engine. |
Geometry Interpolation | Specifies the subdivision surface mode. |
UV Interpolation | Specifies the subdivision mode for UV maps. |
Raytrace Mode | Specifies the subdivision surface rendering engine used for raytracing. |
Raytrace Tessellation Level | Specifies the tessellation level used while in Use Tessellation and Tessellate on the Fly modes. |
Subdivision Level Mode | Specifies the mode of the subdivision level that can be Fixed or Use Property. When set to Fixed the level of tessellation is driven by the Raytrace Tessellation Level attribute.However when set to Use Property the level of subdivision is defined by the value defined in the scalar property set to Subdivision Level Property attribute. If no scalar property matching the name of Subdivision Level Property is found, then the subdivision level falls back to the value defined in Raytrace Tessellation Level. This feature is very useful is your incoming geometry comes from an Alembic cache. That way the subdivision level of your geometry can be directly set in a different package. |
Subdivision Level Property* | Sets the name of the scalar property used to drive the subdivision level of the geometry. |
Property Driven Subdivision Offset* | Offsets the value defined by the scalar property defined by the geometry. This attribute is very useful to increase or reduce the subdivision level without the need to update the scalar property. |
Property Driven Min Subdivision* | Sets a minimum value to the subdivision level defined by the scalar property defined by the geometry. For example, if the scalar property of the geometry defined in Subdivision Level Property is 1, setting a minimum subdivision value to 2 will ensure the tessellation level to be set at least to 2. |
Property Driven Max Subdivision* | Sets a maximum value to the subdivision level defined by the scalar property defined by the geometry. For example, if the scalar property of the geometry defined in Subdivision Level Property is 6, setting a maximum subdivision value to 4 will ensure the tessellation level to be set to 4 maximum. |
* Only active when Subdivision Level Mode is set to Use Property.
Subdivision Modes#
Clarisse allows you to choose between two subdivision surfaces engines: Clarisse's native engine or Pixar's Open Subdiv.
Pixar's Open Subdiv is the industry standard for subdivision surfaces. It supports subdivision surfaces with all the trimming with features such as semi sharp creases.
However, unlike Clarisse's native engine, Pixar's Open Subdiv doesn't support the different raytrace modes such as Tessellate on the fly and Evaluate Surface.
By default Subdivision Mode is set to Use Preferences. This means, the polymesh uses the engine set in the Preferences (set to Native by default). You can change globally this setting at the application or the project level.
To do so, go to Edit > Preferences... > Geometry and change the Subdivision Mode. Alternatively you can change this setting for each geometry by modifying locally their Subdivision Mode attribute.
Open Subdiv#
When Subdivision Mode is set to Open Subdiv, Clarisse uses Pixar's Open Subdiv subdivision surfaces engine. Unlike, Clarisse's native engine, Open Subdiv only supports Fixed Tessellation.
However, it supports Open Subdiv standard features such as semi sharp creases, boundary interpolation and property interpolation. For more information on Open Subdiv, please refer here.
Attribute | Description |
---|---|
Boundary Interpolation | Sets how mesh boundaries are interpolated. |
Property Interpolation | Sets how the mesh properties (UV Maps, Color Maps...) are interpolated. |
Crease Mode | Sets how creases should be evaluated |
Activate Crease Driven Subdivision | When enabled and if the geometry defines creases, the subdivision level of the geometry is automatically defined by the crease level. |
Crease Driven Subdivision Offset* | Offsets the subdivision level value defined by the crease. This attribute is useful to increase or reduce the subdivision level according to the crease level. |
Crease Driven Min Subdivision* | Sets a minimum value to the subdivision level defined by the crease level. For example, if the crease level requires a subdivision level of 1, setting a minimum subdivision value to 2 will ensure the tessellation level to be set at least to 2. |
Crease Driven Max Subdivision* | Sets a maximum value to the subdivision level defined by the crease level. For example, if the crease level requires a subdivision level of 6, setting a maximum subdivision value to 4 will ensure the tessellation level to be set to 4 maximum. |
* Only active when both the geometry defines creases and Activate Crease Driven Subdivision is enabled.
Raytrace Mode#
Clarisse provides different methods to handle subdivision surfaces during rendering.
Mode | Description |
---|---|
Fixed Tessellation | Convert the subdivision surfaces into polygons (quads). This is the fastest mode but can require a lot of memory when the Tessellation Level has high settings. |
Tessellation on the fly | Perform the tessellation during ray tracing. This methods is slower than Fixed Tessellation but it doesn't require memory. |
Evaluate Surface | Evaluate directly the mathematical surface. No tessellation is performed but it is the slowest method. |
Raytrace Tessellation Level#
When set to Fixed Tessellation or Tessellate on the Fly modes, Clarisse subdivision engine relies on this attribute to set the render level of tessellation.
A level of 1 means the cage will be subdivided once into quads. Triangles are split into 3 quads, quads into 4 quads... and so on. After the first level of subdivision the resulting polymesh is a quad mesh: a mesh composed exclusively of quads. At level 2 quads are split into 4 new quads and so on.
At level 3 each original quad from the cage polymesh are subdivided into 64 quads.
Tip
It is possible to drive Raytrace Tessellation Level by a scalar property defined by the geometry by setting Subdivision Level Mode to Use Property.
Compression#
By default, Clarisse compresses geometry data to maximize memory efficiency. While these compression algorithms are mainly lossless, artifacts may appear, in some cases, on geometric properties such as UV Maps because of the compression.
Using the Compression Mode attribute, it is possible to control the compression engine to remove any precision artifacts that could appear.
Compression Mode | Description |
---|---|
Disabled | Disable any compression algorithm that would potentially generate artifacts. |
Enabled | Enable full compression (default). This mode may introduce artifacts in some cases. |
Automatic | Enable full compression but analyze the data to automatically remove artifacts that would be generated by the compression. Enabling this mode requires some extra processing time. |
Polyfile#
The Polyfile allows you to import an external polygon mesh via file referencing. Importing a geometry via file referencing means that geometry topological data isn't stored in the project.
The Polyfile relies instead on the referenced file and each time the project is loaded, the Polyfile re-imports geometry data directly from the referenced file.
A polymesh of a futuristic computer imported from a file
Attribute | Description |
---|---|
Filename | Path to the imported geometry file. You can change this path anytime. |
You can import geometries using File > Import > Geometry... or create a new Polyfile using Create > Geometry > Polyfile and then specify its Filename attribute to the geometry file path you wish to import.
As any other attributes, at anytime you can change the path to import another geometry. To learn more on importing geometries and scenes please refer to Importing Assets.
Polygrid#
The Polygrid is a simple flat polygon grid defining a UV map. It is possible to control the number of spans in u and v using Spans attribute.
Polygrid with 20x20 spans
Attribute | Description |
---|---|
Size | Set the size of the grid. |
Spans | Set the number of spans in u and v. |
Polybox#
The Polybox is a simple polygon box defining an UV Map. It is possible to control the number of spans in X, Y and Z using the Spans attribute and its size using the Size attribute.
Polybox with 3x3x3 spans
Attribute | Description |
---|---|
Spans | Set the number of spans in u and v. |
Size | Set the box size in X, Y, Z |
Polysphere#
The Polysphere is a simple polygon sphere defining an UV Map. It is possible to control the number of spans in u and v using the Spans attribute and its size using the Size attribute.
Polysphere with 32x16 spans
Attribute | Description |
---|---|
Spans | Set the number of spans in u and v. |
Size | Set the sphere size in X, Y, Z |
Polycylinder#
The Polycylinder is a polygon cylinder defining an UV Map. It is possible to control the number of spans in X, Y and Z using the Spans attribute and its size using the Size attribute.
Polycylinder with 16x4x4 spans and flat caps
Attribute | Description |
---|---|
Spans | Set the number of spans in X,Y and Z. |
Radius | Set the radius of the cylinder. |
Height | Set the height of the cylinder. |
Caps Mode | Select how caps are generated |
Caps Mode#
It is possible to control how caps are generated using the Caps Mode attribute.