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:
authorMikhail Rachinskiy <mikhail.rachinskiy@gmail.com>2019-10-15 17:57:32 +0300
committerMikhail Rachinskiy <mikhail.rachinskiy@gmail.com>2019-10-15 17:57:32 +0300
commitc584e86e4d133be61e4775ce1ad662ffd0b2647b (patch)
tree05c17c2791d1f3a6dbc631c1bdd2c182333ca9c4 /io_mesh_ply/export_ply.py
parent11871509f9bc207ee3bfd324c3f160be38f658fe (diff)
PLY: code cleanup
Group related and separate unrelated code, rename classes according to PEP8, remove redundant, outdated or misleading comments, greatly simplify UVs and vertex color variable init code.
Diffstat (limited to 'io_mesh_ply/export_ply.py')
-rw-r--r--io_mesh_ply/export_ply.py51
1 files changed, 16 insertions, 35 deletions
diff --git a/io_mesh_ply/export_ply.py b/io_mesh_ply/export_ply.py
index cd50dbaf..812aeb54 100644
--- a/io_mesh_ply/export_ply.py
+++ b/io_mesh_ply/export_ply.py
@@ -34,44 +34,26 @@ def save_mesh(filepath, mesh, use_normals=True, use_uv_coords=True, use_colors=T
def rvec2d(v):
return round(v[0], 6), round(v[1], 6)
- has_uv = bool(mesh.uv_layers)
- has_vcol = bool(mesh.vertex_colors)
-
- if not has_uv:
+ if use_uv_coords and mesh.uv_layers:
+ active_uv_layer = mesh.uv_layers.active.data
+ else:
use_uv_coords = False
- if not has_vcol:
- use_colors = False
- if not use_uv_coords:
- has_uv = False
- if not use_colors:
- has_vcol = False
-
- if has_uv:
- active_uv_layer = mesh.uv_layers.active
- if not active_uv_layer:
- use_uv_coords = False
- has_uv = False
- else:
- active_uv_layer = active_uv_layer.data
-
- if has_vcol:
- active_col_layer = mesh.vertex_colors.active
- if not active_col_layer:
- use_colors = False
- has_vcol = False
- else:
- active_col_layer = active_col_layer.data
+ if use_colors and mesh.vertex_colors:
+ active_col_layer = mesh.vertex_colors.active.data
+ else:
+ use_colors = False
# in case
color = uvcoord = uvcoord_key = normal = normal_key = None
- mesh_verts = mesh.vertices # save a lookup
- ply_verts = [] # list of dictionaries
+ mesh_verts = mesh.vertices
# vdict = {} # (index, normal, uv) -> new index
vdict = [{} for i in range(len(mesh_verts))]
+ ply_verts = []
ply_faces = [[] for f in range(len(mesh.polygons))]
vert_count = 0
+
for i, f in enumerate(mesh.polygons):
smooth = not use_normals or f.use_smooth
@@ -79,12 +61,12 @@ def save_mesh(filepath, mesh, use_normals=True, use_uv_coords=True, use_colors=T
normal = f.normal[:]
normal_key = rvec3d(normal)
- if has_uv:
+ if use_uv_coords:
uv = [
active_uv_layer[l].uv[:]
for l in range(f.loop_start, f.loop_start + f.loop_total)
]
- if has_vcol:
+ if use_colors:
col = [
active_col_layer[l].color[:]
for l in range(f.loop_start, f.loop_start + f.loop_total)
@@ -98,11 +80,11 @@ def save_mesh(filepath, mesh, use_normals=True, use_uv_coords=True, use_colors=T
normal = v.normal[:]
normal_key = rvec3d(normal)
- if has_uv:
+ if use_uv_coords:
uvcoord = uv[j][0], uv[j][1]
uvcoord_key = rvec2d(uvcoord)
- if has_vcol:
+ if use_colors:
color = col[j]
color = (
int(color[0] * 255.0),
@@ -115,7 +97,7 @@ def save_mesh(filepath, mesh, use_normals=True, use_uv_coords=True, use_colors=T
vdict_local = vdict[vidx]
pf_vidx = vdict_local.get(key) # Will be None initially
- if pf_vidx is None: # same as vdict_local.has_key(key)
+ if pf_vidx is None: # Same as vdict_local.has_key(key)
pf_vidx = vdict_local[key] = vert_count
ply_verts.append((vidx, normal, uvcoord, color))
vert_count += 1
@@ -136,13 +118,11 @@ def save_mesh(filepath, mesh, use_normals=True, use_uv_coords=True, use_colors=T
)
fw(f"element vertex {len(ply_verts)}\n")
-
fw(
"property float x\n"
"property float y\n"
"property float z\n"
)
-
if use_normals:
fw(
"property float nx\n"
@@ -164,6 +144,7 @@ def save_mesh(filepath, mesh, use_normals=True, use_uv_coords=True, use_colors=T
fw(f"element face {len(mesh.polygons)}\n")
fw("property list uchar uint vertex_indices\n")
+
fw("end_header\n")
# Vertex data