[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [1472] trunk/py/scripts/addons/ render_povray/render.py: - add support for curves/surfaces/text again.
Campbell Barton
ideasman42 at gmail.com
Sat Jan 22 05:48:16 CET 2011
Revision: 1472
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=1472
Author: campbellbarton
Date: 2011-01-22 04:48:15 +0000 (Sat, 22 Jan 2011)
Log Message:
-----------
- add support for curves/surfaces/text again.
- metaballs with no supported elements would give an error. no they are skipped.
Modified Paths:
--------------
trunk/py/scripts/addons/render_povray/render.py
Modified: trunk/py/scripts/addons/render_povray/render.py
===================================================================
--- trunk/py/scripts/addons/render_povray/render.py 2011-01-21 18:24:07 UTC (rev 1471)
+++ trunk/py/scripts/addons/render_povray/render.py 2011-01-22 04:48:15 UTC (rev 1472)
@@ -594,70 +594,70 @@
for ob in metas:
meta = ob.data
- importance=ob.pov_importance_value
- tabWrite('blob {\n')
- tabWrite('threshold %.4g\n' % meta.threshold)
+ # important because no elements will break parsing.
+ elements = [elem for elem in meta.elements if elem.type in ('BALL', 'ELLIPSOID')]
- try:
- material = meta.materials[0] # lame! - blender cant do enything else.
- except:
- material = None
+ if elements:
+ tabWrite('blob {\n')
+ tabWrite('threshold %.4g\n' % meta.threshold)
+ importance = ob.pov_importance_value
- for elem in meta.elements:
+ try:
+ material = meta.materials[0] # lame! - blender cant do enything else.
+ except:
+ material = None
- if elem.type not in ('BALL', 'ELLIPSOID'):
- continue # Not supported
+ for elem in elements:
+ loc = elem.co
- loc = elem.co
+ stiffness = elem.stiffness
+ if elem.use_negative:
+ stiffness = - stiffness
- stiffness = elem.stiffness
- if elem.use_negative:
- stiffness = - stiffness
+ if elem.type == 'BALL':
- if elem.type == 'BALL':
+ tabWrite('sphere { <%.6g, %.6g, %.6g>, %.4g, %.4g }\n' % (loc.x, loc.y, loc.z, elem.radius, stiffness))
- tabWrite('sphere { <%.6g, %.6g, %.6g>, %.4g, %.4g }\n' % (loc.x, loc.y, loc.z, elem.radius, stiffness))
+ # After this wecould do something simple like...
+ # 'pigment {Blue} }'
+ # except we'll write the color
- # After this wecould do something simple like...
- # 'pigment {Blue} }'
- # except we'll write the color
+ elif elem.type == 'ELLIPSOID':
+ # location is modified by scale
+ tabWrite('sphere { <%.6g, %.6g, %.6g>, %.4g, %.4g }\n' % (loc.x / elem.size_x, loc.y / elem.size_y, loc.z / elem.size_z, elem.radius, stiffness))
+ tabWrite('scale <%.6g, %.6g, %.6g> \n' % (elem.size_x, elem.size_y, elem.size_z))
- elif elem.type == 'ELLIPSOID':
- # location is modified by scale
- tabWrite('sphere { <%.6g, %.6g, %.6g>, %.4g, %.4g }\n' % (loc.x / elem.size_x, loc.y / elem.size_y, loc.z / elem.size_z, elem.radius, stiffness))
- tabWrite('scale <%.6g, %.6g, %.6g> \n' % (elem.size_x, elem.size_y, elem.size_z))
+ if material:
+ diffuse_color = material.diffuse_color
- if material:
- diffuse_color = material.diffuse_color
+ if material.use_transparency and material.transparency_method == 'RAYTRACE':
+ trans = 1.0 - material.raytrace_transparency.filter
+ else:
+ trans = 0.0
- if material.use_transparency and material.transparency_method == 'RAYTRACE':
- trans = 1.0 - material.raytrace_transparency.filter
- else:
- trans = 0.0
+ material_finish = materialNames[material.name]
- material_finish = materialNames[material.name]
+ tabWrite('pigment {rgbft<%.3g, %.3g, %.3g, %.3g, %.3g>} \n' %(diffuse_color[0], diffuse_color[1], diffuse_color[2], 1.0 - material.alpha, trans, ))
+ tabWrite('finish {%s}\n' % safety(material_finish, Level=2))
+
- tabWrite('pigment {rgbft<%.3g, %.3g, %.3g, %.3g, %.3g>} \n' %(diffuse_color[0], diffuse_color[1], diffuse_color[2], 1.0 - material.alpha, trans, ))
- tabWrite('finish {%s}\n' % safety(material_finish, Level=2))
-
+ else:
+ tabWrite('pigment {rgb<1 1 1>} \n')
+ tabWrite('finish {%s}\n' % (safety(DEF_MAT_NAME, Level=1))) # Write the finish last.
- else:
- tabWrite('pigment {rgb<1 1 1>} \n')
- tabWrite('finish {%s}\n' % (safety(DEF_MAT_NAME, Level=1))) # Write the finish last.
+ writeObjectMaterial(material)
- writeObjectMaterial(material)
+ writeMatrix(global_matrix * ob.matrix_world)
+ #Importance for radiosity sampling added here:
+ tabWrite('radiosity { \n')
+ tabWrite('importance %3g \n' % importance)
+ tabWrite('}\n')
+
+ tabWrite('}\n') #End of Metaball block
- writeMatrix(global_matrix * ob.matrix_world)
- #Importance for radiosity sampling added here:
- tabWrite('radiosity { \n')
- tabWrite('importance %3g \n' % importance)
- tabWrite('}\n')
-
- tabWrite('}\n') #End of Metaball block
+ if scene.pov_comments_enable and len(metas)>= 1: file.write('\n')
- if scene.pov_comments_enable and len(metas)>= 1: file.write('\n')
-
objectNames = {}
DEF_OBJ_NAME = 'Default'
def exportMeshs(scene, sel):
@@ -674,16 +674,19 @@
name_orig = DEF_OBJ_NAME
name = objectNames[name_orig] = uniqueName(bpy.path.clean_name(name_orig), objectNames)
#############################################
- if ob.type in ('LAMP', 'CAMERA', 'EMPTY', 'META', 'ARMATURE', 'LATTICE', 'CURVE'):
+ if ob.type in ('LAMP', 'CAMERA', 'EMPTY', 'META', 'ARMATURE', 'LATTICE'):
continue
- me = ob.data
- importance=ob.pov_importance_value
+ try:
+ me = ob.create_mesh(scene, True, 'RENDER')
+ except:
+ # happens when curves cant be made into meshes because of no-data
+ continue
+
+ importance = ob.pov_importance_value
me_materials = me.materials
me_faces = me.faces[:]
- me = ob.create_mesh(scene, True, 'RENDER')
-
if not me or not me_faces:
continue
More information about the Bf-extensions-cvs
mailing list