glTF exporter: fix some autosmooth normal export

This commit is contained in:
Julien Duroure 2019-04-10 21:32:02 +02:00
parent d23a0d52b1
commit fdbdc7b712
2 changed files with 9 additions and 3 deletions

View File

@ -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)

View File

@ -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