diff options
author | Julien Duroure <julien.duroure@gmail.com> | 2019-04-10 22:32:02 +0300 |
---|---|---|
committer | Julien Duroure <julien.duroure@gmail.com> | 2019-04-10 22:32:02 +0300 |
commit | fdbdc7b71242fe2d8aa808dc796092d5eedd10de (patch) | |
tree | 210e682f4e684ed7896552e63395c310e37cfe20 | |
parent | d23a0d52b1c34429d108cdc54ad33b8a378cdb45 (diff) |
glTF exporter: fix some autosmooth normal export
-rwxr-xr-x | io_scene_gltf2/blender/exp/gltf2_blender_extract.py | 5 | ||||
-rwxr-xr-x | io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py | 7 |
2 files changed, 9 insertions, 3 deletions
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_extract.py b/io_scene_gltf2/blender/exp/gltf2_blender_extract.py index 84238305..d0347c97 100755 --- a/io_scene_gltf2/blender/exp/gltf2_blender_extract.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_extract.py @@ -597,7 +597,10 @@ def extract_primitives(glTF, blender_mesh, blender_vertex_groups, modifiers, exp v = convert_swizzle_location(vertex.co, export_settings) if blender_polygon.use_smooth: - n = convert_swizzle_location(vertex.normal, export_settings) + if blender_mesh.has_custom_normals: + n = convert_swizzle_location(blender_mesh.loops[loop_index].normal, export_settings) + else: + n = convert_swizzle_location(vertex.normal, export_settings) if use_tangents: t = convert_swizzle_tangent(blender_mesh.loops[loop_index].tangent, export_settings) b = convert_swizzle_location(blender_mesh.loops[loop_index].bitangent, export_settings) diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py b/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py index d8169f7f..d3dea8b9 100755 --- a/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py +++ b/io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py @@ -210,11 +210,13 @@ def __gather_mesh(blender_object, export_settings): if export_settings[gltf2_blender_export_keys.APPLY]: auto_smooth = blender_object.data.use_auto_smooth + edge_split = None if auto_smooth: - blender_object = blender_object.copy() edge_split = blender_object.modifiers.new('Temporary_Auto_Smooth', 'EDGE_SPLIT') edge_split.split_angle = blender_object.data.auto_smooth_angle edge_split.use_edge_angle = not blender_object.data.has_custom_normals + blender_object.data.use_auto_smooth = False + bpy.context.scene.update() armature_modifiers = {} if export_settings[gltf2_blender_export_keys.SKINS]: @@ -233,7 +235,8 @@ def __gather_mesh(blender_object, export_settings): blender_object.modifiers[idx].show_viewport = show_viewport if auto_smooth: - bpy.data.objects.remove(blender_object) + blender_object.data.use_auto_smooth = True + blender_object.modifiers.remove(edge_split) else: blender_mesh = blender_object.data skip_filter = False |