[Bf-extensions-cvs] [fdbdc7b7] master: glTF exporter: fix some autosmooth normal export

Julien Duroure noreply at git.blender.org
Wed Apr 10 21:32:54 CEST 2019


Commit: fdbdc7b71242fe2d8aa808dc796092d5eedd10de
Author: Julien Duroure
Date:   Wed Apr 10 21:32:02 2019 +0200
Branches: master
https://developer.blender.org/rBAfdbdc7b71242fe2d8aa808dc796092d5eedd10de

glTF exporter: fix some autosmooth normal export

===================================================================

M	io_scene_gltf2/blender/exp/gltf2_blender_extract.py
M	io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py

===================================================================

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



More information about the Bf-extensions-cvs mailing list