Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

simplify: Use error returned by vertex quadrics to guide pruning #787

Merged
merged 1 commit into from
Oct 9, 2024

Conversation

zeux
Copy link
Owner

@zeux zeux commented Oct 9, 2024

When attributes are incorporated into the metric, depending on the attribute weights we may see divergence between the error as returned by vertex quadrics alone and the result. Especially when the simplification does not have a set limit, this may lead to unexpectedly aggressive component pruning.

While ideally pruning should only be used with a reasonable error limit that negates these concerns, for now it is probably better to accomodate this use case by tracking the positional error separately.

To reduce the cost of tracking this error we recompute it as collapses are performed; this may seem counter-intuitive since we've already computed it during ranking, but conserving memory is more important here, and since we only need to do it when using attributes and only for collapses we end up taking, the performance cost ends up being negligible.

Cleanup passes that prune components update the error for consistency, even though we will not use it at this point; this can help if we decide to log the error during tracing or return it to caller.

This contribution is sponsored by Valve.

When attributes are incorporated into the metric, depending on the
attribute weights we may see divergence between the error as returned by
vertex quadrics alone and the result. Especially when the simplification
does not have a set limit, this may lead to unexpectedly aggressive
component pruning.

While ideally pruning should only be used with a reasonable error limit
that negates these concerns, for now it is probably better to accomodate
this use case by tracking the positional error separately.

To reduce the cost of tracking this error we recompute it as collapses
are performed; this may seem counter-intuitive since we've already
computed it during ranking, but conserving memory is more important
here, and since we only need to do it when using attributes and only for
collapses we end up taking, the performance cost ends up being
negligible.
@zeux zeux merged commit afeea3d into master Oct 9, 2024
12 checks passed
@zeux zeux deleted the simp-prunederr branch October 9, 2024 15:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant