Fix T51627: .mdd & .pc2 exporters never releasing temp mesh data.

Based on patch by Kai Kostack (@kaikostack), thanks!
This commit is contained in:
Bastien Montagne 2017-05-27 14:56:57 +02:00
parent 0ed2792d30
commit 51ee36db62
Notes: blender-bot 2023-02-14 19:38:47 +01:00
Referenced by issue #51627, .mdd & .pc2 export leave unfreed mesh data in memory killing Blender on larger animations
3 changed files with 10 additions and 1 deletions

View File

@ -19,7 +19,7 @@
bl_info = {
"name": "Export Pointcache Format(.pc2)",
"author": "Florian Meyer (tstscr)",
"version": (1, 1),
"version": (1, 1, 1),
"blender": (2, 71, 0),
"location": "File > Export > Pointcache (.pc2)",
"description": "Export mesh Pointcache data (.pc2)",
@ -79,6 +79,7 @@ def do_export(context, props, filepath):
me = ob.to_mesh(sc, apply_modifiers, 'PREVIEW')
if len(me.vertices) != vertCount:
bpy.data.meshes.remove(me, do_unlink=True)
file.close()
try:
remove(filepath)
@ -100,6 +101,9 @@ def do_export(context, props, filepath):
float(v.co[2]))
file.write(thisVertex)
bpy.data.meshes.remove(me, do_unlink=True)
file.flush()
file.close()
return True

View File

@ -21,6 +21,7 @@
bl_info = {
"name": "NewTek MDD format",
"author": "Bill L.Nieuwendorp",
"version": (1, 0, 1),
"blender": (2, 57, 0),
"location": "File > Import-Export",
"description": "Import-Export MDD as mesh shape keys",

View File

@ -98,6 +98,8 @@ def save(context, filepath="", frame_start=1, frame_end=300, fps=25.0, use_rest_
me.transform(mat_flip * obj.matrix_world)
f.write(pack(">%df" % (numverts * 3), *[axis for v in me.vertices for axis in v.co]))
bpy.data.meshes.remove(me, do_unlink=True)
for frame in range(frame_start, frame_end + 1): # in order to start at desired frame
scene.frame_set(frame)
me = obj.to_mesh(scene, True, 'PREVIEW')
@ -107,6 +109,8 @@ def save(context, filepath="", frame_start=1, frame_end=300, fps=25.0, use_rest_
# Write the vertex data
f.write(pack(">%df" % (numverts * 3), *[axis for v in me.vertices for axis in v.co]))
bpy.data.meshes.remove(me, do_unlink=True)
f.close()
print('MDD Exported: %r frames:%d\n' % (filepath, numframes - 1))