[Bf-extensions-cvs] [c850bf4f] blender2.8: glTF importer: Fix custom normals import
Julien Duroure
noreply at git.blender.org
Wed Dec 5 22:11:09 CET 2018
Commit: c850bf4fc1e167cecff3ca5711f7ef45241747f5
Author: Julien Duroure
Date: Wed Dec 5 22:09:48 2018 +0100
Branches: blender2.8
https://developer.blender.org/rBAc850bf4fc1e167cecff3ca5711f7ef45241747f5
glTF importer: Fix custom normals import
===================================================================
M io_scene_gltf2/blender/imp/gltf2_blender_mesh.py
M io_scene_gltf2/blender/imp/gltf2_blender_primitive.py
===================================================================
diff --git a/io_scene_gltf2/blender/imp/gltf2_blender_mesh.py b/io_scene_gltf2/blender/imp/gltf2_blender_mesh.py
index aafb9498..f0d0af2a 100755
--- a/io_scene_gltf2/blender/imp/gltf2_blender_mesh.py
+++ b/io_scene_gltf2/blender/imp/gltf2_blender_mesh.py
@@ -55,8 +55,13 @@ class BlenderMesh():
"""Set all data after mesh creation."""
# Normals
offset = 0
+ custom_normals = [[0.0, 0.0, 0.0]] * len(mesh.vertices)
+
+ if gltf.import_settings['import_shading'] == "NORMALS":
+ mesh.create_normals_split()
+
for prim in pymesh.primitives:
- offset = BlenderPrimitive.set_normals(gltf, prim, mesh, offset)
+ offset = BlenderPrimitive.set_normals(gltf, prim, mesh, offset, custom_normals)
mesh.update()
@@ -67,6 +72,11 @@ class BlenderMesh():
mesh.update()
+ # Normals, now that every update is done
+ if gltf.import_settings['import_shading'] == "NORMALS":
+ mesh.normals_split_custom_set_from_vertices(custom_normals)
+ mesh.use_auto_smooth = True
+
# Object and UV are now created, we can set UVMap into material
for prim in pymesh.primitives:
BlenderPrimitive.set_UV_in_mat(gltf, prim, obj)
diff --git a/io_scene_gltf2/blender/imp/gltf2_blender_primitive.py b/io_scene_gltf2/blender/imp/gltf2_blender_primitive.py
index bc12f437..52987383 100755
--- a/io_scene_gltf2/blender/imp/gltf2_blender_primitive.py
+++ b/io_scene_gltf2/blender/imp/gltf2_blender_primitive.py
@@ -67,7 +67,7 @@ class BlenderPrimitive():
return verts, edges, faces
- def set_normals(gltf, pyprimitive, mesh, offset):
+ def set_normals(gltf, pyprimitive, mesh, offset, custom_normals):
"""Set Normal."""
if 'NORMAL' in pyprimitive.attributes.keys():
normal_data = BinaryData.get_data_from_accessor(gltf, pyprimitive.attributes['NORMAL'])
@@ -79,6 +79,7 @@ class BlenderPrimitive():
if vert_idx in range(offset, offset + pyprimitive.vertices_length):
cpt_vert = vert_idx - offset
mesh.vertices[vert_idx].normal = normal_data[cpt_vert]
+ custom_normals[vert_idx] = list(normal_data[cpt_vert])
calc_norm_vertices.append(vert_idx)
if len(calc_norm_vertices) == 3:
More information about the Bf-extensions-cvs
mailing list