diff options
author | Campbell Barton <ideasman42@gmail.com> | 2011-09-01 13:11:00 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2011-09-01 13:11:00 +0400 |
commit | b62b9f16b89441a23143b44d338608781c2e90d1 (patch) | |
tree | 4f917ac09f16b94719f889c4ed22980fb610d134 /release/scripts/modules/bpy_types.py | |
parent | 1db6d629a04fe56c0ae7248286e2465cade8f07c (diff) |
ability to create polygons and loops from python (low level mesh creation access, not nice api but functional).
updated:
mesh.from_pydata(vert, edge, polys)
... so it can take polygons rather then faces, this is much better suited for scripter access.
Diffstat (limited to 'release/scripts/modules/bpy_types.py')
-rw-r--r-- | release/scripts/modules/bpy_types.py | 25 |
1 files changed, 11 insertions, 14 deletions
diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 101416f4943..e80c913a865 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -330,7 +330,8 @@ class Mesh(bpy_types.ID): """ self.vertices.add(len(vertices)) self.edges.add(len(edges)) - self.faces.add(len(faces)) + self.loops.add(sum((len(f) for f in faces))) + self.polygons.add(len(faces)) vertices_flat = [f for v in vertices for f in v] self.vertices.foreach_set("co", vertices_flat) @@ -340,19 +341,15 @@ class Mesh(bpy_types.ID): self.edges.foreach_set("vertices", edges_flat) del edges_flat - def treat_face(f): - if len(f) == 3: - if f[2] == 0: - return f[2], f[0], f[1], 0 - else: - return f[0], f[1], f[2], 0 - elif f[2] == 0 or f[3] == 0: - return f[2], f[3], f[0], f[1] - return f - - faces_flat = [v for f in faces for v in treat_face(f)] - self.faces.foreach_set("vertices_raw", faces_flat) - del faces_flat + # this is different in bmesh + loop_index = 0 + for i, p in enumerate(self.polygons): + f = faces[i] + loop_len = len(f) + p.loop_start = loop_index + p.loop_total = loop_len + p.vertices = f + loop_index += loop_len @property def edge_keys(self): |