From db81792446b5fcbef05fc92e8fca18c638dc2a43 Mon Sep 17 00:00:00 2001 From: Maurice Raybaud Date: Sun, 3 Sep 2017 11:24:35 +0200 Subject: *Fixed: Cube and Plane meta elements were missing since all meta were no longer exported to mesh but as POV-Ray blobs --- render_povray/render.py | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/render_povray/render.py b/render_povray/render.py index 8b6b4f25..914fc45a 100644 --- a/render_povray/render.py +++ b/render_povray/render.py @@ -1622,7 +1622,7 @@ def write_pov(filename, scene=None, info_callback=None): prefix = ob.name.split(".")[0] if not prefix in meta_group: meta_group[prefix] = ob # .data.threshold - elems = [(elem, ob) for elem in ob.data.elements if elem.type in {'BALL', 'ELLIPSOID','CAPSULE'}] + elems = [(elem, ob) for elem in ob.data.elements if elem.type in {'BALL', 'ELLIPSOID','CAPSULE','CUBE','PLANE'}] if prefix in meta_elems: meta_elems[prefix].extend(elems) else: @@ -1646,19 +1646,43 @@ def write_pov(filename, scene=None, info_callback=None): if elem.type == 'BALL': tabWrite("sphere { <%.6g, %.6g, %.6g>, %.4g, %.4g " % (loc.x, loc.y, loc.z, elem.radius, stiffness)) + writeMatrix(global_matrix * elems[1].matrix_world) + tabWrite("}\n") elif elem.type == 'ELLIPSOID': tabWrite("sphere{ <%.6g, %.6g, %.6g>,%.4g,%.4g " % (loc.x / elem.size_x, loc.y / elem.size_y, loc.z / elem.size_z, elem.radius, stiffness)) tabWrite("scale <%.6g, %.6g, %.6g>" % (elem.size_x, elem.size_y, elem.size_z)) + writeMatrix(global_matrix * elems[1].matrix_world) + tabWrite("}\n") elif elem.type == 'CAPSULE': tabWrite("cylinder{ <%.6g, %.6g, %.6g>,<%.6g, %.6g, %.6g>,%.4g,%.4g " % ((loc.x - elem.size_x), (loc.y), (loc.z), (loc.x + elem.size_x), (loc.y), (loc.z), elem.radius, stiffness)) #tabWrite("scale <%.6g, %.6g, %.6g>" % (elem.size_x, elem.size_y, elem.size_z)) - writeMatrix(global_matrix * elems[1].matrix_world) - tabWrite("}\n") + writeMatrix(global_matrix * elems[1].matrix_world) + tabWrite("}\n") + + elif elem.type == 'CUBE': + tabWrite("cylinder { -x*8, +x*8,%.4g,%.4g translate<%.6g,%.6g,%.6g> scale <1/4,1,1> scale <%.6g, %.6g, %.6g>\n" % (elem.radius*2.0, stiffness/4.0, loc.x, loc.y, loc.z, elem.size_x, elem.size_y, elem.size_z)) + writeMatrix(global_matrix * elems[1].matrix_world) + tabWrite("}\n") + tabWrite("cylinder { -y*8, +y*8,%.4g,%.4g translate<%.6g,%.6g,%.6g> scale <1,1/4,1> scale <%.6g, %.6g, %.6g>\n" % (elem.radius*2.0, stiffness/4.0, loc.x, loc.y, loc.z, elem.size_x, elem.size_y, elem.size_z)) + writeMatrix(global_matrix * elems[1].matrix_world) + tabWrite("}\n") + tabWrite("cylinder { -z*8, +z*8,%.4g,%.4g translate<%.6g,%.6g,%.6g> scale <1,1,1/4> scale <%.6g, %.6g, %.6g>\n" % (elem.radius*2.0, stiffness/4.0, loc.x, loc.y, loc.z, elem.size_x, elem.size_y, elem.size_z)) + writeMatrix(global_matrix * elems[1].matrix_world) + tabWrite("}\n") + + elif elem.type == 'PLANE': + tabWrite("cylinder { -x*8, +x*8,%.4g,%.4g translate<%.6g,%.6g,%.6g> scale <1/4,1,1> scale <%.6g, %.6g, %.6g>\n" % (elem.radius*2.0, stiffness/4.0, loc.x, loc.y, loc.z, elem.size_x, elem.size_y, elem.size_z)) + writeMatrix(global_matrix * elems[1].matrix_world) + tabWrite("}\n") + tabWrite("cylinder { -y*8, +y*8,%.4g,%.4g translate<%.6g,%.6g,%.6g> scale <1,1/4,1> scale <%.6g, %.6g, %.6g>\n" % (elem.radius*2.0, stiffness/4.0, loc.x, loc.y, loc.z, elem.size_x, elem.size_y, elem.size_z)) + writeMatrix(global_matrix * elems[1].matrix_world) + tabWrite("}\n") + try: material = elems[1].data.materials[0] # lame! - blender cant do enything else. except: -- cgit v1.2.3