diff --git a/release/scripts/io/engine_render_pov.py b/release/scripts/io/engine_render_pov.py index aa8fb29756a..3ad75f41709 100644 --- a/release/scripts/io/engine_render_pov.py +++ b/release/scripts/io/engine_render_pov.py @@ -33,7 +33,8 @@ if pltfrm.architecture()[0] == '64bit': else: bitness = 32 -def write_pov(filename, scene=None, info_callback = None): + +def write_pov(filename, scene=None, info_callback=None): file = open(filename, 'w') # Only for testing @@ -52,17 +53,16 @@ def write_pov(filename, scene=None, info_callback = None): i = 1 while name in nameSeq: name = '%s_%.3d' % (name_orig, i) - i+=1 + i += 1 return name - def writeMatrix(matrix): file.write('\tmatrix <%.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f, %.6f>\n' %\ - (matrix[0][0], matrix[0][1], matrix[0][2], matrix[1][0], matrix[1][1], matrix[1][2], matrix[2][0], matrix[2][1], matrix[2][2], matrix[3][0], matrix[3][1], matrix[3][2]) ) + (matrix[0][0], matrix[0][1], matrix[0][2], matrix[1][0], matrix[1][1], matrix[1][2], matrix[2][0], matrix[2][1], matrix[2][2], matrix[3][0], matrix[3][1], matrix[3][2])) def writeObjectMaterial(material): - if material and material.transparency_method=='RAYTRACE': + if material and material.transparency_method == 'RAYTRACE': file.write('\tinterior { ior %.6f }\n' % material.raytrace_transparency.ior) # Other interior args @@ -75,6 +75,7 @@ def write_pov(filename, scene=None, info_callback = None): materialNames = {} DEF_MAT_NAME = 'Default' + def writeMaterial(material): # Assumes only called once on each material @@ -95,18 +96,18 @@ def write_pov(filename, scene=None, info_callback = None): #file.write('\tambient rgb <%.3g, %.3g, %.3g>\n' % tuple([c*material.ambient for c in world.ambient_color])) # povray blends the global value # map hardness between 0.0 and 1.0 - roughness = ((1.0 - ((material.specular_hardness-1.0)/510.0))) + roughness = ((1.0 - ((material.specular_hardness - 1.0) / 510.0))) # scale from 0.0 to 0.1 roughness *= 0.1 # add a small value because 0.0 is invalid - roughness += (1/511.0) + roughness += (1 / 511.0) file.write('\troughness %.3g\n' % roughness) # 'phong 70.0 ' if material.raytrace_mirror.enabled: - raytrace_mirror= material.raytrace_mirror + raytrace_mirror = material.raytrace_mirror if raytrace_mirror.reflect_factor: file.write('\treflection {\n') file.write('\t\trgb <%.3g, %.3g, %.3g>' % tuple(material.mirror_color)) @@ -136,14 +137,14 @@ def write_pov(filename, scene=None, info_callback = None): matrix = camera.matrix # compute resolution - Qsize=float(render.resolution_x)/float(render.resolution_y) + Qsize = float(render.resolution_x) / float(render.resolution_y) file.write('camera {\n') file.write('\tlocation <0, 0, 0>\n') file.write('\tlook_at <0, 0, -1>\n') - file.write('\tright <%s, 0, 0>\n' % -Qsize) + file.write('\tright <%s, 0, 0>\n' % - Qsize) file.write('\tup <0, 1, 0>\n') - file.write('\tangle %f \n' % (360.0*atan(16.0/camera.data.lens)/pi)) + file.write('\tangle %f \n' % (360.0 * atan(16.0 / camera.data.lens) / pi)) file.write('\trotate <%.6f, %.6f, %.6f>\n' % tuple([degrees(e) for e in matrix.rotationPart().toEuler()])) file.write('\ttranslate <%.6f, %.6f, %.6f>\n' % (matrix[3][0], matrix[3][1], matrix[3][2])) @@ -168,8 +169,8 @@ def write_pov(filename, scene=None, info_callback = None): file.write('\tspotlight\n') # Falloff is the main radius from the centre line - file.write('\tfalloff %.2f\n' % (lamp.spot_size/2.0) ) # 1 TO 179 FOR BOTH - file.write('\tradius %.6f\n' % ((lamp.spot_size/2.0) * (1-lamp.spot_blend)) ) + file.write('\tfalloff %.2f\n' % (lamp.spot_size / 2.0)) # 1 TO 179 FOR BOTH + file.write('\tradius %.6f\n' % ((lamp.spot_size / 2.0) * (1.0 - lamp.spot_blend))) # Blender does not have a tightness equivilent, 0 is most like blender default. file.write('\ttightness 0\n') # 0:10f @@ -218,9 +219,9 @@ def write_pov(filename, scene=None, info_callback = None): file.write('\t\tthreshold %.4g\n' % meta.threshold) try: - material= meta.materials[0] # lame! - blender cant do enything else. + material = meta.materials[0] # lame! - blender cant do enything else. except: - material= None + material = None for elem in meta.elements: @@ -229,9 +230,9 @@ def write_pov(filename, scene=None, info_callback = None): loc = elem.location - stiffness= elem.stiffness + stiffness = elem.stiffness if elem.negative: - stiffness = -stiffness + stiffness = - stiffness if elem.type == 'BALL': @@ -243,19 +244,19 @@ def write_pov(filename, scene=None, info_callback = None): elif elem.type == 'ELLIPSOID': # location is modified by scale - file.write('\tsphere { <%.6g, %.6g, %.6g>, %.4g, %.4g ' % (loc.x/elem.size_x, loc.y/elem.size_y, loc.z/elem.size_z, elem.radius, stiffness)) - file.write( 'scale <%.6g, %.6g, %.6g> ' % (elem.size_x, elem.size_y, elem.size_z)) + file.write('\tsphere { <%.6g, %.6g, %.6g>, %.4g, %.4g ' % (loc.x / elem.size_x, loc.y / elem.size_y, loc.z / elem.size_z, elem.radius, stiffness)) + file.write('scale <%.6g, %.6g, %.6g> ' % (elem.size_x, elem.size_y, elem.size_z)) if material: diffuse_color = material.diffuse_color - if material.transparency and material.transparency_method=='RAYTRACE': trans = 1-material.raytrace_transparency.filter - else: trans = 0.0 + if material.transparency and material.transparency_method == 'RAYTRACE': + trans = 1.0 - material.raytrace_transparency.filter + else: + trans = 0.0 - file.write( - 'pigment {rgbft<%.3g, %.3g, %.3g, %.3g, %.3g>} finish {%s} }\n' % \ - (diffuse_color[0], diffuse_color[1], diffuse_color[2], 1-material.alpha, trans, materialNames[material.name]) - ) + file.write('pigment {rgbft<%.3g, %.3g, %.3g, %.3g, %.3g>} finish {%s} }\n' % \ + (diffuse_color[0], diffuse_color[1], diffuse_color[2], 1.0 - material.alpha, trans, materialNames[material.name])) else: file.write('pigment {rgb<1 1 1>} finish {%s} }\n' % DEF_MAT_NAME) # Write the finish last. @@ -271,13 +272,13 @@ def write_pov(filename, scene=None, info_callback = None): ob_num = 0 for ob in sel: - ob_num+= 1 + ob_num += 1 if ob.type in ('LAMP', 'CAMERA', 'EMPTY', 'META', 'ARMATURE'): continue me = ob.data - me_materials= me.materials + me_materials = me.materials me = ob.create_mesh(True, 'RENDER') @@ -292,18 +293,22 @@ def write_pov(filename, scene=None, info_callback = None): # me = ob.data matrix = ob.matrix - try: uv_layer = me.active_uv_texture.data - except:uv_layer = None + try: + uv_layer = me.active_uv_texture.data + except: + uv_layer = None - try: vcol_layer = me.active_vertex_color.data - except:vcol_layer = None + try: + vcol_layer = me.active_vertex_color.data + except: + vcol_layer = None faces_verts = [f.verts for f in me.faces] faces_normals = [tuple(f.normal) for f in me.faces] verts_normals = [tuple(v.normal) for v in me.verts] # quads incur an extra face - quadCount = len([f for f in faces_verts if len(f)==4]) + quadCount = len([f for f in faces_verts if len(f) == 4]) file.write('mesh2 {\n') file.write('\tvertex_vectors {\n') @@ -332,7 +337,7 @@ def write_pov(filename, scene=None, info_callback = None): for no, index in uniqueNormals.items(): file.write(',\n\t\t<%.6f, %.6f, %.6f>' % no) # vert count index[0] = idx - idx +=1 + idx += 1 file.write('\n }\n') @@ -345,7 +350,7 @@ def write_pov(filename, scene=None, info_callback = None): for fi, uv in enumerate(uv_layer): - if len(faces_verts[fi])==4: + if len(faces_verts[fi]) == 4: uvs = uv.uv1, uv.uv2, uv.uv3, uv.uv4 else: uvs = uv.uv1, uv.uv2, uv.uv3 @@ -360,7 +365,7 @@ def write_pov(filename, scene=None, info_callback = None): for uv, index in uniqueUVs.items(): file.write(',\n\t\t<%.6f, %.6f>' % uv) index[0] = idx - idx +=1 + idx += 1 ''' else: # Just add 1 dummy vector, no real UV's @@ -380,7 +385,7 @@ def write_pov(filename, scene=None, info_callback = None): col = vcol_layer[fi] - if len(faces_verts[fi])==4: + if len(faces_verts[fi]) == 4: cols = col.color1, col.color2, col.color3, col.color4 else: cols = col.color1, col.color2, col.color3 @@ -409,37 +414,41 @@ def write_pov(filename, scene=None, info_callback = None): # Vert Colours file.write('\ttexture_list {\n') file.write('\t\t%s' % (len(vertCols))) # vert count - idx=0 + idx = 0 for col, index in vertCols.items(): if me_materials: material = me_materials[col[3]] material_finish = materialNames[material.name] - if material.transparency and material.transparency_method=='RAYTRACE': trans = 1-material.raytrace_transparency.filter - else: trans = 0.0 + if material.transparency and material.transparency_method == 'RAYTRACE': + trans = 1.0 - material.raytrace_transparency.filter + else: + trans = 0.0 else: material_finish = DEF_MAT_NAME # not working properly, trans = 0.0 #print material.apl - file.write( ',\n\t\ttexture { pigment {rgbft<%.3g, %.3g, %.3g, %.3g, %.3g>} finish {%s}}' % - (col[0], col[1], col[2], 1-material.alpha, trans, material_finish) ) + file.write(',\n\t\ttexture { pigment {rgbft<%.3g, %.3g, %.3g, %.3g, %.3g>} finish {%s}}' % + (col[0], col[1], col[2], 1.0 - material.alpha, trans, material_finish)) index[0] = idx - idx+=1 + idx += 1 - file.write( '\n }\n' ) + file.write('\n }\n') # Face indicies file.write('\tface_indices {\n') file.write('\t\t%d' % (len(me.faces) + quadCount)) # faces count for fi, f in enumerate(me.faces): fv = faces_verts[fi] - material_index= f.material_index - if len(fv) == 4: indicies = (0,1,2), (0,2,3) - else: indicies = ((0,1,2),) + material_index = f.material_index + if len(fv) == 4: + indicies = (0, 1, 2), (0, 2, 3) + else: + indicies = ((0, 1, 2),) if vcol_layer: col = vcol_layer[fi] @@ -468,7 +477,7 @@ def write_pov(filename, scene=None, info_callback = None): ci3 = vertCols[col3[0], col3[1], col3[2], material_index][0] else: # Colour per material - flat material colour - diffuse_color= material.diffuse_color + diffuse_color = material.diffuse_color ci1 = ci2 = ci3 = vertCols[diffuse_color[0], diffuse_color[1], diffuse_color[2], f.material_index][0] file.write(',\n\t\t<%d,%d,%d>, %d,%d,%d' % (fv[i1], fv[i2], fv[i3], ci1, ci2, ci3)) # vert count @@ -481,8 +490,10 @@ def write_pov(filename, scene=None, info_callback = None): file.write('\t\t%d' % (len(me.faces) + quadCount)) # faces count for fi, fv in enumerate(faces_verts): - if len(fv) == 4: indicies = (0,1,2), (0,2,3) - else: indicies = ((0,1,2),) + if len(fv) == 4: + indicies = (0, 1, 2), (0, 2, 3) + else: + indicies = ((0, 1, 2),) for i1, i2, i3 in indicies: if f.smooth: @@ -501,11 +512,13 @@ def write_pov(filename, scene=None, info_callback = None): file.write('\t\t%d' % (len(me.faces) + quadCount)) # faces count for fi, fv in enumerate(faces_verts): - if len(fv) == 4: indicies = (0,1,2), (0,2,3) - else: indicies = ((0,1,2),) + if len(fv) == 4: + indicies = (0, 1, 2), (0, 2, 3) + else: + indicies = ((0, 1, 2),) uv = uv_layer[fi] - if len(faces_verts[fi])==4: + if len(faces_verts[fi]) == 4: uvs = tuple(uv.uv1), tuple(uv.uv2), tuple(uv.uv3), tuple(uv.uv4) else: uvs = tuple(uv.uv1), tuple(uv.uv2), tuple(uv.uv3) @@ -535,7 +548,7 @@ def write_pov(filename, scene=None, info_callback = None): if mist.enabled: file.write('fog {\n') file.write('\tdistance %.6f\n' % mist.depth) - file.write('\tcolor rgbt<%.3g, %.3g, %.3g, %.3g>\n' % (tuple(world.horizon_color) + (1-mist.intensity,))) + file.write('\tcolor rgbt<%.3g, %.3g, %.3g, %.3g>\n' % (tuple(world.horizon_color) + (1 - mist.intensity,))) #file.write('\tfog_offset %.6f\n' % mist.start) #file.write('\tfog_alt 5\n') #file.write('\tturbulence 0.2\n') @@ -586,12 +599,13 @@ def write_pov(filename, scene=None, info_callback = None): file.close() + def write_pov_ini(filename_ini, filename_pov, filename_image): scene = bpy.data.scenes[0] render = scene.render_data - x= int(render.resolution_x*render.resolution_percentage*0.01) - y= int(render.resolution_y*render.resolution_percentage*0.01) + x = int(render.resolution_x * render.resolution_percentage * 0.01) + y = int(render.resolution_y * render.resolution_percentage * 0.01) file = open(filename_ini, 'w') @@ -616,7 +630,7 @@ def write_pov_ini(filename_ini, filename_pov, filename_image): file.write('Output_Alpha=1\n') if render.antialiasing: - aa_mapping = {'OVERSAMPLE_5':2, 'OVERSAMPLE_8':3, 'OVERSAMPLE_11':4, 'OVERSAMPLE_16':5} # method 1 assumed + aa_mapping = {'OVERSAMPLE_5': 2, 'OVERSAMPLE_8': 3, 'OVERSAMPLE_11': 4, 'OVERSAMPLE_16': 5} # method 1 assumed file.write('Antialias=1\n') file.write('Antialias_Depth=%d\n' % aa_mapping[render.antialiasing_samples]) else: @@ -625,81 +639,81 @@ def write_pov_ini(filename_ini, filename_pov, filename_image): file.close() # Radiosity panel, use in the scene for now. -FloatProperty= bpy.types.Scene.FloatProperty -IntProperty= bpy.types.Scene.IntProperty -BoolProperty= bpy.types.Scene.BoolProperty +FloatProperty = bpy.types.Scene.FloatProperty +IntProperty = bpy.types.Scene.IntProperty +BoolProperty = bpy.types.Scene.BoolProperty # Not a real pov option, just to know if we should write -BoolProperty( attr="pov_radio_enable", +BoolProperty(attr="pov_radio_enable", name="Enable Radiosity", description="Enable povrays radiosity calculation.", - default= False) -BoolProperty( attr="pov_radio_display_advanced", + default=False) +BoolProperty(attr="pov_radio_display_advanced", name="Advanced Options", description="Show advanced options.", - default= False) + default=False) # Real pov options -FloatProperty( attr="pov_radio_adc_bailout", +FloatProperty(attr="pov_radio_adc_bailout", name="ADC Bailout", description="The adc_bailout for radiosity rays. Use adc_bailout = 0.01 / brightest_ambient_object for good results.", - min=0.0, max=1000.0, soft_min=0.0, soft_max=1.0, default= 0.01) + min=0.0, max=1000.0, soft_min=0.0, soft_max=1.0, default=0.01) -BoolProperty( attr="pov_radio_always_sample", +BoolProperty(attr="pov_radio_always_sample", name="Always Sample", description="Only use the data from the pretrace step and not gather any new samples during the final radiosity pass..", - default= True) + default=True) -FloatProperty( attr="pov_radio_brightness", +FloatProperty(attr="pov_radio_brightness", name="Brightness", description="Ammount objects are brightened before being returned upwards to the rest of the system.", - min=0.0, max=1000.0, soft_min=0.0, soft_max=10.0, default= 1.0) + min=0.0, max=1000.0, soft_min=0.0, soft_max=10.0, default=1.0) -IntProperty( attr="pov_radio_count", +IntProperty(attr="pov_radio_count", name="Ray Count", description="number of rays that are sent out whenever a new radiosity value has to be calculated.", - min=1, max=1600, default= 35) + min=1, max=1600, default=35) -FloatProperty( attr="pov_radio_error_bound", +FloatProperty(attr="pov_radio_error_bound", name="Error Bound", description="one of the two main speed/quality tuning values, lower values are more accurate.", - min=0.0, max=1000.0, soft_min=0.1, soft_max=10.0, default= 1.8) + min=0.0, max=1000.0, soft_min=0.1, soft_max=10.0, default=1.8) -FloatProperty( attr="pov_radio_gray_threshold", +FloatProperty(attr="pov_radio_gray_threshold", name="Gray Threshold", description="one of the two main speed/quality tuning values, lower values are more accurate.", - min=0.0, max=1.0, soft_min=0, soft_max=1, default= 0.0) + min=0.0, max=1.0, soft_min=0, soft_max=1, default=0.0) -FloatProperty( attr="pov_radio_low_error_factor", +FloatProperty(attr="pov_radio_low_error_factor", name="Low Error Factor", description="If you calculate just enough samples, but no more, you will get an image which has slightly blotchy lighting.", - min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default= 0.5) + min=0.0, max=1.0, soft_min=0.0, soft_max=1.0, default=0.5) # max_sample - not available yet -BoolProperty( attr="pov_radio_media", +BoolProperty(attr="pov_radio_media", name="Media", description="Radiosity estimation can be affected by media.", - default= False) + default=False) -FloatProperty( attr="pov_radio_minimum_reuse", +FloatProperty(attr="pov_radio_minimum_reuse", name="Minimum Reuse", description="Fraction of the screen width which sets the minimum radius of reuse for each sample point (At values higher than 2% expect errors).", - min=0.0, max=1.0, soft_min=0.1, soft_max=0.1, default= 0.015) + min=0.0, max=1.0, soft_min=0.1, soft_max=0.1, default=0.015) -IntProperty( attr="pov_radio_nearest_count", +IntProperty(attr="pov_radio_nearest_count", name="Nearest Count", description="Number of old ambient values blended together to create a new interpolated value.", - min=1, max=20, default= 5) + min=1, max=20, default=5) -BoolProperty( attr="pov_radio_normal", +BoolProperty(attr="pov_radio_normal", name="Normals", description="Radiosity estimation can be affected by normals.", - default= False) + default=False) -IntProperty( attr="pov_radio_recursion_limit", +IntProperty(attr="pov_radio_recursion_limit", name="Recursion Limit", description="how many recursion levels are used to calculate the diffuse inter-reflection.", - min=1, max=20, default= 3) + min=1, max=20, default=3) class PovrayRender(bpy.types.RenderEngine): @@ -726,8 +740,10 @@ class PovrayRender(bpy.types.RenderEngine): def _render(self): - try: os.remove(self._temp_file_out) # so as not to load the old file - except: pass + try: + os.remove(self._temp_file_out) # so as not to load the old file + except: + pass write_pov_ini(self._temp_file_ini, self._temp_file_in, self._temp_file_out) @@ -735,7 +751,7 @@ class PovrayRender(bpy.types.RenderEngine): pov_binary = "povray" - if sys.platform=='win32': + if sys.platform == 'win32': import winreg regKey = winreg.OpenKey(winreg.HKEY_CURRENT_USER, 'Software\\POV-Ray\\v3.6\\Windows') @@ -755,8 +771,10 @@ class PovrayRender(bpy.types.RenderEngine): def _cleanup(self): for f in (self._temp_file_in, self._temp_file_ini, self._temp_file_out): - try: os.remove(f) - except: pass + try: + os.remove(f) + except: + pass self.update_stats("", "") @@ -770,14 +788,16 @@ class PovrayRender(bpy.types.RenderEngine): r = scene.render_data # compute resolution - x= int(r.resolution_x*r.resolution_percentage*0.01) - y= int(r.resolution_y*r.resolution_percentage*0.01) + x = int(r.resolution_x * r.resolution_percentage * 0.01) + y = int(r.resolution_y * r.resolution_percentage * 0.01) # Wait for the file to be created while not os.path.exists(self._temp_file_out): if self.test_break(): - try: self._process.terminate() - except: pass + try: + self._process.terminate() + except: + pass break if self._process.poll() != None: @@ -796,22 +816,26 @@ class PovrayRender(bpy.types.RenderEngine): result = self.begin_result(0, 0, x, y) lay = result.layers[0] # possible the image wont load early on. - try: lay.load_from_file(self._temp_file_out) - except: pass + try: + lay.load_from_file(self._temp_file_out) + except: + pass self.end_result(result) # Update while povray renders while True: # test if povray exists - if self._process.poll() != None: - update_image(); + if self._process.poll() is not None: + update_image() break # user exit if self.test_break(): - try: self._process.terminate() - except: pass + try: + self._process.terminate() + except: + pass break @@ -852,10 +876,13 @@ del properties_world import properties_material for member in dir(properties_material): subclass = getattr(properties_material, member) - try: subclass.COMPAT_ENGINES.add('POVRAY_RENDER') - except: pass + try: + subclass.COMPAT_ENGINES.add('POVRAY_RENDER') + except: + pass del properties_material + class RenderButtonsPanel(bpy.types.Panel): bl_space_type = 'PROPERTIES' bl_region_type = 'WINDOW' @@ -864,7 +891,8 @@ class RenderButtonsPanel(bpy.types.Panel): def poll(self, context): rd = context.scene.render_data - return (rd.use_game_engine==False) and (rd.engine in self.COMPAT_ENGINES) + return (rd.use_game_engine == False) and (rd.engine in self.COMPAT_ENGINES) + class RENDER_PT_povray_radiosity(RenderButtonsPanel): bl_label = "Radiosity" diff --git a/release/scripts/io/export_fbx.py b/release/scripts/io/export_fbx.py index 97af4cb6ebf..ba2741a7e7e 100644 --- a/release/scripts/io/export_fbx.py +++ b/release/scripts/io/export_fbx.py @@ -54,47 +54,47 @@ import time import math # math.pi import shutil # for file copying -# try: -# import time -# # import os # only needed for batch export, nbot used yet -# except: -# time = None # use this to check if they have python modules installed -# for python 2.3 support -try: - set() -except: - try: - from sets import Set as set - except: - set = None # so it complains you dont have a ! -# # os is only needed for batch 'own dir' option -# try: -# import os -# except: -# os = None + + + + + + + + + + + + + + + + + + # import Blender import bpy import Mathutils -# from Blender.Mathutils import Matrix, Vector, RotationMatrix -# import BPyObject -# import BPyMesh -# import BPySys -# import BPyMessages -## This was used to make V, but faster not to do all that -##valid = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_,.()[]{}' -##v = range(255) -##for c in valid: v.remove(ord(c)) -v = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,42,43,47,58,59,60,61,62,63,64,92,94,96,124,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254] -invalid = ''.join([chr(i) for i in v]) -def cleanName(name): - for ch in invalid: name = name.replace(ch, '_') - return name -# del v, i + + + + + + + + + + + + + + + def copy_file(source, dest): @@ -214,8 +214,8 @@ def sane_name(data, dct): if not name: name = 'unnamed' # blank string, ASKING FOR TROUBLE! else: - #name = BPySys.cleanName(name) - name = cleanName(name) # use our own + + name = bpy.utils.clean_name(name) # use our own while name in iter(dct.values()): name = increment_string(name) @@ -391,8 +391,8 @@ def write(filename, batch_objects = None, \ new_fbxpath = fbxpath # own dir option modifies, we need to keep an original for data in data_seq: # scene or group - newname = BATCH_FILE_PREFIX + cleanName(data.name) -# newname = BATCH_FILE_PREFIX + BPySys.cleanName(data.name) + newname = BATCH_FILE_PREFIX + bpy.utils.clean_name(data.name) +# newname = BATCH_FILE_PREFIX + BPySys.bpy.utils.clean_name(data.name) if BATCH_OWN_DIR: @@ -3442,7 +3442,7 @@ bpy.ops.add(ExportFBX) # NOTES (all line numbers correspond to original export_fbx.py (under release/scripts) # - Draw.PupMenu alternative in 2.5?, temporarily replaced PupMenu with print -# - get rid of cleanName somehow +# - get rid of bpy.utils.clean_name somehow # + fixed: isinstance(inst, bpy.types.*) doesn't work on RNA objects: line 565 # + get rid of BPyObject_getObjectArmature, move it in RNA? # - BATCH_ENABLE and BATCH_GROUP options: line 327 diff --git a/release/scripts/io/export_mdd.py b/release/scripts/io/export_mdd.py index fc85b2996d0..cfd73b1979e 100644 --- a/release/scripts/io/export_mdd.py +++ b/release/scripts/io/export_mdd.py @@ -49,16 +49,8 @@ Be sure not to use modifiers that change the number or order of verts in the mes import bpy import Mathutils -import math -import os +from struct import pack -#import Blender -#from Blender import * -#import BPyMessages -try: - from struct import pack -except: - pack = None def zero_file(filepath): ''' @@ -68,7 +60,8 @@ def zero_file(filepath): file.write('\n') # apparently macosx needs some data in a blank file? file.close() -def check_vertcount(mesh,vertcount): + +def check_vertcount(mesh, vertcount): ''' check and make sure the vertcount is consistent throughout the frame range ''' @@ -94,7 +87,7 @@ def write(filename, sce, ob, PREF_STARTFRAME, PREF_ENDFRAME, PREF_FPS): me = ob.create_mesh(True, 'PREVIEW') #Flip y and z - mat_flip= Mathutils.Matrix(\ + mat_flip = Mathutils.Matrix(\ [1.0, 0.0, 0.0, 0.0],\ [0.0, 0.0, 1.0, 0.0],\ [0.0, 1.0, 0.0, 0.0],\ @@ -103,15 +96,15 @@ def write(filename, sce, ob, PREF_STARTFRAME, PREF_ENDFRAME, PREF_FPS): numverts = len(me.verts) - numframes = PREF_ENDFRAME-PREF_STARTFRAME+1 - PREF_FPS= float(PREF_FPS) + numframes = PREF_ENDFRAME-PREF_STARTFRAME + 1 + PREF_FPS = float(PREF_FPS) f = open(filename, 'wb') #no Errors yet:Safe to create file # Write the header f.write(pack(">2i", numframes, numverts)) # Write the frame times (should we use the time IPO??) - f.write( pack(">%df" % (numframes), *[frame/PREF_FPS for frame in range(numframes)]) ) # seconds + f.write( pack(">%df" % (numframes), *[frame / PREF_FPS for frame in range(numframes)]) ) # seconds #rest frame needed to keep frames in sync """ @@ -119,11 +112,11 @@ def write(filename, sce, ob, PREF_STARTFRAME, PREF_ENDFRAME, PREF_FPS): me_tmp.getFromObject(ob.name) """ - check_vertcount(me,numverts) + check_vertcount(me, numverts) me.transform(mat_flip * ob.matrix) - f.write(pack(">%df" % (numverts*3), *[axis for v in me.verts for axis in v.co])) + f.write(pack(">%df" % (numverts * 3), *[axis for v in me.verts for axis in v.co])) - for frame in range(PREF_STARTFRAME,PREF_ENDFRAME+1):#in order to start at desired frame + for frame in range(PREF_STARTFRAME, PREF_ENDFRAME + 1):#in order to start at desired frame """ Blender.Set('curframe', frame) me_tmp.getFromObject(ob.name) @@ -131,18 +124,18 @@ def write(filename, sce, ob, PREF_STARTFRAME, PREF_ENDFRAME, PREF_FPS): sce.set_frame(frame) me = ob.create_mesh(True, 'PREVIEW') - check_vertcount(me,numverts) + check_vertcount(me, numverts) me.transform(mat_flip * ob.matrix) # Write the vertex data - f.write(pack(">%df" % (numverts*3), *[axis for v in me.verts for axis in v.co])) + f.write(pack(">%df" % (numverts * 3), *[axis for v in me.verts for axis in v.co])) """ me_tmp.verts= None """ f.close() - print ('MDD Exported: %s frames:%d\n'% (filename, numframes-1)) + print('MDD Exported: %s frames:%d\n' % (filename, numframes - 1)) """ Blender.Window.WaitCursor(0) Blender.Set('curframe', orig_frame) @@ -151,6 +144,7 @@ def write(filename, sce, ob, PREF_STARTFRAME, PREF_ENDFRAME, PREF_FPS): from bpy.props import * + class ExportMDD(bpy.types.Operator): '''Animated mesh to MDD vertex keyframe file.''' bl_idname = "export.mdd" @@ -167,18 +161,18 @@ class ExportMDD(bpy.types.Operator): # to the class instance from the operator settings before calling. path = StringProperty(name="File Path", description="File path used for exporting the MDD file", maxlen= 1024, default= "") fps = IntProperty(name="Frames Per Second", description="Number of frames/second", min=minfps, max=maxfps, default= 25) - start_frame = IntProperty(name="Start Frame", description="Start frame for baking", min=minframe,max=maxframe,default=1) - end_frame = IntProperty(name="End Frame", description="End frame for baking", min=minframe, max=maxframe, default= 250) + start_frame = IntProperty(name="Start Frame", description="Start frame for baking", min=minframe, max=maxframe, default=1) + end_frame = IntProperty(name="End Frame", description="End frame for baking", min=minframe, max=maxframe, default=250) def poll(self, context): ob = context.active_object - return (ob and ob.type=='MESH') + return (ob and ob.type == 'MESH') def execute(self, context): if not self.properties.path: raise Exception("filename not set") write(self.properties.path, context.scene, context.active_object, - self.properties.start_frame, self.properties.end_frame, self.properties.fps ) + self.properties.start_frame, self.properties.end_frame, self.properties.fps) return ('FINISHED',) def invoke(self, context, event): @@ -191,11 +185,12 @@ bpy.ops.add(ExportMDD) # Add to a menu import dynamic_menu + def menu_func(self, context): default_path = bpy.data.filename.replace(".blend", ".mdd") self.layout.operator(ExportMDD.bl_idname, text="Vertex Keyframe Animation (.mdd)...").path = default_path menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func) -if __name__=='__main__': +if __name__ == '__main__': bpy.ops.export.mdd(path="/tmp/test.mdd") diff --git a/release/scripts/modules/rigify/copy.py b/release/scripts/modules/rigify/copy.py index 6a3ecb7f639..77bf2d35bb8 100644 --- a/release/scripts/modules/rigify/copy.py +++ b/release/scripts/modules/rigify/copy.py @@ -19,8 +19,7 @@ # import bpy -from rigify_utils import copy_bone_simple, get_side_name, bone_class_instance -from rna_prop_ui import rna_idprop_ui_prop_get +from rigify_utils import bone_class_instance METARIG_NAMES = ("cpy",) diff --git a/release/scripts/modules/rigify/finger_curl.py b/release/scripts/modules/rigify/finger_curl.py index d260bb1a67a..03c76672d6c 100644 --- a/release/scripts/modules/rigify/finger_curl.py +++ b/release/scripts/modules/rigify/finger_curl.py @@ -20,7 +20,7 @@ import bpy from rigify import RigifyError -from rigify_utils import copy_bone_simple, get_side_name, get_base_name +from rigify_utils import copy_bone_simple, get_side_name from rna_prop_ui import rna_idprop_ui_prop_get from functools import reduce diff --git a/release/scripts/op/console_shell.py b/release/scripts/op/console_shell.py index 7dec9477f51..bdb4a746d95 100644 --- a/release/scripts/op/console_shell.py +++ b/release/scripts/op/console_shell.py @@ -17,12 +17,9 @@ # ##### END GPL LICENSE BLOCK ##### # -import sys import os - import bpy - language_id = 'shell' diff --git a/release/scripts/op/mesh.py b/release/scripts/op/mesh.py index 6ca03b409f0..1de06963c7a 100644 --- a/release/scripts/op/mesh.py +++ b/release/scripts/op/mesh.py @@ -20,10 +20,11 @@ import bpy + def main(context): ob = context.active_object bpy.ops.mesh.selection_type(type='FACE') - is_editmode = (ob.mode=='EDIT') + is_editmode = (ob.mode == 'EDIT') if is_editmode: bpy.ops.object.mode_set(mode='OBJECT', toggle=False) @@ -49,6 +50,7 @@ def main(context): if is_editmode: bpy.ops.object.mode_set(mode='EDIT', toggle=False) + class MeshSelectInteriorFaces(bpy.types.Operator): '''Select faces where all edges have more then 2 face users.''' diff --git a/release/scripts/op/uvcalc_smart_project.py b/release/scripts/op/uvcalc_smart_project.py index 0dd1f8b1e08..f3c8f7ed7dd 100644 --- a/release/scripts/op/uvcalc_smart_project.py +++ b/release/scripts/op/uvcalc_smart_project.py @@ -27,7 +27,7 @@ from Mathutils import Matrix, Vector, RotationMatrix import time import Geometry import bpy -from math import cos, degrees, radians +from math import cos, radians DEG_TO_RAD = 0.017453292519943295 # pi/180.0 SMALL_NUM = 0.000000001 diff --git a/release/scripts/op/vertexpaint_dirt.py b/release/scripts/op/vertexpaint_dirt.py index b4b30fed06f..a521c24e06c 100644 --- a/release/scripts/op/vertexpaint_dirt.py +++ b/release/scripts/op/vertexpaint_dirt.py @@ -31,13 +31,13 @@ # import bpy -import Mathutils import math import time from Mathutils import Vector from bpy.props import * + def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, dirt_only): ## Window.WaitCursor(1) @@ -45,8 +45,8 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, vert_tone = [0.0] * len(me.verts) - min_tone =180.0 - max_tone =0.0 + min_tone = 180.0 + max_tone = 0.0 # create lookup table for each vertex's connected vertices (via edges) con = [] @@ -102,7 +102,7 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, # print(clamp_clean) # print(clamp_dirt) - tone_range = max_tone-min_tone + tone_range = max_tone - min_tone if not tone_range: return @@ -131,18 +131,19 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, for j, v in enumerate(f.verts): col = f_col[j] tone = vert_tone[me.verts[v].index] - tone = (tone-min_tone)/tone_range + tone = (tone - min_tone) / tone_range if dirt_only: tone = min(tone, 0.5) tone *= 2 - col[0] = tone*col[0] - col[1] = tone*col[1] - col[2] = tone*col[2] + col[0] = tone * col[0] + col[1] = tone * col[1] + col[2] = tone * col[2] ## Window.WaitCursor(0) + class VertexPaintDirt(bpy.types.Operator): bl_idname = "mesh.vertex_paint_dirt" @@ -150,11 +151,11 @@ class VertexPaintDirt(bpy.types.Operator): bl_register = True bl_undo = True - blur_strength = FloatProperty(name = "Blur Strength", description = "Blur strength per iteration", default = 1.0, min = 0.01, max = 1.0) - blur_iterations = IntProperty(name = "Blur Iterations", description = "Number times to blur the colors. (higher blurs more)", default = 1, min = 0, max = 40) - clean_angle = FloatProperty(name = "Highlight Angle", description = "Less then 90 limits the angle used in the tonal range", default = 180.0, min = 0.0, max = 180.0) - dirt_angle = FloatProperty(name = "Dirt Angle", description = "Less then 90 limits the angle used in the tonal range", default = 0.0, min = 0.0, max = 180.0) - dirt_only = BoolProperty(name= "Dirt Only", description = "Dont calculate cleans for convex areas", default = False) + blur_strength = FloatProperty(name="Blur Strength", description="Blur strength per iteration", default=1.0, min=0.01, max=1.0) + blur_iterations = IntProperty(name="Blur Iterations", description="Number times to blur the colors. (higher blurs more)", default=1, min=0, max=40) + clean_angle = FloatProperty(name="Highlight Angle", description="Less then 90 limits the angle used in the tonal range", default=180.0, min=0.0, max=180.0) + dirt_angle = FloatProperty(name="Dirt Angle", description="Less then 90 limits the angle used in the tonal range", default=0.0, min=0.0, max=180.0) + dirt_only = BoolProperty(name="Dirt Only", description="Dont calculate cleans for convex areas", default=False) def execute(self, context): sce = context.scene @@ -170,7 +171,7 @@ class VertexPaintDirt(bpy.types.Operator): applyVertexDirt(me, self.properties.blur_iterations, self.properties.blur_strength, math.radians(self.properties.dirt_angle), math.radians(self.properties.clean_angle), self.properties.dirt_only) - print('Dirt calculated in %.6f' % (time.time()-t)) + print('Dirt calculated in %.6f' % (time.time() - t)) return('FINISHED',) diff --git a/release/scripts/op/wm.py b/release/scripts/op/wm.py index ae49cf4907a..dbe87cf367b 100644 --- a/release/scripts/op/wm.py +++ b/release/scripts/op/wm.py @@ -19,7 +19,6 @@ # import bpy -import os from bpy.props import * @@ -378,27 +377,7 @@ class WM_OT_reload_scripts(bpy.types.Operator): def execute(self, context): MOD = type(bpy) - import sys bpy.load_scripts(True) - ''' - prefix = bpy.base_path - items = list(sys.modules.items()) - items.sort() - items.reverse() - for mod_name, mod in items: - mod_file = getattr(mod, "__file__", "") - if mod_file.startswith(prefix) and "__init__" not in mod_file: - print(mod_file) - reload(mod) - """ - for submod_name in dir(mod): - submod = getattr(mod, submod_name) - if isinstance(submod, MOD): - reload(submod) - """ - else: - print("Ignoring:", mod, mod_file) - ''' return ('FINISHED',)