[Bf-extensions-cvs] [901868a4] master: Update for Depsgraph API changes
Sergey Sharybin
noreply at git.blender.org
Thu May 16 16:49:17 CEST 2019
Commit: 901868a4b2fc6e70d9c74119d97c57de132859a3
Author: Sergey Sharybin
Date: Thu May 16 15:01:17 2019 +0200
Branches: master
https://developer.blender.org/rBA901868a4b2fc6e70d9c74119d97c57de132859a3
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
===================================================================
M add_curve_ivygen.py
M animation_add_corrective_shape_key.py
M blenderkit/asset_inspector.py
M blenderkit/ui.py
M blenderkit/utils.py
M io_export_dxf/primitive_exporters/mesh_exporter.py
M io_export_pc2.py
M io_export_unreal_psk_psa.py
M io_mesh_ply/export_ply.py
M io_mesh_raw/export_raw.py
M io_mesh_stl/blender_utils.py
M io_scene_3ds/export_3ds.py
M io_scene_fbx/export_fbx_bin.py
M io_scene_gltf2/blender/exp/gltf2_blender_gather_nodes.py
M io_scene_ms3d/ms3d_export.py
M io_scene_obj/export_obj.py
M io_scene_vrml2/export_vrml2.py
M io_scene_x/export_x.py
M io_scene_x3d/export_x3d.py
M io_shape_mdd/export_mdd.py
M mesh_looptools.py
M mesh_tissue/lattice.py
M mesh_tissue/tessellate_numpy.py
M mesh_tissue/uv_to_mesh.py
M object_fracture_cell/fracture_cell_setup.py
M object_print3d_utils/mesh_helpers.py
M object_scatter/operator.py
M oscurart_tools/mesh/shapes_to_objects.py
M render_povray/render.py
===================================================================
diff --git a/add_curve_ivygen.py b/add_curve_ivygen.py
index 60f6ec59..7c683846 100644
--- a/add_curve_ivygen.py
+++ b/add_curve_ivygen.py
@@ -439,12 +439,13 @@ def bvhtree_from_object(ob):
bm = bmesh.new()
depsgraph = context.evaluated_depsgraph_get()
- mesh = ob.evaluated_get(depsgraph).to_mesh()
+ ob_eval = ob.evaluated_get(depsgraph)
+ mesh = ob_eval.to_mesh()
bm.from_mesh(mesh)
bm.transform(ob.matrix_world)
bvhtree = BVHTree.FromBMesh(bm)
- bpy.data.meshes.remove(mesh)
+ ob_eval.to_mesh_clear()
return bvhtree
def check_mesh_faces(ob):
diff --git a/animation_add_corrective_shape_key.py b/animation_add_corrective_shape_key.py
index e40a7919..91d57396 100644
--- a/animation_add_corrective_shape_key.py
+++ b/animation_add_corrective_shape_key.py
@@ -71,7 +71,8 @@ def extract_mapped_coords(ob, shape_verts):
totvert = len(shape_verts)
depsgraph = context.evaluated_depsgraph_get()
- mesh = ob.evaluated_get(depsgraph).to_mesh()
+ ob_eval = ob.evaluated_get(depsgraph)
+ mesh = ob_eval.to_mesh()
# cheating, the original mapped verts happen
# to be at the end of the vertex array
@@ -79,7 +80,7 @@ def extract_mapped_coords(ob, shape_verts):
arr = [verts[i].co.copy() for i in range(len(verts) - totvert, len(verts))]
mesh.user_clear()
- bpy.data.meshes.remove(mesh)
+ ob_eval.to_mesh_clear()
return arr
@@ -203,7 +204,7 @@ class add_corrective_pose_shape(bpy.types.Operator):
def func_object_duplicate_flatten_modifiers(context, obj):
depsgraph = context.evaluated_depsgraph_get()
- mesh = obj.evaluated_get(depsgraph).to_mesh()
+ mesh = bpy.data.meshes.new_from_object(obj.evaluated_get(depsgraph))
name = obj.name + "_clean"
new_object = bpy.data.objects.new(name, mesh)
new_object.data = mesh
diff --git a/blenderkit/asset_inspector.py b/blenderkit/asset_inspector.py
index 93a39d59..58867d6e 100644
--- a/blenderkit/asset_inspector.py
+++ b/blenderkit/asset_inspector.py
@@ -204,9 +204,11 @@ def check_meshprops(props, obs):
for ob in obs:
if ob.type == 'MESH' or ob.type == 'CURVE':
+ ob_eval = None
if ob.type == 'CURVE':
depsgraph = bpy.context.evaluated_depsgraph_get()
- mesh = ob.evaluated_get(depsgraph).to_mesh()
+ ob_eval = ob.evaluated_get(depsgraph)
+ mesh = ob_eval.to_mesh()
else:
mesh = ob.data
fco = len(mesh.polygons)
@@ -244,6 +246,9 @@ def check_meshprops(props, obs):
fcor *= m.ratio
fcr += fcor
+ if ob_eval:
+ ob_eval.to_mesh_clear()
+
# write out props
props.face_count = fc
props.face_count_render = fcr
diff --git a/blenderkit/ui.py b/blenderkit/ui.py
index fd475af9..b0ac9209 100644
--- a/blenderkit/ui.py
+++ b/blenderkit/ui.py
@@ -1242,8 +1242,10 @@ class AssetBarOperator(bpy.types.Operator):
target_object = object.name
# create final mesh to extract correct material slot
depsgraph = bpy.context.evaluated_depsgraph_get()
- temp_mesh = object.evaluated_get(depsgraph).to_mesh()
+ object_eval = object.evaluated_get(depsgraph)
+ temp_mesh = object_eval.to_mesh()
target_slot = temp_mesh.polygons[face_index].material_index
+ object_eval.to_mesh_clear()
else:
self.report({'WARNING'}, "Invalid or library object as input:")
target_object = ''
diff --git a/blenderkit/utils.py b/blenderkit/utils.py
index c6e97fa9..fd6c7d83 100644
--- a/blenderkit/utils.py
+++ b/blenderkit/utils.py
@@ -301,7 +301,8 @@ def get_bounds_snappable(obs, use_modifiers=False):
# If to_mesh() works we can use it on curves and any other ob type almost.
# disabled to_mesh for 2.8 by now, not wanting to use dependency graph yet.
depsgraph = bpy.context.evaluated_depsgraph_get()
- mesh = ob.evaluated_get(depsgraph).to_mesh()
+ object_eval = ob.evaluated_get(depsgraph)
+ mesh = object_eval.to_mesh()
# if self.applyModifiers:
# evaluated_get(depsgraph).to_mesh()
@@ -318,7 +319,8 @@ def get_bounds_snappable(obs, use_modifiers=False):
maxx = max(maxx, parent_coord.x)
maxy = max(maxy, parent_coord.y)
maxz = max(maxz, parent_coord.z)
- # bpy.data.meshes.remove(mesh)
+
+ object_eval.to_mesh_clear()
if obcount == 0:
minx, miny, minz, maxx, maxy, maxz = 0, 0, 0, 0, 0, 0
@@ -344,7 +346,8 @@ def get_bounds_worldspace(obs, use_modifiers=False):
mw = ob.matrix_world
if ob.type == 'MESH' or ob.type == 'CURVE':
depsgraph = bpy.context.evaluated_depsgraph_get()
- mesh = ob.evaluated_get(depsgraph).to_mesh()
+ ob_eval = ob.evaluated_get(depsgraph)
+ mesh = ob_eval.to_mesh()
obcount += 1
for c in mesh.vertices:
coord = c.co
@@ -355,6 +358,7 @@ def get_bounds_worldspace(obs, use_modifiers=False):
maxx = max(maxx, world_coord.x)
maxy = max(maxy, world_coord.y)
maxz = max(maxz, world_coord.z)
+ ob_eval.to_mesh_clear()
if obcount == 0:
minx, miny, minz, maxx, maxy, maxz = 0, 0, 0, 0, 0, 0
diff --git a/io_export_dxf/primitive_exporters/mesh_exporter.py b/io_export_dxf/primitive_exporters/mesh_exporter.py
index 358bc2e3..6b1f0a41 100644
--- a/io_export_dxf/primitive_exporters/mesh_exporter.py
+++ b/io_export_dxf/primitive_exporters/mesh_exporter.py
@@ -42,7 +42,11 @@ class MeshDXFExporter(BasePrimitiveDXFExporter):
entities = self._writeInsert(ob, mx, me.name, **(kwargs))
else: # no other instances, so go the standard way
- return self._standard_way(drawing, me, mx, mx_n)
+ self._standard_way(drawing, me, mx, mx_n)
+
+ if obj.modifiers and settings['apply_modifiers']:
+ depsgraph = ctx.evaluated_depsgraph_get()
+ obj.evaluated_get(depsgraph).to_mesh_clear()
def _writeInsert(self, drawing, ob, mx, insert_name, **kwargs):
from insert_exporter import InsertDXFExporter
diff --git a/io_export_pc2.py b/io_export_pc2.py
index 5e69d14f..a5ad1b0c 100644
--- a/io_export_pc2.py
+++ b/io_export_pc2.py
@@ -112,7 +112,10 @@ def do_export(context, props, filepath):
float(v.co[2]))
file.write(thisVertex)
- bpy.data.meshes.remove(me, do_unlink=True)
+ if apply_modifiers:
+ ob.evaluated_get(depsgraph).to_mesh_clear()
+ else:
+ me = ob.to_mesh_clear()
file.flush()
file.close()
diff --git a/io_export_unreal_psk_psa.py b/io_export_unreal_psk_psa.py
index 4851586b..cbccdb9b 100644
--- a/io_export_unreal_psk_psa.py
+++ b/io_export_unreal_psk_psa.py
@@ -982,7 +982,7 @@ def triangulate_mesh(object):
me_ob = object.copy()
depsgraph = bpy.context.evaluated_depsgraph_get()
- me_ob.data = object.evaluated_get(depsgraph).to_mesh() # write data object
+ me_ob.data = bpy.data.meshes.new_from_object(object.evaluated_get(depsgraph)) # write data object
bpy.context.collection.objects.link(me_ob)
bpy.context.scene.update()
bpy.ops.object.mode_set(mode='OBJECT')
@@ -1007,7 +1007,7 @@ def triangulate_mesh(object):
verbose("Triangulated mesh")
- me_ob.data = me_ob.evaluated_get(depsgraph).to_mesh() # write data object
+ me_ob.data = bpy.data.meshes.new_from_object(me_ob.evaluated_get(depsgraph)) # write data object
bpy.context.scene.update()
return me_ob
@@ -2102,7 +2102,8 @@ def rebuildmesh(obj):
uvfaces = []
# print("creating array build mesh...")
depsgraph = bpy.context.evaluated_depsgraph_get()
- mmesh = obj.evaluated_get(depsgraph).to_mesh()
+ obj_eval = obj.evaluated_get(depsgraph)
+ mmesh = obj_eval.to_mesh()
uv_layer = mmesh.tessface_uv_textures.active
for face in mmesh.tessfaces:
@@ -2119,6 +2120,8 @@ def rebuildmesh(obj):
else:
faces.extend([(face.vertices[0], face.vertices[1], face.vertices[2], face.vertices[3])])
+ obj_eval.to_mesh_clear()
+
# vertex positions
for vertex in mesh.vertices:
verts.append(vertex.co.to_tuple())
diff --git a/io_mesh_ply/export_ply.py b/io_mesh_ply/export_ply.py
index f465ed91..b14641be 100644
--- a/io_mesh_ply/export_ply.py
+++ b/io_mesh_ply/export_ply.py
@@ -201,12 +201,14 @@ def save(
if bpy.ops.object.mode_set.poll():
bpy.ops.object.mode_set(mode='OBJECT')
+ mesh_owner_object = None
if use_mesh_modifiers and obj.modifiers:
depsgraph = context.evaluated_depsgraph_get()
- mesh = obj.evaluated_get(depsgraph).to_mesh()
-
+ mesh_owner_object = obj.evaluated_get(depsgraph)
+ mesh = mesh_owner_object.to_mesh()
else:
- mesh = obj.data.copy()
+ mesh_owner_object = obj
+ mesh = mesh_owner_object.to_mesh()
if not mesh:
raise Exception("Error, could not get mesh data from active object")
@@ -221,6 +223,6 @@ def save(
use_colors=use_colors,
)
- bpy.data.meshes.remove(mesh)
+ mesh_owner_object.to_mesh_clear()
return ret
diff --git a/io_mesh_raw/export_raw.py b/io_mesh_raw/export_raw.py
index 8672134a..ed34e3ae 100644
--- a/io_mesh_raw/export_raw.py
+++ b/io_mesh_raw/export_raw.py
@@ -68,9 +68,11 @@ def write(filepath,
faces = []
for obj in bpy.context.selected_objects:
+ obj_eval = None
if applyMods or obj.type != 'MESH':
try:
- me = obj.evaluated_get(depsgraph).to_mesh()
+ obj_eval = obj.evaluated_get(depsgraph)
+ me = obj_eval.to_mesh()
except:
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list