Some small export speed improvements in PsychoBlend.

This commit is contained in:
Nathan Vegdahl 2017-06-04 19:49:55 -07:00
parent a3332d4f6a
commit ef5b573723

View File

@ -198,7 +198,8 @@ class PsychoExporter:
self.w.write("Fov [%f]\n" % (degrees(cam.data.angle) * res_x / res_y)) self.w.write("Fov [%f]\n" % (degrees(cam.data.angle) * res_x / res_y))
self.w.write("FocalDistance [%f]\n" % dof_distance) self.w.write("FocalDistance [%f]\n" % dof_distance)
self.w.write("ApertureRadius [%f]\n" % (cam.data.psychopath.aperture_radius)) self.w.write("ApertureRadius [%f]\n" % (cam.data.psychopath.aperture_radius))
self.set_frame(self.fr, self.shutter_start + (self.shutter_diff*i)) if self.time_samples > 1:
self.set_frame(self.fr, self.shutter_start + (self.shutter_diff*i))
mat = cam.matrix_world.copy() mat = cam.matrix_world.copy()
mat = mat * matz mat = mat * matz
self.w.write("Transform [%s]\n" % mat2str(mat)) self.w.write("Transform [%s]\n" % mat2str(mat))
@ -343,13 +344,16 @@ class PsychoExporter:
# Collect time samples # Collect time samples
time_meshes = [] time_meshes = []
for i in range(self.time_samples): if deform_mb:
# Check if render is cancelled for i in range(self.time_samples):
if self.render_engine.test_break(): # Check if render is cancelled
raise ExportCancelled() if self.render_engine.test_break():
self.set_frame(self.fr, self.shutter_start + (self.shutter_diff*i)) raise ExportCancelled()
if export_mesh and (deform_mb or i == 0): self.set_frame(self.fr, self.shutter_start + (self.shutter_diff*i))
time_meshes += [ob.to_mesh(self.scene, True, 'RENDER')] if export_mesh and (deform_mb or i == 0):
time_meshes += [ob.to_mesh(self.scene, True, 'RENDER')]
elif export_mesh:
time_meshes += [ob.to_mesh(self.scene, True, 'RENDER')]
# Export mesh data if necessary # Export mesh data if necessary
if export_mesh: if export_mesh:
@ -367,27 +371,26 @@ class PsychoExporter:
# Write vertices # Write vertices
for ti in range(len(time_meshes)): for ti in range(len(time_meshes)):
self.w.write("Vertices [") self.w.write("Vertices [")
for v in time_meshes[ti].vertices: self.w.write(" ".join([("%f" % i) for vert in time_meshes[ti].vertices for i in vert.co]), False)
self.w.write("%f %f %f " % (v.co[0], v.co[1], v.co[2]), False)
self.w.write("]\n", False) self.w.write("]\n", False)
# Write face vertex counts # Write face vertex counts
self.w.write("FaceVertCounts [") self.w.write("FaceVertCounts [")
for p in time_meshes[0].polygons: self.w.write(" ".join([("%d" % len(p.vertices)) for p in time_meshes[0].polygons]), False)
self.w.write("%d " % len(p.vertices), False)
self.w.write("]\n", False) self.w.write("]\n", False)
# Write face vertex indices # Write face vertex indices
self.w.write("FaceVertIndices [") self.w.write("FaceVertIndices [")
for p in time_meshes[0].polygons: self.w.write(" ".join([("%d"%v) for p in time_meshes[0].polygons for v in p.vertices]), False)
for v in p.vertices:
self.w.write("%d " % v, False)
self.w.write("]\n", False) self.w.write("]\n", False)
# MeshSurface/SubdivisionSurface section end # MeshSurface/SubdivisionSurface section end
self.w.unindent() self.w.unindent()
self.w.write("}\n") self.w.write("}\n")
for mesh in time_meshes:
bpy.data.meshes.remove(mesh)
return mesh_name return mesh_name