diff options
-rw-r--r-- | render_povray/__init__.py | 3 | ||||
-rw-r--r-- | render_povray/render.py | 34 | ||||
-rw-r--r-- | render_povray/ui.py | 29 |
3 files changed, 52 insertions, 14 deletions
diff --git a/render_povray/__init__.py b/render_povray/__init__.py index 0c0aee46..1b222665 100644 --- a/render_povray/__init__.py +++ b/render_povray/__init__.py @@ -1664,7 +1664,8 @@ class RenderPovSettingsObject(PropertyGroup): default=(0.0, 0.0, 2.0)) unlock_parameters = BoolProperty(name="Lock",default = False) - + + # not in UI yet but used for sor (lathe) / prism... pov primitives curveshape = EnumProperty( name="Povray Shape Type", items=(("birail", "Birail", ""), diff --git a/render_povray/render.py b/render_povray/render.py index c3ff42a6..17b368e3 100644 --- a/render_povray/render.py +++ b/render_povray/render.py @@ -288,23 +288,23 @@ def write_global_setting(scene,file): def write_object_modifiers(scene,ob,File): if ob.pov.hollow: - File.write("hollow\n") + File.write("\thollow\n") if ob.pov.double_illuminate: - File.write("double_illuminate\n") + File.write("\tdouble_illuminate\n") if ob.pov.sturm: - File.write("sturm\n") + File.write("\tsturm\n") if ob.pov.no_shadow: - File.write("no_shadow\n") + File.write("\tno_shadow\n") if ob.pov.no_image: - File.write("no_image\n") + File.write("\tno_image\n") if ob.pov.no_reflection: - File.write("no_reflection\n") + File.write("\tno_reflection\n") if ob.pov.no_radiosity: - File.write("no_radiosity\n") + File.write("\tno_radiosity\n") if ob.pov.inverse: - File.write("inverse\n") + File.write("\tinverse\n") if ob.pov.hierarchy: - File.write("hierarchy\n") + File.write("\thierarchy\n") # XXX, Commented definitions ''' @@ -1466,7 +1466,7 @@ def write_pov(filename, scene=None, info_callback=None): tabWrite("}\n") - + # below not used yet? if ob.pov.curveshape == 'sor': for spl in ob.data.splines: if spl.type in {'POLY','NURBS'}: @@ -1608,7 +1608,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'}] + elems = [(elem, ob) for elem in ob.data.elements if elem.type in {'BALL', 'ELLIPSOID','CAPSULE'}] if prefix in meta_elems: meta_elems[prefix].extend(elems) else: @@ -1637,6 +1637,12 @@ def write_pov(filename, scene=None, info_callback=None): (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)) + 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") try: @@ -2105,7 +2111,7 @@ def write_pov(filename, scene=None, info_callback=None): #only overwrite variable for each competing texture for now initColor=th.texture.evaluate((initCo[0],initCo[1],initCo[2])) for step in range(0, steps): - co = pSys.co_hair(ob, pindex, step) + co = ob.matrix_world.inverted()*(pSys.co_hair(ob, pindex, step)) #for controlPoint in particle.hair_keys: if pSys.settings.clump_factor != 0: hDiameter = pSys.settings.clump_factor / 200.0 * random.uniform(0.5, 1) @@ -3184,11 +3190,13 @@ def write_pov(filename, scene=None, info_callback=None): writeObjectMaterial(material, ob) except IndexError: print(me) - + #Importance for radiosity sampling added here: tabWrite("radiosity { \n") tabWrite("importance %3g \n" % importance) tabWrite("}\n") + # POV object modifiers such as hollow / sturm / double_illuminate etc. + write_object_modifiers(scene,ob,file) tabWrite("}\n") # End of mesh block diff --git a/render_povray/ui.py b/render_povray/ui.py index 6c12b0b8..1ac4bd1f 100644 --- a/render_povray/ui.py +++ b/render_povray/ui.py @@ -1284,6 +1284,12 @@ class TEXTURE_PT_povray_tex_gamma(TextureButtonsPanel, bpy.types.Panel): class OBJECT_PT_povray_obj_importance(ObjectButtonsPanel, bpy.types.Panel): bl_label = "POV-Ray" COMPAT_ENGINES = {'POVRAY_RENDER'} + + @classmethod + def poll(cls, context): + + engine = context.scene.render.engine + return (engine in cls.COMPAT_ENGINES) def draw(self, context): layout = self.layout @@ -1297,7 +1303,30 @@ class OBJECT_PT_povray_obj_importance(ObjectButtonsPanel, bpy.types.Panel): col.prop(obj.pov, "collect_photons", text="Receive Photon Caustics") if obj.pov.collect_photons: col.prop(obj.pov, "spacing_multiplier", text="Photons Spacing Multiplier") + + split = layout.split() + col = split.column() + col.prop(obj.pov,"hollow") + col.prop(obj.pov,"double_illuminate") + + + if obj.type == 'META' or obj.pov.curveshape == 'lathe': + #if obj.pov.curveshape == 'sor' + col.prop(obj.pov,"sturm") + col.prop(obj.pov,"no_shadow") + col.prop(obj.pov,"no_image") + col.prop(obj.pov,"no_reflection") + col.prop(obj.pov,"no_radiosity") + col.prop(obj.pov,"inverse") + col.prop(obj.pov,"hierarchy") + # col.prop(obj.pov,"boundorclip",text="Bound / Clip") + # if obj.pov.boundorclip != "none": + # col.prop_search(obj.pov,"boundorclipob",context.blend_data,"objects",text="Object") + # text = "Clipped by" + # if obj.pov.boundorclip == "clipped_by": + # text = "Bounded by" + # col.prop(obj.pov,"addboundorclip",text=text) class OBJECT_PT_povray_obj_sphere(PovDataButtonsPanel, bpy.types.Panel): bl_label = "POV-Ray Sphere" |