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

Measure the error in screen space instead of world/object space #364

Open
nfrechette opened this issue May 14, 2021 · 0 comments
Open

Measure the error in screen space instead of world/object space #364

nfrechette opened this issue May 14, 2021 · 0 comments

Comments

@nfrechette
Copy link
Owner

Currently, the compression error is measured in object space, see here. This is great and it helps approximate the skinning process.

However, it fails to take into account that ultimately, visual vertices are skinned and projected in screen space. This is where the animation accuracy is ultimately visible.

What if instead of measuring the error in object space, we measured it in screen space. Instead of a 3D error threshold, a 2D pixel error threshold would be used for pixel perfect accuracy. Joints would still specify the shell radius but it would be transformed into screen space before measuring the error.

To do this, we could specify the camera information in the compression settings: FOV, screen resolution, etc.

This would allow 3rd person games where the camera never gets close to the animated characters to use fewer bits as less accuracy is needed. Similarly, mobile games with a lower resolution could use fewer bits.

This could also be extended to cinematics where a new track could be provided during compression with the camera information at every key frame. When it zooms in on a character, it would retain more accuracy while other characters further away wouldn't need as much to maintain the same visual quality.

We could also take into account motion blur. Leverage the velocity and its direction to further reduce accuracy where it isn't visible to the naked eye.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant