From bd8e1f3e576f2a00b957789715762491c7fe765d Mon Sep 17 00:00:00 2001 From: Julien Duroure Date: Tue, 21 Jul 2020 20:24:03 +0200 Subject: glTF exporter: use mesh.loop_triangles Thanks scurest! --- io_scene_gltf2/__init__.py | 2 +- .../blender/exp/gltf2_blender_extract.py | 30 +++++----------------- 2 files changed, 7 insertions(+), 25 deletions(-) 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] -- cgit v1.2.3