Skip to content

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

PropertyDescription
BorderImportanceThe 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
ColorImportanceThe 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
GeometryThe packed geometry data object that is processed by the tool.
GeometryImportanceThe 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
GroupImportanceThe 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
IsotropicityThe 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.
MaterialImportanceThe 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
MaxTrianglesPerMeshletSet the max allowed triangles per meshlet.
MaxVerticesPerMeshletSet the max allowed vertices per meshlet.
NameThe name of the ClusteredMeshletOptimizer object. (Inherited from Object)
NormalImportanceThe 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
SplitMeshletsByMaterialIf 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.
TexcoordImportanceThe 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
UseLocalVertexIdsIf 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.
UseNonContiguousGroupingIf 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

MethodDescription
AddObserverAdds a user-defined observer object to the interface, that will receive events from the interface. (Inherited from Object)
GetClassGet the name of the ClusteredMeshletOptimizer class. (Inherited from Object)
IsAReturns true if ClusteredMeshletOptimizer is a or is a descendant of the class named as the type parameter. (Inherited from Object)
IsNullReturns true if the ClusteredMeshletOptimizer object is invalid. (Inherited from Object)
IsSameObjectAsReturns true if the ClusteredMeshletOptimizer object is valid. (Inherited from Object)
NonNullReturns true if the ClusteredMeshletOptimizer object is valid. (Inherited from Object)
PrintInfoPrints the content/info of the ClusteredMeshletOptimizer object to the log. (Inherited from Object)
RemoveObserverRemoves a previously added observer object. (Inherited from Object)
RunRuns the tool.

Static methods

MethodDescription
IsClassAReturns true if the class is a or is a descendant of the class named as the type parameter. (Inherited from Object)
SafeCastSafeCast 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)