You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In nanite's paper https://advances.realtimerendering.com/s2021/Karis_Nanite_SIGGRAPH_Advances_2021_final.pdf page 48. It is described that the grouping cluster is a graph partioning problem where they minimize the weight of total edges that cross from one cluster to another. "Graph partitioning algorithms partition a graph into a specified number of partitions
such that total weight of all the edges that cross from one partition to another, called
the edge cut cost, is minimized.
In our case graph nodes are clusters.
Graph edges connect clusters that have directly connected adjacent triangles.
The graph edge weights are the number of shared triangle edges between those
clusters"
I would like to know if meshopt_buildMeshlets API is taking in consideration the same optmization problem.
meshopt_buildMeshlets solves a different problem - its goal is to partition the triangle list into meshlets, whereas the algorithm you've quoted partitions meshlets into groups. As I noted in a previous discussion [assuming that was about Nanite], the group size is not 2 and should be larger.
meshopt_buildMeshlets does try to limit the open boundary of each individual meshlets; it doesn't use graph traversal algorithms for that per se, and instead relies on heuristics and scoring driven optimization. I would expect that you can take the output of meshopt_buildMeshlets and build a cluster tree from it; since the output meshlet list is not ordered and doesn't contain meshlet-to-meshlet connectivity, in order to assign weights to graph edges above, custom code would be needed to count shares edges for a given meshlet pair using edge adjacency structures.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
In nanite's paper https://advances.realtimerendering.com/s2021/Karis_Nanite_SIGGRAPH_Advances_2021_final.pdf page 48. It is described that the grouping cluster is a graph partioning problem where they minimize the weight of total edges that cross from one cluster to another.
"Graph partitioning algorithms partition a graph into a specified number of partitions
such that total weight of all the edges that cross from one partition to another, called
the edge cut cost, is minimized.
In our case graph nodes are clusters.
Graph edges connect clusters that have directly connected adjacent triangles.
The graph edge weights are the number of shared triangle edges between those
clusters"
I would like to know if meshopt_buildMeshlets API is taking in consideration the same optmization problem.
Beta Was this translation helpful? Give feedback.
All reactions