Replies: 1 comment 1 reply
-
I do have plans to look into estimating self-occlusion for clusters for the culling purposes; the main issue there is that since the calculation needs to be conservative, it's not clear how to do this efficiently. The existing metrics try to optimize for silhouette preservation without knowledge of occlusion data. I'm not sure how much the occlusion data can help -- when clusters aren't perfectly flat there's already a lot of uncertainty in how the silhouette looks like from different profiles - looking directly at the cluster from the direction opposite to cluster normal means the silhouette contribution of the cluster is close to nil (assuming it's an interior cluster), but looking along the plane orthogonal to the normal means the silhouette contribution is maximized. Maybe this is different for clusters that are deep within a concavity which restricts the viewing angles sufficiently, but this probably doesn't need cluster information - just an "importance" weighting of different vertices - and has the same issue (how do you compute this quickly with a reasonable precision?) and may break under deformation... Feel free to share any research that explored something like this and I can take a closer look. |
Beta Was this translation helpful? Give feedback.
-
I read about Meshclusters and Meshoptimizer, and thought that maybe automatically created lods (through simplification by e.g. meshoptimizer) could benefit from abusing the fact that a single cluster is only viewable from a fixed number of angles (due to occlusion from the other side by own mesh), hence we could estimate how well removing a single vertex preserves the silhouette using two metrics:
Then we look at our cluster with a removed vertex from a number of viewing angles (except those that are occluded) and pick median deviation factored separately for first and second heurestics (optimal coefficients could be different for types of meshes, e.g. for human face inner shared edges are very important). Then we find a vertex removing which has the lowest cost, and repeat. Then we recluster with the neighbours until a full cluster is formed (or the other things meshoptimizer already does, e.g. we could write out the new lod vertices and recalculate clusters from scratch).
Beta Was this translation helpful? Give feedback.
All reactions