diff options
author | Campbell Barton <ideasman42@gmail.com> | 2007-01-27 07:58:09 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2007-01-27 07:58:09 +0300 |
commit | 8f075f9518c8173523e3726b436fa02de6fea994 (patch) | |
tree | a32c7b56c76132e2ecc4a84bac8913bd8d1ef4e0 /release | |
parent | 853785782e5fea7805b05ce834a661271fd24358 (diff) |
minor tweaks from testing scripts. correction in my last commit.
Diffstat (limited to 'release')
-rw-r--r-- | release/scripts/DirectX8Importer.py | 6 | ||||
-rw-r--r-- | release/scripts/export-iv-0.1.py | 44 | ||||
-rw-r--r-- | release/scripts/mesh_solidify.py | 40 | ||||
-rw-r--r-- | release/scripts/radiosity_import.py | 14 | ||||
-rw-r--r-- | release/scripts/slp_import.py | 13 | ||||
-rw-r--r-- | release/scripts/truespace_export.py | 73 | ||||
-rw-r--r-- | release/scripts/truespace_import.py | 15 |
7 files changed, 110 insertions, 95 deletions
diff --git a/release/scripts/DirectX8Importer.py b/release/scripts/DirectX8Importer.py index b8ab465b26d..4db533e96fc 100644 --- a/release/scripts/DirectX8Importer.py +++ b/release/scripts/DirectX8Importer.py @@ -300,10 +300,12 @@ class xImport: # MAIN #------------------------------------------------------------------ def my_callback(filename): - if not filename.find('.x', -2): print "Not an .x file" + if not filename.lower().endswith('.x'): print "Not an .x file" ximport = xImport(filename) ximport.Import() arg = __script__['arg'] -Blender.Window.FileSelector(my_callback, "Import DirectX") + +if __name__ == '__main__': + Blender.Window.FileSelector(my_callback, "Import DirectX", "*.x")
\ No newline at end of file diff --git a/release/scripts/export-iv-0.1.py b/release/scripts/export-iv-0.1.py index 17b3d4cb728..a650fb90453 100644 --- a/release/scripts/export-iv-0.1.py +++ b/release/scripts/export-iv-0.1.py @@ -1,7 +1,7 @@ #!BPY """ -Name: 'OpenInventor (.iv)' +Name: 'OpenInventor (.iv)...' Blender: 236 Group: 'Export' Tip: 'Export to OpenInventor file format. (.iv)' @@ -54,12 +54,12 @@ def WriteHeader(file): def WriteFooter(file): file.write("}\n") -def WriteMesh(file, object): +def WriteMesh(file, ob): file.write(" Separator\n") file.write(" {\n") - file.write(" # %s\n" % object.getName()) - WriteMatrix(file, object) - mesh = object.getData() + file.write(" # %s\n" % ob.name) + WriteMatrix(file, ob) + mesh = ob.getData() WriteMaterials(file, mesh) WriteTexture(file, mesh) WriteNormals(file, mesh) @@ -67,8 +67,8 @@ def WriteMesh(file, object): WriteFaces(file, mesh) file.write(" }\n") -def WriteMatrix(file, object): - matrix = object.getMatrix() +def WriteMatrix(file, ob): + matrix = ob.getMatrix() file.write(" MatrixTransform\n") file.write(" {\n") file.write(" matrix\n") @@ -233,8 +233,8 @@ def WriteFaces(file, mesh): file.write(" }\n") -def WriteCamera(file, object): - camera = object.getData(); +def WriteCamera(file, ob): + camera = ob.getData(); # perspective camera if camera.type == 0: file.write(" PerspectiveCamera\n") @@ -246,15 +246,14 @@ def WriteCamera(file, object): else: print camera.type -def WriteLamp(file, object): - lamp = object.getData(); +def WriteLamp(file, ob): + lamp = ob.getData(); # spot lamp if lamp.type == 2: file.write(" SpotLight\n") file.write(" {\n") file.write(" intensity %s\n" % (lamp.energy / 10.0)) - file.write(" color %s %s %s\n" % (lamp.col[0], lamp.col[1], - lamp.col[2])) + file.write(" color %s %s %s\n" % (lamp.col[0], lamp.col[1], lamp.col[2])) #file.write(" location %s\n" % ()) #file.write(" direction %s\n" % ()) file.write(" dropOffRate %s\n" % (lamp.spotBlend)) @@ -266,22 +265,22 @@ def ExportToIv(file_name): scene = Blender.Scene.GetCurrent() file = open(file_name, "w") - # make lists of individual object types + # make lists of individual ob types meshes = [] lamps = [] cameras = [] - for object in scene.objects: - obtype= object.type + for ob in scene.objects: + obtype= ob.type if obtype == "Mesh": - meshes.append(object); + meshes.append(ob); #elif obtype == "Lamp": - # lamps.append(object); + # lamps.append(ob); #elif obtype == "Camera": - # cameras.append(object); + # cameras.append(ob); #else: - # print "Exporting %s objects isn't supported!" % object.type + # print "Exporting %s objects isn't supported!" % ob.type - # write header, footer and groups of object types + # write header, footer and groups of ob types WriteHeader(file); #for camera in cameras: # WriteCamera(file, camera); @@ -298,4 +297,5 @@ def FileSelectorCB(file_name): file_name += '.iv' ExportToIv(file_name) -Blender.Window.FileSelector(FileSelectorCB, "Export IV", Blender.sys.makename(ext='.iv')) +if __name__ == '__main__': + Blender.Window.FileSelector(FileSelectorCB, "Export IV", Blender.sys.makename(ext='.iv')) diff --git a/release/scripts/mesh_solidify.py b/release/scripts/mesh_solidify.py index d612ee5eef5..b254d9c00f5 100644 --- a/release/scripts/mesh_solidify.py +++ b/release/scripts/mesh_solidify.py @@ -46,15 +46,12 @@ def lengthFromAngle(angle): def main(): scn = Scene.GetCurrent() - ob = scn.getActiveObject() + ob = scn.objects.active + if not ob or ob.type != 'Mesh': Draw.PupMenu('ERROR: Active object is not a mesh, aborting.') return - is_editmode = Window.EditMode() - if is_editmode: - Window.EditMode(0) - # Create the variables. PREF_THICK = Draw.Create(-0.1) PREF_SKIN_SIDES= Draw.Create(1) @@ -73,19 +70,21 @@ def main(): PREF_SKIN_SIDES= PREF_SKIN_SIDES.val PREF_REM_ORIG= PREF_REM_ORIG.val - - Window.WaitCursor(1) + is_editmode = Window.EditMode() + if is_editmode: Window.EditMode(0) + # Main code function - me = ob.getData(mesh=1) + me = ob.getData(mesh=True) + me_faces = me.faces + faces_sel= [f for f in me_faces if f.sel] - faces_sel= [f for f in me.faces if f.sel] BPyMesh.meshCalcNormals(me) normals= [v.no for v in me.verts] vertFaces= [[] for i in xrange(len(me.verts))] - for f in me.faces: + for f in me_faces: no=f.no for v in f: vertFaces[v.index].append(no) @@ -111,7 +110,7 @@ def main(): normals[i]= (normals[i] * length) * PREF_THICK len_verts = len( me.verts ) - len_faces = len( me.faces ) + len_faces = len( me_faces ) vert_mapping= [-1] * len(me.verts) verts= [] @@ -125,20 +124,20 @@ def main(): #verts= [v.co + normals[v.index] for v in me.verts] me.verts.extend( verts ) - #faces= [tuple([ me.verts[v.index+len_verts] for v in reversed(f.v)]) for f in me.faces ] + #faces= [tuple([ me.verts[v.index+len_verts] for v in reversed(f.v)]) for f in me_faces ] faces= [ tuple([vert_mapping[v.index] for v in reversed(f.v)]) for f in faces_sel ] - me.faces.extend( faces ) + me_faces.extend( faces ) has_uv = me.faceUV has_vcol = me.vertexColors for i, orig_f in enumerate(faces_sel): - new_f= me.faces[len_faces + i] + new_f= me_faces[len_faces + i] new_f.mat = orig_f.mat new_f.smooth = orig_f.smooth orig_f.sel=False new_f.sel= True - new_f = me.faces[i+len_faces] + new_f = me_faces[i+len_faces] if has_uv: new_f.uv = [c for c in reversed(orig_f.uv)] new_f.mode = orig_f.mode @@ -169,16 +168,16 @@ def main(): v1i,v2i= f_v[i1].index, f_v[i2].index # Now make a new Face skin_side_faces.append( (v1i, v2i, vert_mapping[v2i], vert_mapping[v1i]) ) - skin_side_faces_orig.append((f, len(me.faces) + len(skin_side_faces_orig), i1, i2)) + skin_side_faces_orig.append((f, len(me_faces) + len(skin_side_faces_orig), i1, i2)) - me.faces.extend(skin_side_faces) + me_faces.extend(skin_side_faces) # Now assign properties. for i, origfData in enumerate(skin_side_faces_orig): orig_f, new_f_idx, i1, i2 = origfData - new_f= me.faces[new_f_idx] + new_f= me_faces[new_f_idx] new_f.mat= orig_f.mat new_f.smooth= orig_f.smooth @@ -198,12 +197,11 @@ def main(): new_f.col= (col1, col2, col2, col1) if PREF_REM_ORIG: - me.faces.delete(0, faces_sel) + me_faces.delete(0, faces_sel) Window.WaitCursor(0) - if is_editmode: - Window.EditMode(1) + if is_editmode: Window.EditMode(1) Window.RedrawAll() diff --git a/release/scripts/radiosity_import.py b/release/scripts/radiosity_import.py index 67167f5bc70..5d301dc524e 100644 --- a/release/scripts/radiosity_import.py +++ b/release/scripts/radiosity_import.py @@ -64,6 +64,7 @@ except: # =============================== def read(filename): start = Blender.sys.time() + Blender.Window.WaitCursor(1) file = open(filename, "rb") mesh = Blender.NMesh.GetRaw() #mesh.addMaterial(Blender.Material.New()) @@ -122,21 +123,18 @@ def read(filename): mesh.faces.append(face) scn= Blender.Scene.GetCurrent() - for obj in scn.objects: - obj.sel= 0 + scn.objects.selected = [] - obj= Blender.Object.New('Mesh', objname) mesh.name= objname - obj.link(mesh) - scn.link(obj) - obj.sel= 1 - obj.Layers= scn.Layers + scn.objects.new(mesh) Blender.Window.DrawProgressBar(1.0, '') # clear progressbar file.close() end = Blender.sys.time() message = 'Successfully imported "%s" in %.2f seconds' % (Blender.sys.basename(filename), end-start) meshtools.print_boxed(message) + Blender.Window.WaitCursor(0) + Blender.Window.RedrawAll() def main(): @@ -144,7 +142,7 @@ def main(): Blender.Draw.PupMenu('ERROR%t|Error: you need a full Python install to run this script') return - Blender.Window.FileSelector(read, "Import Radio", Blender.sys.makename(ext='.radio')) + Blender.Window.FileSelector(read, 'Import Radio', '*.radio') if __name__ == '__main__': main() diff --git a/release/scripts/slp_import.py b/release/scripts/slp_import.py index 4944c34045d..9c2458b2ba5 100644 --- a/release/scripts/slp_import.py +++ b/release/scripts/slp_import.py @@ -68,14 +68,14 @@ def read(filename): file = open(filename, "rb") raw = [] - for line in file.readlines(): + for line in file.xreadlines(): data = line.split() if data[0] == "vertex": vert = map(float, data[1:]) raw.append(vert) - + tri = [] - for i in range(0, len(raw), 3): + for i in xrange(0, len(raw), 3): tri.append(raw[i] + raw[i+1] + raw[i+2]) #$import pprint; pprint.pprint(tri) @@ -90,8 +90,8 @@ def read(filename): verts = [] coords = {} index = 0 - for i in range(len(faces)): - for j in range(len(faces[i])): + for i in xrange(len(faces)): + for j in xrange(len(faces[i])): vertex = faces[i][j] if not coords.has_key(vertex): coords[vertex] = index @@ -112,4 +112,5 @@ def read(filename): def fs_callback(filename): read(filename) -Blender.Window.FileSelector(fs_callback, "Import SLP") +if __name__ == '__main__': + Blender.Window.FileSelector(fs_callback, "Import SLP", "*.slp") diff --git a/release/scripts/truespace_export.py b/release/scripts/truespace_export.py index 646c92f3a93..7e0e1947c78 100644 --- a/release/scripts/truespace_export.py +++ b/release/scripts/truespace_export.py @@ -78,7 +78,7 @@ how to handle it. # ***** END GPL LICENCE BLOCK ***** import Blender, meshtools -import struct, os, cStringIO, time +import struct, cStringIO, time # ============================== # === Write trueSpace Format === @@ -91,20 +91,20 @@ def write(filename): write_header(file) G,P,V,U,M = 1000,2000,3000,4000,5000 - for object in objects: - objname = object.name - meshname = object.getData(name_only=1) + for obj_index, obj in enumerate(objects): + objname = obj.name + meshname = obj.getData(name_only=1) mesh = Blender.NMesh.GetRaw(meshname) - obj = object + if not mesh: continue - grou = generate_grou('Group ' + `objects.index(object)+1`) + grou = generate_grou('Group ' + `obj_index+1`) polh = generate_polh(objname, obj, mesh) if meshtools.has_vertex_colors(mesh): vcol = generate_vcol(mesh) unit = generate_unit() mat1 = generate_mat1(mesh) - if objects.index(object) == 0: X = 0 + if obj_index == 0: X = 0 write_chunk(file, "Grou", 0, 1, G, X, grou) write_chunk(file, "PolH", 0, 4, P, G, polh) @@ -122,7 +122,7 @@ def write(filename): file.close() end = time.clock() seconds = " in %.2f %s" % (end-start, "seconds") - message = "Successfully exported " + os.path.basename(filename) + seconds + message = "Successfully exported " + filename.split('\\')[-1].split('/')[-1] + seconds meshtools.print_boxed(message) # ============================= @@ -162,24 +162,26 @@ def write_ObjectName(data, objname): # === Write Local Axes === def write_LocalAxes(data, obj): - data.write(struct.pack("<fff", obj.mat[3][0], obj.mat[3][1], obj.mat[3][2])) - data.write(struct.pack("<fff", obj.mat[0][0]/obj.SizeX, obj.mat[1][0]/obj.SizeX, obj.mat[2][0]/obj.SizeX)) - data.write(struct.pack("<fff", obj.mat[0][1]/obj.SizeY, obj.mat[1][1]/obj.SizeY, obj.mat[2][1]/obj.SizeY)) - data.write(struct.pack("<fff", obj.mat[0][2]/obj.SizeZ, obj.mat[1][2]/obj.SizeZ, obj.mat[2][2]/obj.SizeZ)) + mat = obj.mat + data.write(struct.pack("<fff", mat[3][0], mat[3][1], mat[3][2])) + data.write(struct.pack("<fff", mat[0][0]/obj.SizeX, mat[1][0]/obj.SizeX, mat[2][0]/obj.SizeX)) + data.write(struct.pack("<fff", mat[0][1]/obj.SizeY, mat[1][1]/obj.SizeY, mat[2][1]/obj.SizeY)) + data.write(struct.pack("<fff", mat[0][2]/obj.SizeZ, mat[1][2]/obj.SizeZ, mat[2][2]/obj.SizeZ)) # === Write Current Position === def write_CurrentPosition(data, obj): - data.write(struct.pack("<ffff", obj.mat[0][0], obj.mat[0][1], obj.mat[0][2], obj.mat[3][0])) - data.write(struct.pack("<ffff", obj.mat[1][0], obj.mat[1][1], obj.mat[1][2], obj.mat[3][1])) - data.write(struct.pack("<ffff", obj.mat[2][0], obj.mat[2][1], obj.mat[2][2], obj.mat[3][2])) + mat = obj.mat + data.write(struct.pack("<ffff", mat[0][0], mat[0][1], mat[0][2], mat[3][0])) + data.write(struct.pack("<ffff", mat[1][0], mat[1][1], mat[1][2], mat[3][1])) + data.write(struct.pack("<ffff", mat[2][0], mat[2][1], mat[2][2], mat[3][2])) # === Write Vertex List === def write_VertexList(data, mesh): data.write(struct.pack("<l", len(mesh.verts))) - for i in range(len(mesh.verts)): + for i, v in enumerate(mesh.verts): if not i%100 and meshtools.show_progress: Blender.Window.DrawProgressBar(float(i)/len(mesh.verts), "Writing Verts") - x, y, z = mesh.verts[i].co + x, y, z = v.co data.write(struct.pack("<fff", -y, x, z)) # === Write UV Vertex List === @@ -198,12 +200,12 @@ def write_UVCoordsList(data, mesh): uvdata = cStringIO.StringIO() uvcoords = {} uvidx = 0 - for i in range(len(mesh.faces)): + for i, f in enumerate(mesh.faces): if not i%100 and meshtools.show_progress: Blender.Window.DrawProgressBar(float(i)/len(mesh.faces), "Writing UV Coords") - numfaceverts = len(mesh.faces[i].v) - for j in range(numfaceverts-1, -1, -1): # Reverse order - u,v = mesh.faces[i].uv[j] + numfaceverts = len(f) + for j in xrange(numfaceverts-1, -1, -1): # Reverse order + u,v = f.uv[j] if not uvcoords.has_key((u,v)): uvcoords[(u,v)] = uvidx uvidx += 1 @@ -219,14 +221,14 @@ def write_UVCoordsList(data, mesh): # === Write Face List === def write_FaceList(data, mesh, uvcoords): data.write(struct.pack("<l", len(mesh.faces))) - for i in range(len(mesh.faces)): + for i in xrange(len(mesh.faces)): if not i%100 and meshtools.show_progress: Blender.Window.DrawProgressBar(float(i)/len(mesh.faces), "Writing Faces") numfaceverts = len(mesh.faces[i].v) data.write(struct.pack("<B", 0x10)) # Cull Back Faces Flag data.write(struct.pack("<h", numfaceverts)) data.write(struct.pack("<h", 0)) # Material Index - for j in range(numfaceverts-1, -1, -1): # Reverse order + for j in xrange(numfaceverts-1, -1, -1): # Reverse order index = mesh.faces[i].v[j].index if mesh.hasFaceUV(): uv = mesh.faces[i].uv[j] @@ -243,12 +245,12 @@ def generate_vcol(mesh): data.write(struct.pack("<l", len(mesh.faces))) uniquecolors = {} unique_alpha = {} - for i in range(len(mesh.faces)): + for i in xrange(len(mesh.faces)): if not i%100 and meshtools.show_progress: Blender.Window.DrawProgressBar(float(i)/len(mesh.faces), "Writing Vertex Colors") numfaceverts = len(mesh.faces[i].v) data.write(struct.pack("<ll", i, numfaceverts)) - for j in range(numfaceverts-1, -1, -1): # Reverse order + for j in xrange(numfaceverts-1, -1, -1): # Reverse order r = mesh.faces[i].col[j].r g = mesh.faces[i].col[j].g b = mesh.faces[i].col[j].b @@ -276,13 +278,25 @@ def generate_unit(): # === Generate Mat1 (Material) Chunk === # ====================================== def generate_mat1(mesh): + + def get_crufty_mesh_image(): + '''Crufty because it only uses 1 image + ''' + if mesh.hasFaceUV(): + for f in me.faces: + i = f.image + if i: + return i.filename + data = cStringIO.StringIO() data.write(struct.pack("<h", 0)) data.write(struct.pack("<ccB", "p", "a", 0)) data.write(struct.pack("<fff", 1.0, 1.0, 1.0)) # rgb (0.0 - 1.0) data.write(struct.pack("<fffff", 1, 1, 0, 0, 1)) - if mesh.hasFaceUV(): - tex_mapname = r"c:\image\maps\one-dot.tga" + + tex_mapname = get_crufty_mesh_image() + + if tex_mapname: data.write("t:") data.write(struct.pack("<B", 0x00)) data.write(struct.pack("<h", len(tex_mapname))) @@ -301,10 +315,11 @@ def generate_grou(name): return data.getvalue() def fs_callback(filename): - if filename.find('.cob', -4) <= 0: filename += '.cob' + if not filename.lower().endswith('.cob'): filename += '.cob' write(filename) -Blender.Window.FileSelector(fs_callback, "Export COB") +if __name__ == '__main__': + Blender.Window.FileSelector(fs_callback, "Export COB", Blender.sys.makename(ext='.cob')) # === Matrix Differences between Blender & trueSpace === # diff --git a/release/scripts/truespace_import.py b/release/scripts/truespace_import.py index ff655e1614c..31cb48b468a 100644 --- a/release/scripts/truespace_import.py +++ b/release/scripts/truespace_import.py @@ -156,7 +156,7 @@ def read_ObjectName(data): def read_LocalAxes(data): location = struct.unpack("<fff", data.read(12)) rotation_matrix=[] - for i in range(3): + for i in xrange(3): row = struct.unpack("<fff", data.read(12)) #print "% f % f % f" % row rotation_matrix.append(list(row)) @@ -166,7 +166,7 @@ def read_LocalAxes(data): # === Read Current Position === def read_CurrentPosition(data): transformation_matrix=[] - for i in range(3): + for i in xrange(3): row = struct.unpack("<ffff", data.read(16)) #print "% f % f % f % f" % row transformation_matrix.append(list(row)) @@ -176,7 +176,7 @@ def read_CurrentPosition(data): def read_VertexList(data): verts = [] numverts, = struct.unpack("<l", data.read(4)) - for i in range(numverts): + for i in xrange(numverts): if not i%100 and meshtools.show_progress: Blender.Window.DrawProgressBar(float(i)/numverts, "Reading Verts") x, y, z = struct.unpack("<fff", data.read(12)) @@ -187,7 +187,7 @@ def read_VertexList(data): def read_UVCoords(data): uvcoords = [] numuvcoords, = struct.unpack("<l", data.read(4)) - for i in range(numuvcoords): + for i in xrange(numuvcoords): if not i%100 and meshtools.show_progress: Blender.Window.DrawProgressBar(float(i)/numuvcoords, "Reading UV Coords") uv = struct.unpack("<ff", data.read(8)) @@ -201,7 +201,7 @@ def read_UVCoords(data): def read_FaceList(data, chunk): faces = [] ; facesuv = [] numfaces, = struct.unpack("<l", data.read(4)) - for i in range(numfaces): + for i in xrange(numfaces): if not i%100 and meshtools.show_progress: Blender.Window.DrawProgressBar(float(i)/numfaces, "Reading Faces") @@ -214,7 +214,7 @@ def read_FaceList(data, chunk): data.read(2) # Material Index facev = [] ; faceuv = [] - for j in range(numfaceverts): + for j in xrange(numfaceverts): index, uvidx = struct.unpack("<ll", data.read(8)) facev.append(index); faceuv.append(uvidx) facev.reverse() ; faceuv.reverse() @@ -274,5 +274,6 @@ def read(filename): def fs_callback(filename): read(filename) -Blender.Window.FileSelector(fs_callback, "Import COB") +if __name__ == '__main__': + Blender.Window.FileSelector(fs_callback, "Import COB", '*.cob') |