53
53
# ***** END GPL LICENCE BLOCK *****
55
55
import Blender, meshtools
61
msg = "Error: you need a full Python install to run this script."
62
meshtools.print_boxed(msg)
63
Blender.Draw.PupMenu("ERROR%t|"+msg)
65
62
# ===============================
66
63
# ====== Read Radio Format ======
67
64
# ===============================
68
65
def read(filename):
66
start = Blender.sys.time()
70
67
file = open(filename, "rb")
71
68
mesh = Blender.NMesh.GetRaw()
72
69
#mesh.addMaterial(Blender.Material.New())
71
NULL_UV3= [ (0,0), (0,1), (1,1) ]
72
NULL_UV4= [ (0,0), (0,1), (1,1), (1,0) ]
74
75
# === Object Name ===
75
76
namelen, = struct.unpack("<h", file.read(2))
76
77
objname, = struct.unpack("<"+`namelen`+"s", file.read(namelen))
78
79
# === Vertex List ===
80
Vert= Blender.NMesh.Vert
79
81
numverts, = struct.unpack("<l", file.read(4))
80
for i in range(numverts):
81
if not i%100 and meshtools.show_progress:
82
Blender.Window.DrawProgressBar(float(i)/numverts, "Reading Verts")
83
x, y, z = struct.unpack("<fff", file.read(12))
84
mesh.verts.append(Blender.NMesh.Vert(x, y, z))
83
# Se we can run in a LC
85
x,y,z= struct.unpack('<fff', file.read(12))
88
mesh.verts= [_vert_() for i in xrange(numverts)]
86
92
# === Face List ===
93
Face= Blender.NMesh.Face
94
Col= Blender.NMesh.Col
87
95
numfaces, = struct.unpack("<l", file.read(4))
88
for i in range(numfaces):
89
if not i%100 and meshtools.show_progress:
90
Blender.Window.DrawProgressBar(float(i)/numfaces, "Reading Faces")
96
for i in xrange(numfaces):
97
#if not i%100 and meshtools.show_progress:
98
# Blender.Window.DrawProgressBar(float(i)/numfaces, "Reading Faces")
92
face = Blender.NMesh.Face()
93
101
numfaceverts, = struct.unpack("<b", file.read(1))
95
for j in range(numfaceverts):
96
index, = struct.unpack("<h", file.read(2))
97
face.v.append(mesh.verts[index])
100
r, g, b, a = struct.unpack("<BBBB", file.read(4))
101
vertexcolor = Blender.NMesh.Col(r, g, b, a)
102
face.col.append(vertexcolor)
105
face.uv = [ (0,0), (0,1), (1,1) ]
107
struct.unpack("<h", file.read(2))[0]] for j in xrange(numfaceverts)\
111
face.col= [ Col(r, g, b, a) \
113
for r,g,b,a in ( struct.unpack("<BBBB", file.read(4)), )]
107
face.uv = [ (0,0), (0,1), (1,1), (1,0) ]
110
122
mesh.faces.append(face)
112
# ->tools.create_mesh(verts, faces, objname):
113
Blender.NMesh.PutRaw(mesh, objname)
114
object = Blender.Object.GetSelected()
115
object[0].name=objname
116
# ->tools.create_mesh(verts, faces, objname):
124
scn= Blender.Scene.GetCurrent()
125
for obj in scn.getChildren():
128
obj= Blender.Object.New('Mesh', objname)
133
obj.Layers= scn.Layers
118
135
Blender.Window.DrawProgressBar(1.0, '') # clear progressbar
121
#seconds = " in %.2f %s" % (end-start, "seconds")
122
message = "Successfully imported " + Blender.sys.basename(filename)# + seconds
137
end = Blender.sys.time()
138
message = 'Successfully imported "%s" in %.2f seconds' % (Blender.sys.basename(filename), end-start)
123
139
meshtools.print_boxed(message)
125
def fs_callback(filename):
128
Blender.Window.FileSelector(fs_callback, "Import Radio")
144
Blender.Draw.PupMenu('ERROR%t|Error: you need a full Python install to run this script')
147
Blender.Window.FileSelector(read, "Import Radio", Blender.sys.makename(ext='.radio'))
149
if __name__ == '__main__':