Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaurice Raybaud <mauriceraybaud@hotmail.fr>2017-08-16 02:05:23 +0300
committerMaurice Raybaud <mauriceraybaud@hotmail.fr>2017-08-16 02:05:23 +0300
commit795b722bde29f07d062c82c0942d75db9e3d3221 (patch)
tree9f75bb25704cdad8178ccbcca0789332e495739e
parent0bd045ebafa881fa7637cff77a7f20bcb635c857 (diff)
*Added capsule Metaball as cylinder blob pov primitive
*Added the following pov keywords to object properties tab: hollow, double_illuminate, sturm (for Metaballs and lathe), no_shadow, no_image, no_reflection, no_radiosity, inverse, hierarchy *fixed hair location bug.
-rw-r--r--render_povray/__init__.py3
-rw-r--r--render_povray/render.py34
-rw-r--r--render_povray/ui.py29
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"