FBX: importing file with shape key that's less than 0 or greater than one #104706

Closed
opened 2023-06-20 05:43:40 +02:00 by Pratik Borhade · 4 comments
Member

System Information
Operating system: windows 11
Graphics card: 3090 founders edition

Blender Version
Broken: I tried this on 3.5.1, 3.3.7 and 3.0.1. They all act the same.
Worked: not sure

Short description of error
If you import a .fbx file with a shape key that's less than 0, then the shape key value is set to 0. If the value is greater than one, then the incoming shape key is 1.

Exact steps for others to reproduce the error
Open the attached .blend file and look at it, it's a cube with a shape key on it. Export it as a .fbx, then import it into a new scene. You'll see that the newly imported .fbx doesn't look like the .blend file. Inspect the shape key min and max in the .blend file, vs the newly imported .fbx, and you'll see that the min value of the .fbx is clamped to 0, even though that's not the case in the .blend file.

Suggested solution in code
I tested this and it works. In this file: bin\Debug\4.0\scripts\addons\io_scene_fbx\import_fbx.py

I put this code right before kb.value = weight

        if weight > 1:
            kb.slider_max = 2 * weight

        if weight < 0:
            kb.slider_min = 2 * weight

I don't know enough about fbx files to know if you can read the min and max of a shape key out of it or not. The solution above is how (I percieve) maya handles this issue.

Thanks!

Originally reported at: blender/blender#109124

**System Information** Operating system: windows 11 Graphics card: 3090 founders edition **Blender Version** Broken: I tried this on 3.5.1, 3.3.7 and 3.0.1. They all act the same. Worked: not sure **Short description of error** If you import a .fbx file with a shape key that's less than 0, then the shape key value is set to 0. If the value is greater than one, then the incoming shape key is 1. **Exact steps for others to reproduce the error** Open the attached .blend file and look at it, it's a cube with a shape key on it. Export it as a .fbx, then import it into a new scene. You'll see that the newly imported .fbx doesn't look like the .blend file. Inspect the shape key min and max in the .blend file, vs the newly imported .fbx, and you'll see that the min value of the .fbx is clamped to 0, even though that's not the case in the .blend file. **Suggested solution in code** I tested this and it works. In this file: bin\Debug\4.0\scripts\addons\io_scene_fbx\import_fbx.py I put this code right before `kb.value = weight` ```Py if weight > 1: kb.slider_max = 2 * weight if weight < 0: kb.slider_min = 2 * weight ``` I don't know enough about fbx files to know if you can read the min and max of a shape key out of it or not. The solution above is how (I percieve) maya handles this issue. Thanks! Originally reported at: https://projects.blender.org/blender/blender/issues/109124
Pratik Borhade added the
Type
Report
Priority
Normal
Status
Confirmed
labels 2023-06-20 05:44:03 +02:00
Author
Member

Maybe @Mysteryem is interested? :)

Maybe @Mysteryem is interested? :)

I've never contributed to blender before, but we need this fix for our product to work in blender. Is there any way I can help make this happen more quickly? Another question is, how long does it normally take for something like this to end up in an official release of blender?

I've never contributed to blender before, but we need this fix for our product to work in blender. Is there any way I can help make this happen more quickly? Another question is, how long does it normally take for something like this to end up in an official release of blender?
Member

Doing an initial check of the imported value should be fairly simple, and I can probably add a warning to print to the console if the imported weight lies outside of Blender's hard [-10, 10] range for the values too.

A more complete support would probably mean also looking through all the animated values of the shape key to determine the maximum and minimum values that it is animated to, which will be more difficult.

Doing an initial check of the imported value should be fairly simple, and I can probably add a warning to print to the console if the imported weight lies outside of Blender's hard [-10, 10] range for the values too. A more complete support would probably mean also looking through all the animated values of the shape key to determine the maximum and minimum values that it is animated to, which will be more difficult.

Ah yes, your suggestion for the more complete approach is much better than what I originally suggested. Though, if we had to pick between getting a simpler solution sooner vs getting a better solution later, we'd prefer the simpler solution first.

Ah yes, your suggestion for the more complete approach is much better than what I originally suggested. Though, if we had to pick between getting a simpler solution sooner vs getting a better solution later, we'd prefer the simpler solution first.
Blender Bot added
Status
Resolved
and removed
Status
Confirmed
labels 2023-07-24 15:20:09 +02:00
Sign in to join this conversation.
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender-addons#104706
No description provided.