diff options
author | Samuli Raivio <bqqbarbhg> | 2019-10-03 16:12:53 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2019-10-03 16:22:22 +0300 |
commit | 53e661378bae51240e7a4cb59227b99a882095bc (patch) | |
tree | 380ac519d15bb65b5cf8b9d44071cb12eaed22dc /io_scene_fbx/import_fbx.py | |
parent | a28145a5da77af0a142d11d91ba95649bcafc207 (diff) |
Fix T70298: FBX IO: Apply squared crease transform when importing/exporting.
Blender maps crease sharpness from internal [0, 1] to OpenSubdiv's
[0, 10] by squaring the value (see `get_edge_sharpness()`).
Other software seems to treat FBX crease as linear times 10 using OpenSubdiv.
This commits attempts to make FBX exported by Blender consistent with the
results from FBX exported from Maya regarding crease intensity.
Differential Revision: https://developer.blender.org/D5930
Diffstat (limited to 'io_scene_fbx/import_fbx.py')
-rw-r--r-- | io_scene_fbx/import_fbx.py | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/io_scene_fbx/import_fbx.py b/io_scene_fbx/import_fbx.py index 27e46076..9b8fbad1 100644 --- a/io_scene_fbx/import_fbx.py +++ b/io_scene_fbx/import_fbx.py @@ -1117,6 +1117,8 @@ def blen_read_geom_layer_smooth(fbx_obj, mesh): return False def blen_read_geom_layer_edge_crease(fbx_obj, mesh): + from math import sqrt + fbx_layer = elem_find_first(fbx_obj, b'LayerElementEdgeCrease') if fbx_layer is None: @@ -1151,6 +1153,9 @@ def blen_read_geom_layer_edge_crease(fbx_obj, mesh): fbx_layer_data, None, fbx_layer_mapping, fbx_layer_ref, 1, 1, layer_id, + # Blender squares those values before sending them to OpenSubdiv, when other softwares don't, + # so we need to compensate that to get similar results through FBX... + xform=sqrt, ) else: print("warning layer %r mapping type unsupported: %r" % (fbx_layer.id, fbx_layer_mapping)) |