diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-05-16 16:01:17 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2019-05-16 17:43:14 +0300 |
commit | 901868a4b2fc6e70d9c74119d97c57de132859a3 (patch) | |
tree | 94f96b6fd5f8a1ec509c6551f504cad958c1688f /mesh_tissue | |
parent | 2e5b7a4a044ab982af66def583ae16bb563a1357 (diff) |
Update for Depsgraph API changes
Addresses new behavior of object.to_mesh().
This is corresponding part for D4875.
Reviewers: brecht
Reviewed By: brecht
Differential Revision: https://developer.blender.org/D4876
Diffstat (limited to 'mesh_tissue')
-rw-r--r-- | mesh_tissue/lattice.py | 5 | ||||
-rw-r--r-- | mesh_tissue/tessellate_numpy.py | 43 | ||||
-rw-r--r-- | mesh_tissue/uv_to_mesh.py | 4 |
3 files changed, 43 insertions, 9 deletions
diff --git a/mesh_tissue/lattice.py b/mesh_tissue/lattice.py index eb1269a3..2850c77a 100644 --- a/mesh_tissue/lattice.py +++ b/mesh_tissue/lattice.py @@ -319,9 +319,10 @@ class lattice_along_surface(Operator): obj = o o.select_set(False) break + obj_eval = obj.evaluated_get(depsgraph) try: obj_dim = obj.dimensions - obj_me = obj.evaluated_get(depsgraph).to_mesh() + obj_me = obj_eval.to_mesh() except: self.report({'ERROR'}, "The object to deform is not valid. Only " "Mesh, Curve, Surface and Font objects are allowed.") @@ -360,6 +361,8 @@ class lattice_along_surface(Operator): max[2] = vert[2] first = False + obj_eval.to_mesh_clear() + bb = max - min lattice_loc = (max + min) / 2 bpy.ops.object.add(type='LATTICE', align='WORLD', diff --git a/mesh_tissue/tessellate_numpy.py b/mesh_tissue/tessellate_numpy.py index 07c4fc87..02464be7 100644 --- a/mesh_tissue/tessellate_numpy.py +++ b/mesh_tissue/tessellate_numpy.py @@ -77,8 +77,10 @@ def tassellate(ob0, ob1, offset, zscale, gen_modifiers, com_modifiers, mode, else: depsgraph = None + me0_owner = None if gen_modifiers: # Apply generator modifiers - me0 = ob0.evaluated_get(depsgraph).to_mesh() + me0_owner = ob0.evaluated_get(depsgraph) + me0 = me0_owner.to_mesh() else: me0 = ob0.data ob0.data = me0 @@ -95,8 +97,9 @@ def tassellate(ob0, ob1, offset, zscale, gen_modifiers, com_modifiers, mode, return 0 # Apply component modifiers + me1_owner = ob1.evaluated_get(depsgraph) if com_modifiers: - me1 = ob1.evaluated_get(depsgraph).to_mesh() + me1 = me1_owner.to_mesh() else: me1 = ob1.data @@ -410,6 +413,13 @@ def tassellate(ob0, ob1, offset, zscale, gen_modifiers, com_modifiers, mode, new_vertex_group_np[i], "ADD") ob0.data = old_me0 + + if me0_owner: + me0_owner.to_mesh_clear() + + if me1_owner: + me1_owner.to_mesh_clear() + return new_ob @@ -675,9 +685,12 @@ class tessellate(Operator): depsgraph = None try: polygons = 0 + me_temp_owner = None if self.gen_modifiers: - me_temp = ob0.evaluated_get(depsgraph).to_mesh() + me_temp_owner = ob0.evaluated_get(depsgraph) + me_temp = me_temp_owner.to_mesh() else: + me_temp_owner = None me_temp = ob0.data for p in me_temp.polygons: @@ -687,11 +700,18 @@ class tessellate(Operator): else: polygons += 1 + if me_temp_owner: + me_temp_owner.to_mesh_clear() + if self.com_modifiers: - me_temp = bpy.data.objects[self.component].evaluated_get(depsgraph).to_mesh() + me_temp_owner = bpy.data.objects[self.component].evaluated_get(depsgraph) + me_temp = me_temp_owner.to_mesh() else: + me_temp_owner = None me_temp = bpy.data.objects[self.component].data polygons *= len(me_temp.polygons) + if me_temp_owner: + me_temp_owner.to_mesh_clear() str_polygons = '{:0,.0f}'.format(polygons) if polygons > 200000: @@ -1239,9 +1259,12 @@ class settings_tessellate(Operator): # Count number of faces try: polygons = 0 + me_temp_owner = None if self.gen_modifiers: - me_temp = bpy.data.objects[self.generator].evaluated_get(depsgraph).to_mesh() + me_temp_owner = bpy.data.objects[self.generator].evaluated_get(depsgraph) + me_temp = me_temp_owner.to_mesh() else: + me_temp_owner = None me_temp = bpy.data.objects[self.generator].data for p in me_temp.polygons: @@ -1251,12 +1274,20 @@ class settings_tessellate(Operator): else: polygons += 1 + if me_temp_owner: + me_temp_owner.to_mesh_clear() + if self.com_modifiers: - me_temp = bpy.data.objects[self.component].evaluated_get(depsgraph).to_mesh() + me_temp_owner = bpy.data.objects[self.component].evaluated_get(depsgraph) + me_temp = me_temp_owner.to_mesh() else: + me_temp_owner = None me_temp = bpy.data.objects[self.component].data polygons *= len(me_temp.polygons) + if me_temp_owner: + me_temp_owner.to_mesh_clear() + str_polygons = '{:0,.0f}'.format(polygons) if polygons > 200000: col.label(text=str_polygons + " polygons will be created!", diff --git a/mesh_tissue/uv_to_mesh.py b/mesh_tissue/uv_to_mesh.py index 8a69b4d3..bccee0ba 100644 --- a/mesh_tissue/uv_to_mesh.py +++ b/mesh_tissue/uv_to_mesh.py @@ -87,9 +87,9 @@ class uv_to_mesh(Operator): if self.apply_modifiers: depsgraph = context.evaluated_depsgraph_get() - me0 = ob0.evaluated_get(depsgraph).to_mesh() + me0 = bpy.data.meshes.new_from_object(ob0.evaluated_get(depsgraph)) else: - me0 = ob0.to_mesh() + me0 = bpy.data.new_from_meshed(ob0) area = 0 verts = [] |