diff options
author | Campbell Barton <ideasman42@gmail.com> | 2010-08-27 02:44:05 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2010-08-27 02:44:05 +0400 |
commit | 50bce31dbbf727cef0746a16bb5a669c30b21628 (patch) | |
tree | d08f303ee0af24cab2f3dddd304283a7234304c3 /release | |
parent | 9089b68073ab474c664078dcfeb1fb49ef6e3caf (diff) |
rna api changes
- mesh.add_geometry(v, e, f) --> mesh.vertices.add(tot), mesh.edges.add(tot), mesh.faces.add(tot)
- mesh.add_material(mat) --> mesh.materials.link(mat)
changed material.link so it always adds a material even if it exists in the list, this behavior is good for users but not scripts since it can mess up indicies (some formats may have the same material set twice).
Diffstat (limited to 'release')
-rw-r--r-- | release/scripts/io/import_scene_3ds.py | 10 | ||||
-rw-r--r-- | release/scripts/io/import_scene_obj.py | 7 | ||||
-rw-r--r-- | release/scripts/modules/bpy_types.py | 11 | ||||
-rw-r--r-- | release/scripts/op/add_mesh_torus.py | 4 | ||||
-rw-r--r-- | release/scripts/op/object.py | 6 |
5 files changed, 25 insertions, 13 deletions
diff --git a/release/scripts/io/import_scene_3ds.py b/release/scripts/io/import_scene_3ds.py index 95da2637ed5..d34b5ad0723 100644 --- a/release/scripts/io/import_scene_3ds.py +++ b/release/scripts/io/import_scene_3ds.py @@ -334,7 +334,8 @@ def process_next_chunk(file, previous_chunk, importedObjects, IMAGE_SEARCH): bmesh = bpy.data.meshes.new(contextObName) if myContextMesh_vertls: - bmesh.add_geometry(len(myContextMesh_vertls)//3, 0, len(myContextMesh_facels)) + bmesh.vertices.add(len(myContextMesh_vertls)//3) + bmesh.faces.add(len(myContextMesh_facels)) bmesh.vertices.foreach_set("co", myContextMesh_vertls) eekadoodle_faces = [] @@ -350,12 +351,13 @@ def process_next_chunk(file, previous_chunk, importedObjects, IMAGE_SEARCH): for mat_idx, (matName, faces) in enumerate(myContextMeshMaterials.items()): if matName is None: - bmesh.add_material(None) + bmat = None else: bmat = MATDICT[matName][1] - bmesh.add_material(bmat) # can be None img = TEXTURE_DICT.get(bmat.name) - + + bmesh.materials.link(bmat) # can be None + if uv_faces and img: for fidx in faces: bmesh.faces[fidx].material_index = mat_idx diff --git a/release/scripts/io/import_scene_obj.py b/release/scripts/io/import_scene_obj.py index 17ac4c5dee6..e31d6c583ad 100644 --- a/release/scripts/io/import_scene_obj.py +++ b/release/scripts/io/import_scene_obj.py @@ -673,10 +673,11 @@ def create_mesh(new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_loc, v # make sure the list isnt too big for material in materials: - me.add_material(material) + me.materials.link(material) #me.vertices.extend([(0,0,0)]) # dummy vert - me.add_geometry(len(verts_loc), 0, len(faces)) + me.vertices.add(len(verts_loc)) + me.faces.add(len(faces)) # verts_loc is a list of (x, y, z) tuples me.vertices.foreach_set("co", unpack_list(verts_loc)) @@ -768,7 +769,7 @@ def create_mesh(new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_loc, v if CREATE_EDGES: - me.add_geometry(0, len(edges), 0) + me.edges.add(len(edges)) # edges should be a list of (a, b) tuples me.edges.foreach_set("vertices", unpack_list(edges)) diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py index 5030e9f4868..84d05a7a48d 100644 --- a/release/scripts/modules/bpy_types.py +++ b/release/scripts/modules/bpy_types.py @@ -306,7 +306,9 @@ class Mesh(bpy_types.ID): Make a mesh from a list of verts/edges/faces Until we have a nicer way to make geometry, use this. """ - self.add_geometry(len(verts), len(edges), len(faces)) + self.vertices.add(len(verts)) + self.edges.add(len(edges)) + self.faces.add(len(faces)) verts_flat = [f for v in verts for f in v] self.vertices.foreach_set("co", verts_flat) @@ -318,8 +320,11 @@ class Mesh(bpy_types.ID): def treat_face(f): if len(f) == 3: - return f[0], f[1], f[2], 0 - elif f[3] == 0: + 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[3], f[0], f[1], f[2] return f diff --git a/release/scripts/op/add_mesh_torus.py b/release/scripts/op/add_mesh_torus.py index e19f2b4e18c..217aa8fae83 100644 --- a/release/scripts/op/add_mesh_torus.py +++ b/release/scripts/op/add_mesh_torus.py @@ -121,7 +121,9 @@ class AddTorus(bpy.types.Operator): mesh = bpy.data.meshes.new("Torus") - mesh.add_geometry(int(len(verts_loc) / 3), 0, int(len(faces) / 4)) + mesh.vertices.add(len(verts_loc) // 3) + mesh.faces.add(len(faces) // 4) + mesh.vertices.foreach_set("co", verts_loc) mesh.faces.foreach_set("vertices_raw", faces) mesh.update() diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py index 28f3b226c21..cb97fb736b9 100644 --- a/release/scripts/op/object.py +++ b/release/scripts/op/object.py @@ -499,11 +499,13 @@ class MakeDupliFace(bpy.types.Operator): for data, objects in linked.items(): face_verts = [axis for obj in objects for v in matrix_to_quat(obj.matrix_world) for axis in v] - faces = list(range(int(len(face_verts) / 3))) + faces = list(range(len(face_verts) // 3)) mesh = bpy.data.meshes.new(data.name + "_dupli") - mesh.add_geometry(int(len(face_verts) / 3), 0, int(len(face_verts) / (4 * 3))) + mesh.vertices.add(len(face_verts) // 3) + mesh.faces.add(len(face_verts) // 12) + mesh.vertices.foreach_set("co", face_verts) mesh.faces.foreach_set("vertices_raw", faces) mesh.update() # generates edge data |