class ClusteredMeshletOptimizer
ClusteredMeshletOptimizer takes an input PackedGeometryData object, splits it into meshlets of a set size, and iteratively merges, reduces, and splits these initial meshlets into a directed acyclic graph structure containing many levels of detail which can be efficiently queried at runtime to display continuous LOD based on the camera parameters. The reduction is always run to its natural end point, which can be either that only a single meshlet remains, or more commonly that the reduction can not be taken further because of irreducible features or the used settings.
Properties
| Property | Description |
|---|---|
| BorderImportance | The importance value of the hard, non-continuous borders in the geometry field data, like normals, UVs, or colors. This importance specifically targets how much existing borders are allowed to move, and does not influence stretch inside continuous areas. The importance is relative to the values of the other mesh features (or disabling an importance entirely by setting it to 0). A higher number means higher importance. Default is 1.0 |
| ColorImportance | The importance value of the vertex-colors of the Geometry, both the boundary between triangles with different colors, as well as how the colors interpolate over the surface of the triangles. The importance is relative to the values of the other mesh features (or disabling an importance entirely by setting it to 0). A higher number means higher importance. Default is 1.0 |
| Geometry | The packed geometry data object that is processed by the tool. |
| GeometryImportance | The importance value of the position of the vertices and triangles of the Geometry, or the silhouette of the Geometry. The importance is relative to the values of the other mesh features (or disabling an importance entirely by setting it to 0). A higher number means higher importance. Default is 1.0 |
| GroupImportance | The importance value of the boundary between triangles from different sub-geometries. The importance is relative to the values of the other mesh features (or disabling an importance entirely by setting it to 0). A higher number means higher importance. Default is 1.0 |
| Isotropicity | The Isotropicity value is a measure of how isotropic the triangles will be in the processed mesh. A low value will create more sliver triangles, but adapts tighter to the mesh. A high value requires more triangles to adapt to the original mesh, but creates more evenly spaced triangles which are closer to being equilateral. |
| MaterialImportance | The importance value of the boundary between triangles with different materials. For example, if triangles with a metallic material are connected to triangles with a wood material, this setting will determine how important it is to keep the border between them intact. The importance is relative to the values of the other mesh features (or disabling an importance entirely by setting it to 0). A higher number means higher importance. Default is 1.0 |
| MaxTrianglesPerMeshlet | Set the max allowed triangles per meshlet. |
| MaxVerticesPerMeshlet | Set the max allowed vertices per meshlet. |
| Name | The name of the ClusteredMeshletOptimizer object. (Inherited from Object) |
| NormalImportance | The importance value of the vertex-normals of the Geometry, both the sharp edges, as well as how the normals interpolate over the surface of the triangles. The importance is relative to the values of the other mesh features (or disabling an importance entirely by setting it to 0). A higher number means higher importance. Default is 1.0 |
| SplitMeshletsByMaterial | If enabled, the meshlets are split by material. Any one meshlet will always only contain one material. This will cause borders between materials to be locked through reduction and hence not reduce as heavily as the tool otherwise would. |
| TexcoordImportance | The importance value of the UV coordinates of the Geometry, both the boundary of the UV charts, as well as the UV stretch across the triangles. The importance is relative to the values of the other mesh features (or disabling an importance entirely by setting it to 0). A higher number means higher importance. Default is 1.0 |
| UseLocalVertexIds | If enabled, the VertexIds field in the packed geometry will reference meshlet-local vertex indices in the range [0-MaxVerticesPerMeshlet] instead of global indices. Enabling this also creates the additional fields cmo:MeshletVertices and cmo:MeshletVertexMapping, which can be used to retrieve the global vertex ids from the meshlet local vertex ids. |
| UseNonContiguousGrouping | If enabled, meshlets are allowed to be grouped non-contiguously if no contiguous options are available. This will allow deeper reduction and create more course detail levels at the cost of the meshlets no longer being guaranteed contiguous. |
Methods
| Method | Description |
|---|---|
| AddObserver | Adds a user-defined observer object to the interface, that will receive events from the interface. (Inherited from Object) |
| GetClass | Get the name of the ClusteredMeshletOptimizer class. (Inherited from Object) |
| IsA | Returns true if ClusteredMeshletOptimizer is a or is a descendant of the class named as the type parameter. (Inherited from Object) |
| IsNull | Returns true if the ClusteredMeshletOptimizer object is invalid. (Inherited from Object) |
| IsSameObjectAs | Returns true if the ClusteredMeshletOptimizer object is valid. (Inherited from Object) |
| NonNull | Returns true if the ClusteredMeshletOptimizer object is valid. (Inherited from Object) |
| PrintInfo | Prints the content/info of the ClusteredMeshletOptimizer object to the log. (Inherited from Object) |
| RemoveObserver | Removes a previously added observer object. (Inherited from Object) |
| Run | Runs the tool. |
Static methods
| Method | Description |
|---|---|
| IsClassA | Returns true if the class is a or is a descendant of the class named as the type parameter. (Inherited from Object) |
| SafeCast | SafeCast makes sure the input object is of a class that can be cast into spClusteredMeshletOptimizer, and if this is the case, returns the object cast into spClusteredMeshletOptimizer. (Inherited from Object) |
Properties details
BorderImportance
The importance value of the hard, non-continuous borders in the geometry field data, like normals, UVs, or colors. This importance specifically targets how much existing borders are allowed to move, and does not influence stretch inside continuous areas. The importance is relative to the values of the other mesh features (or disabling an importance entirely by setting it to 0). A higher number means higher importance. Default is 1.0
ColorImportance
The importance value of the vertex-colors of the Geometry, both the boundary between triangles with different colors, as well as how the colors interpolate over the surface of the triangles. The importance is relative to the values of the other mesh features (or disabling an importance entirely by setting it to 0). A higher number means higher importance. Default is 1.0
Geometry
The packed geometry data object that is processed by the tool.
GeometryImportance
The importance value of the position of the vertices and triangles of the Geometry, or the silhouette of the Geometry. The importance is relative to the values of the other mesh features (or disabling an importance entirely by setting it to 0). A higher number means higher importance. Default is 1.0
GroupImportance
The importance value of the boundary between triangles from different sub-geometries. The importance is relative to the values of the other mesh features (or disabling an importance entirely by setting it to 0). A higher number means higher importance. Default is 1.0
Isotropicity
The Isotropicity value is a measure of how isotropic the triangles will be in the processed mesh. A low value will create more sliver triangles, but adapts tighter to the mesh. A high value requires more triangles to adapt to the original mesh, but creates more evenly spaced triangles which are closer to being equilateral.
MaterialImportance
The importance value of the boundary between triangles with different materials. For example, if triangles with a metallic material are connected to triangles with a wood material, this setting will determine how important it is to keep the border between them intact. The importance is relative to the values of the other mesh features (or disabling an importance entirely by setting it to 0). A higher number means higher importance. Default is 1.0
MaxTrianglesPerMeshlet
Set the max allowed triangles per meshlet.
MaxVerticesPerMeshlet
Set the max allowed vertices per meshlet.
Name
The name of the ClusteredMeshletOptimizer object. (Inherited from Object)
NormalImportance
The importance value of the vertex-normals of the Geometry, both the sharp edges, as well as how the normals interpolate over the surface of the triangles. The importance is relative to the values of the other mesh features (or disabling an importance entirely by setting it to 0). A higher number means higher importance. Default is 1.0
SplitMeshletsByMaterial
If enabled, the meshlets are split by material. Any one meshlet will always only contain one material. This will cause borders between materials to be locked through reduction and hence not reduce as heavily as the tool otherwise would.
TexcoordImportance
The importance value of the UV coordinates of the Geometry, both the boundary of the UV charts, as well as the UV stretch across the triangles. The importance is relative to the values of the other mesh features (or disabling an importance entirely by setting it to 0). A higher number means higher importance. Default is 1.0
UseLocalVertexIds
If enabled, the VertexIds field in the packed geometry will reference meshlet-local vertex indices in the range [0-MaxVerticesPerMeshlet] instead of global indices. Enabling this also creates the additional fields cmo:MeshletVertices and cmo:MeshletVertexMapping, which can be used to retrieve the global vertex ids from the meshlet local vertex ids.
UseNonContiguousGrouping
If enabled, meshlets are allowed to be grouped non-contiguously if no contiguous options are available. This will allow deeper reduction and create more course detail levels at the cost of the meshlets no longer being guaranteed contiguous.
Methods details
AddObserver
Adds a user-defined observer object to the interface, that will receive events from the interface. (Inherited from Object)
GetClass
Get the name of the ClusteredMeshletOptimizer class. (Inherited from Object)
IsA
Returns true if ClusteredMeshletOptimizer is a or is a descendant of the class named as the type parameter. (Inherited from Object)
IsNull
Returns true if the ClusteredMeshletOptimizer object is invalid. (Inherited from Object)
IsSameObjectAs
Returns true if the ClusteredMeshletOptimizer object is valid. (Inherited from Object)
NonNull
Returns true if the ClusteredMeshletOptimizer object is valid. (Inherited from Object)
PrintInfo
Prints the content/info of the ClusteredMeshletOptimizer object to the log. (Inherited from Object)
RemoveObserver
Removes a previously added observer object. (Inherited from Object)
Run
Runs the tool.
Static methods details
IsClassA
Returns true if the class is a or is a descendant of the class named as the type parameter. (Inherited from Object)
SafeCast
SafeCast makes sure the input object is of a class that can be cast into spClusteredMeshletOptimizer, and if this is the case, returns the object cast into spClusteredMeshletOptimizer. (Inherited from Object)
