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:
authorCampbell Barton <ideasman42@gmail.com>2016-03-07 23:41:13 +0300
committerCampbell Barton <ideasman42@gmail.com>2016-03-07 23:41:13 +0300
commitac48e91b44e15bae81c50b03d838f7eee145f718 (patch)
treef1bafbd8dab5ed7c0cd3d3c965bb1f4a9400096d /io_scene_x3d
parentbb5ff2b9d56af4fc6e52dbf8bdde1daec5717671 (diff)
Correct X3D export logic
- Wasn't breaking out of loop when vertex color was set to false. - No need to use dictionary for vertex colors, use list instead.
Diffstat (limited to 'io_scene_x3d')
-rw-r--r--io_scene_x3d/export_x3d.py29
1 files changed, 17 insertions, 12 deletions
diff --git a/io_scene_x3d/export_x3d.py b/io_scene_x3d/export_x3d.py
index 8129dc3e..4ae33d5f 100644
--- a/io_scene_x3d/export_x3d.py
+++ b/io_scene_x3d/export_x3d.py
@@ -599,17 +599,22 @@ def export(file,
# Check if vertex colors can be exported in per-vertex mode.
# Do we have just one color per vertex in every face that uses the vertex?
if is_col:
- is_col_per_vertex = True
- vert_color = dict()
- for i, face in enumerate(mesh_faces):
- fcol = mesh_faces_col[i]
- face_colors = (fcol.color1, fcol.color2, fcol.color3, fcol.color4)
- for j, vert_index in enumerate(face.vertices):
- if vert_index not in vert_color:
- vert_color[vert_index] = face_colors[j]
- elif vert_color[vert_index] != face_colors[j]:
- is_col_per_vertex = False
- break
+ def calc_vertex_color():
+ vert_color = [None] * len(mesh.vertices)
+
+ for i, face in enumerate(mesh_faces):
+ fcol = mesh_faces_col[i]
+ face_colors = (fcol.color1, fcol.color2, fcol.color3, fcol.color4)
+ for j, vert_index in enumerate(face.vertices):
+ if vert_color[vert_index] is None:
+ vert_color[vert_index] = face_colors[j][:]
+ elif vert_color[vert_index] != face_colors[j][:]:
+ return False, ()
+
+ return True, vert_color
+
+ is_col_per_vertex, vert_color = calc_vertex_color()
+ del calc_vertex_color
for (material_index, image), face_group in face_groups_items: # face_groups.items()
if face_group:
@@ -934,7 +939,7 @@ def export(file,
fw('%s<Color color="' % ident)
if is_col_per_vertex:
for i in range(len(mesh.vertices)):
- fw('%.3f %.3f %.3f ' % (vert_color[i][:] if i in vert_color else (0,0,0)))
+ fw('%.3f %.3f %.3f ' % (vert_color[i] or (0.0, 0.0, 0.0)))
else: # Export as colors per face.
# TODO: average them rather than using the first one!
for i in face_group: