Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Duroure <julien.duroure@gmail.com>2020-07-21 21:24:03 +0300
committerJulien Duroure <julien.duroure@gmail.com>2020-07-21 21:24:03 +0300
commitbd8e1f3e576f2a00b957789715762491c7fe765d (patch)
treed4e639efbd2fd3991b981ed53ad2f8c8724b4583
parentbb4dc6f1daab2cc19c79e981222387069fb97ec4 (diff)
glTF exporter: use mesh.loop_triangles
Thanks scurest!
-rwxr-xr-xio_scene_gltf2/__init__.py2
-rwxr-xr-xio_scene_gltf2/blender/exp/gltf2_blender_extract.py30
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]