-
Notifications
You must be signed in to change notification settings - Fork 1.2k
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
UsdView renders Mesh with Blendshapes in wrong place when using GPU vs CPU implementation #2425
Comments
Attaching the example from the mailing list: shapes.usd.gz The different behaviour can be observed by comparing against My comments from mailing list:
|
Filed as internal issue #USD-8311 |
Great find, @cameronwhite. Would you be up for contributing a fix for this? Thank you!! |
Yep! I've submitted PR #2696 |
When the mesh only has blendshapes (no skinning), the deformed point positions are already in the prim's local space so it's simplest to just skip applying any additional transforms. The previous behaviour was incorrect because the final skel space -> world space -> model space transform expected the points to be in skel space, which was not the case when only blendshapes were present. Similarly, the bind transform is only required when skinning is enabled. The results are now consistent with the CPU skinning computation. Fixes: PixarAnimationStudios#2425
When the mesh only has blendshapes (no skinning), the deformed point positions are already in the prim's local space so it's simplest to just skip applying any additional transforms. The previous behaviour was incorrect because the final skel space -> world space -> model space transform expected the points to be in skel space, which was not the case when only blendshapes were present. Similarly, the bind transform is only required when skinning is enabled. The results are now consistent with the CPU skinning computation. Fixes: PixarAnimationStudios#2425
Description of Issue
Having a prim Mesh with BlendShapes, but no UsdSkel joints associated with it causes UsdView to render the mesh wrongly at the origin UsdView with CPU vs GPU.
Expected result achieved by running the
UsdSkel.BakeSkinning(usdviewApi.stage.Traverse())
Current default results
As you can see, from the images above, the sphere is rendered at the origin (even though the actual prim location hasn't changed).
The text was updated successfully, but these errors were encountered: