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

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'release/scripts/radiosity_export.py')
-rw-r--r--release/scripts/radiosity_export.py89
1 files changed, 89 insertions, 0 deletions
diff --git a/release/scripts/radiosity_export.py b/release/scripts/radiosity_export.py
new file mode 100644
index 00000000000..f87f8a1ef19
--- /dev/null
+++ b/release/scripts/radiosity_export.py
@@ -0,0 +1,89 @@
+#!BPY
+
+"""
+Name: 'Radiosity...'
+Blender: 232
+Group: 'Export'
+Tooltip: 'Export selected mesh (with vertex colors) to Radiosity File Format (*.radio)'
+"""
+
+# +---------------------------------------------------------+
+# | Copyright (c) 2002 Anthony D'Agostino |
+# | http://ourworld.compuserve.com/homepages/scorpius |
+# | scorpius@compuserve.com |
+# | April 11, 2002 |
+# | Released under the Blender Artistic Licence (BAL) |
+# | Import Export Suite v0.5 |
+# +---------------------------------------------------------+
+# | Read and write Radiosity File Format (*.radio) |
+# +---------------------------------------------------------+
+
+import Blender
+#import time
+import mod_flags, mod_meshtools
+try:
+ import struct
+except:
+ msg = "Error: you need a full Python install to run this script."
+ mod_meshtools.print_boxed(msg)
+
+# ================================
+# ====== Write Radio Format ======
+# ================================
+def write(filename):
+ #start = time.clock()
+ file = open(filename, "wb")
+
+ objects = Blender.Object.GetSelected()
+ objname = objects[0].name
+ meshname = objects[0].data.name
+ mesh = Blender.NMesh.GetRaw(meshname)
+ obj = Blender.Object.Get(objname)
+
+ if not mesh.hasVertexColours():
+ message = "Please assign vertex colors before exporting.\n"
+ message += objname + " object was not saved."
+ mod_meshtools.print_boxed(message)
+ return
+
+ # === Object Name ===
+ file.write(struct.pack("<h", len(objname)))
+ file.write(struct.pack("<"+`len(objname)`+"s", objname))
+
+ # === Vertex List ===
+ file.write(struct.pack("<l", len(mesh.verts)))
+ for i in range(len(mesh.verts)):
+ if not i%100 and mod_flags.show_progress:
+ Blender.Window.DrawProgressBar(float(i)/len(mesh.verts), "Writing Verts")
+
+ x, y, z = mesh.verts[i].co
+ file.write(struct.pack("<fff", x, y, z))
+
+ # === Face List ===
+ file.write(struct.pack("<l", len(mesh.faces)))
+ for i in range(len(mesh.faces)):
+ if not i%100 and mod_flags.show_progress:
+ Blender.Window.DrawProgressBar(float(i)/len(mesh.faces), "Writing Faces")
+
+ file.write(struct.pack("<b", len(mesh.faces[i].v)))
+ for j in range(len(mesh.faces[i].v)):
+ file.write(struct.pack("<h", mesh.faces[i].v[j].index))
+
+ for j in range(4): # .col always has a length of 4
+ file.write(struct.pack("<BBBB", mesh.faces[i].col[j].r,
+ mesh.faces[i].col[j].g,
+ mesh.faces[i].col[j].b,
+ mesh.faces[i].col[j].a))
+
+ Blender.Window.DrawProgressBar(1.0, '') # clear progressbar
+ file.close()
+ #end = time.clock()
+ #seconds = " in %.2f %s" % (end-start, "seconds")
+ message = "Successfully exported " + Blender.sys.basename(filename)# + seconds
+ mod_meshtools.print_boxed(message)
+
+def fs_callback(filename):
+ if filename.find('.radio', -6) <= 0: filename += '.radio'
+ write(filename)
+
+Blender.Window.FileSelector(fs_callback, "Radio Export")