~ubuntu-branches/ubuntu/gutsy/blender/gutsy-security

« back to all changes in this revision

Viewing changes to release/scripts/nendo_import.py

  • Committer: Bazaar Package Importer
  • Author(s): Lukas Fittl
  • Date: 2006-09-20 01:57:27 UTC
  • mfrom: (1.2.4 upstream)
  • Revision ID: james.westby@ubuntu.com-20060920015727-gmoqlxwstx9wwqs3
Tags: 2.42a-1ubuntu1
* Merge from Debian unstable (Closes: Malone #55903). Remaining changes:
  - debian/genpot: Add python scripts from Lee June <blender@eyou.com> to
    generate a reasonable PO template from the sources. Since gettext is used
    in a highly nonstandard way, xgettext does not work for this job.
  - debian/rules: Call the scripts, generate po/blender.pot, and clean it up
    in the clean target.
  - Add a proper header to the generated PO template.
* debian/control: Build depend on libavformat-dev >= 3:0.cvs20060823-3.1,
  otherwise this package will FTBFS

Show diffs side-by-side

added added

removed removed

Lines of Context:
41
41
edges during the course of modeling.
42
42
"""
43
43
 
44
 
# $Id: nendo_import.py,v 1.7 2005/12/19 17:21:55 ianwill Exp $
 
44
# $Id: nendo_import.py,v 1.10 2006/07/03 20:17:40 campbellbarton Exp $
45
45
#
46
46
# +---------------------------------------------------------+
47
47
# | Copyright (c) 2001 Anthony D'Agostino                   |
70
70
# ***** END GPL LICENCE BLOCK *****
71
71
 
72
72
import Blender, meshtools
73
 
import struct, time, sys, os
 
73
try:
 
74
        import struct, os
 
75
except:
 
76
        struct= None
74
77
 
75
78
# =============================
76
79
# === Read Nendo 1.x Format ===
77
80
# =============================
78
81
def read(filename):
79
 
        start = time.clock()
 
82
        start = Blender.sys.time()
 
83
        
 
84
        scn= Blender.Scene.GetCurrent()
 
85
        for obj in scn.getChildren():
 
86
                obj.sel= 0
 
87
                
80
88
        file = open(filename, "rb")
81
89
        version, numobjs = read_header(file)
82
90
 
83
 
        for object in range(numobjs):
 
91
        for object in xrange(numobjs):
84
92
                good, = struct.unpack(">B",  file.read(1))
85
93
                if not good: continue   # an empty object
86
94
                objname = read_object_flags(file)
94
102
 
95
103
        Blender.Window.DrawProgressBar(1.0, "Done")    # clear progressbar
96
104
        file.close()
97
 
        end = time.clock()
 
105
        end = Blender.sys.time()
98
106
        seconds = " in %.2f %s" % (end-start, "seconds")
99
 
        message = "Successfully imported " + os.path.basename(filename) + seconds
 
107
        message = "Successfully imported " + filename.split(Blender.sys.sep)[-1] + seconds
100
108
        message += " (%s)" % version.title()
101
109
        meshtools.print_boxed(message)
102
110
 
130
138
def read_edge_table(file, version):
131
139
        numedges, = struct.unpack(">H", file.read(2))
132
140
        edge_table = {}
133
 
        for i in range(numedges):
 
141
        for i in xrange(numedges):
134
142
                if not i%100 and meshtools.show_progress:
135
143
                        Blender.Window.DrawProgressBar(float(i)/numedges, "Reading Edge Table")
136
144
                edge = struct.unpack(">8H", file.read(16))
146
154
def read_face_table(file):
147
155
        numfaces, = struct.unpack(">H", file.read(2))
148
156
        face_table = {}
149
 
        for i in range(numfaces):
 
157
        for i in xrange(numfaces):
150
158
                if not i%100 and meshtools.show_progress:
151
159
                        Blender.Window.DrawProgressBar(float(i)/numfaces, "Reading Face Table")
152
160
                face_table[i] = struct.unpack(">H", file.read(2))[0]
158
166
def read_vert_table(file):
159
167
        numverts, = struct.unpack(">H", file.read(2))
160
168
        vert_table = []
161
 
        for i in range(numverts):
 
169
        for i in xrange(numverts):
162
170
                if not i%100 and meshtools.show_progress:
163
171
                        Blender.Window.DrawProgressBar(float(i)/numverts, "Reading Vertex Table")
164
172
                w, x, y, z = struct.unpack(">H3f", file.read(14))
196
204
        [0.0,-0.1, 0.0, 0.0],
197
205
        [0.0, 0.0, 0.0, 1.0]]
198
206
        verts = []
199
 
        for i in range(len(vert_table)):
 
207
        for i in xrange(len(vert_table)):
200
208
                vertex = vert_table[i][1]
201
209
                vertex = meshtools.apply_transform(vertex, matrix)
202
210
                verts.append(vertex)
207
215
# =======================
208
216
def make_face_table(edge_table): # For Nendo
209
217
        face_table = {}
210
 
        for i in range(len(edge_table)):
 
218
        for i in xrange(len(edge_table)):
211
219
                Lf = edge_table[i][2]
212
220
                Rf = edge_table[i][3]
213
 
                face_table[Lf] = i
214
 
                face_table[Rf] = i
 
221
                face_table[Lf] = face_table[Rf] = i
215
222
        return face_table
216
223
 
217
224
# =======================
219
226
# =======================
220
227
def make_vert_table(edge_table): # For Nendo
221
228
        vert_table = {}
222
 
        for i in range(len(edge_table)):
 
229
        for i in xrange(len(edge_table)):
223
230
                Sv = edge_table[i][1]
224
231
                Ev = edge_table[i][0]
225
 
                vert_table[Sv] = i
226
 
                vert_table[Ev] = i
 
232
                vert_table[Sv] = vert_table[Ev]= i
227
233
        return vert_table
228
234
 
229
235
# ==================
233
239
        face_table = make_face_table(edge_table)
234
240
        faces=[]
235
241
        #for i in range(len(face_table)):
236
 
        for i in face_table.keys(): # avoids a whole class of errors
 
242
        for i in face_table.iterkeys(): # avoids a whole class of errors
237
243
                face_verts = []
238
244
                current_edge = face_table[i]
239
245
                while(1):
250
256
                faces.append(face_verts)
251
257
        return faces
252
258
 
253
 
def fs_callback(filename):
254
 
        read(filename)
255
 
 
256
 
Blender.Window.FileSelector(fs_callback, "Import Nendo")
 
259
 
 
260
def main():
 
261
        if not struct:
 
262
                Blender.Draw.PupMenu('This importer requires a full python install')
 
263
                return
 
264
        
 
265
        Blender.Window.FileSelector(read, 'Import Nendo', '*.ndo')
 
266
 
 
267
if __name__=='__main__':
 
268
        main()
 
269