[Bf-extensions-cvs] [bd8e1f3e] master: glTF exporter: use mesh.loop_triangles

Julien Duroure noreply at git.blender.org
Tue Jul 21 20:33:17 CEST 2020


Commit: bd8e1f3e576f2a00b957789715762491c7fe765d
Author: Julien Duroure
Date:   Tue Jul 21 20:24:03 2020 +0200
Branches: master
https://developer.blender.org/rBAbd8e1f3e576f2a00b957789715762491c7fe765d

glTF exporter: use mesh.loop_triangles

Thanks scurest!

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

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

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

diff --git a/io_scene_gltf2/__init__.py b/io_scene_gltf2/__init__.py
index 6404fc20..7e64f181 100755
--- a/io_scene_gltf2/__init__.py
+++ b/io_scene_gltf2/__init__.py
@@ -15,7 +15,7 @@
 bl_info = {
     'name': 'glTF 2.0 format',
     'author': 'Julien Duroure, Norbert Nopper, Urs Hanselmann, Moritz Becher, Benjamin Schmithüsen, Jim Eckerlein, and many external contributors',
-    "version": (1, 3, 35),
+    "version": (1, 3, 36),
     'blender': (2, 90, 0),
     'location': 'File > Import-Export',
     'description': 'Import-Export as glTF 2.0',
diff --git a/io_scene_gltf2/blender/exp/gltf2_blender_extract.py b/io_scene_gltf2/blender/exp/gltf2_blender_extract.py
index 5fe719ee..704a7b4e 100755
--- a/io_scene_gltf2/blender/exp/gltf2_blender_extract.py
+++ b/io_scene_gltf2/blender/exp/gltf2_blender_extract.py
@@ -17,7 +17,6 @@
 #
 
 from mathutils import Vector, Quaternion, Matrix
-from mathutils.geometry import tessellate_polygon
 
 from . import gltf2_blender_export_keys
 from ...io.com.gltf2_io_debug import print_console
@@ -232,7 +231,11 @@ def extract_primitives(glTF, blender_mesh, library, blender_object, blender_vert
 
     prims = {}
 
-    for blender_polygon in blender_mesh.polygons:
+    blender_mesh.calc_loop_triangles()
+
+    for loop_tri in blender_mesh.loop_triangles:
+        blender_polygon = blender_mesh.polygons[loop_tri.polygon_index]
+
         material_idx = -1
         if use_materials:
             material_idx = blender_polygon.material_index
@@ -257,28 +260,7 @@ def extract_primitives(glTF, blender_mesh, library, blender_object, blender_vert
                     face_tangent.normalize()
                     face_bitangent.normalize()
 
-        loop_index_list = []
-
-        if len(blender_polygon.loop_indices) == 3:
-            loop_index_list.extend(blender_polygon.loop_indices)
-        elif len(blender_polygon.loop_indices) > 3:
-            # Triangulation of polygon. Using internal function, as non-convex polygons could exist.
-            polyline = []
-
-            for loop_index in blender_polygon.loop_indices:
-                vertex_index = blender_mesh.loops[loop_index].vertex_index
-                v = blender_mesh.vertices[vertex_index].co
-                polyline.append(Vector((v[0], v[1], v[2])))
-
-            triangles = tessellate_polygon((polyline,))
-
-            for triangle in triangles:
-                for triangle_index in triangle:
-                    loop_index_list.append(blender_polygon.loop_indices[triangle_index])
-        else:
-            continue
-
-        for loop_index in loop_index_list:
+        for loop_index in loop_tri.loops:
             vertex_index = blender_mesh.loops[loop_index].vertex_index
             vertex = blender_mesh.vertices[vertex_index]



More information about the Bf-extensions-cvs mailing list