Unexpected exported blend shape normals
- Dominant language
- Wolfram Language
- Stars
- 905
- Forks
- 223
- Avg merge
- 2d 9h
- Merged PRs (30d)
- 17
Description
**Describe the bug**
The blend shape exported normals by Maya from a FBX to USD don't match the original ones from the FBX.
**Steps to reproduce**
Steps to reproduce the behavior:
1. Download the test mesh
2. Convert from FBX to USD, including animations and blend shapes
3. Inspect the converted USD using the official Pixar USDView
4. Comparing the normal values that result from the USD blend shapes are different from the ones from the FBX
**Expected behavior**
The blend shape normal values should be the delta from the FBX blend shape normal value and the mesh normal value.
**Attachments**
The FBX test mesh, and some screenshots to show you some relevant values
**Specs (if applicable):**
- OS & version: Windows 10
- Maya version: Maya 2025.3
**Additional context**
(I am a software developer, so I can answer more technical questions) This might not seem an issue at first, since the exported USD, if re-imported in Maya, appears correct, but for other applications, it might be broken. Any values that I will reference from now are going to be from the test mesh, which is a flag that has baked a wind animation into blend shape frames that are played back.
Each blend shape frame has blend shape normals. All values will reference blend shape frame_0001, vertex 1 as an example vertex to showcase the issue. The normal value of inside the blend shape is (0.04602525755763053894, -0.99569070339202880859, -0.080509059131145477295), as reported through the FBX SDK, and also the Python command `MItMeshVertex` will return that value inside Maya when the FBX is loaded. The original mesh vertex normal is (0, -1, 0), so the expected delta that it should be present in the USD export should be (-0.0460253, 0.0043093, -0.0805091), but instead, the delta is (-0.016952, 0.003106, 0.0769106). You can check the images to better see what I am talking about. One important note: for the image where it says "Maya exported blend shape normal", it shows the index 0, but that is actually vertex 1, since vertex 0 has no position delta, and Maya ignores it. The application that is used to view the blend shape normal delta value is USDView, from Pixar.
It is clear that Maya performs some sort of processing, or remapping, since the value does not match the original FBX blend shape value. This is not a problem for Maya, since it can de-construct that mapping/processing and it can recover the original values, but a 3rd party application cannot do that. This is the case for my application, which can load USD meshes including blend shapes with normals. The image where it says "Expected blend shape normal" is a screenshot in USD view of my application's FBX -> USD conversion. The question is why doesn't Maya export as blend shape values as the delta between the blend shape delta that the FBX SDK reports and the original mesh normal? This results in applications like mine in having incorrect imports.
I know there is the discrepancy between mapping the normals from the FBX files which are specified per index (or wedge) and the USD specification, where they are specified per vertex, but for the example vertex, that shouldn't come into play as vertex 1 is referenced by a single index/wedge.
[Temp.zip](https://github.com/user-attachments/files/21972494/Temp.zip)
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.