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

« back to all changes in this revision

Viewing changes to release/scripts/radiosity_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:
24
24
file to open.
25
25
"""
26
26
 
27
 
# $Id: radiosity_import.py,v 1.8 2005/12/19 17:21:55 ianwill Exp $
 
27
# $Id: radiosity_import.py,v 1.11 2006/07/03 04:12:53 campbellbarton Exp $
28
28
#
29
29
# +---------------------------------------------------------+
30
30
# | Copyright (c) 2002 Anthony D'Agostino                   |
53
53
# ***** END GPL LICENCE BLOCK *****
54
54
 
55
55
import Blender, meshtools
56
 
#import time
57
56
 
58
57
try:
59
58
        import struct
60
59
except:
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)
 
60
        struct= None
64
61
 
65
62
# ===============================
66
63
# ====== Read Radio Format ======
67
64
# ===============================
68
65
def read(filename):
69
 
        #start = time.clock()
 
66
        start = Blender.sys.time()
70
67
        file = open(filename, "rb")
71
68
        mesh = Blender.NMesh.GetRaw()
72
69
        #mesh.addMaterial(Blender.Material.New())
73
 
 
 
70
        
 
71
        NULL_UV3= [ (0,0), (0,1), (1,1) ]
 
72
        NULL_UV4= [ (0,0), (0,1), (1,1), (1,0) ]
 
73
        
 
74
        
74
75
        # === Object Name ===
75
76
        namelen, = struct.unpack("<h",  file.read(2))
76
77
        objname, = struct.unpack("<"+`namelen`+"s", file.read(namelen))
77
78
 
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))
85
 
 
 
82
        
 
83
        # Se we can run in a LC
 
84
        def _vert_():
 
85
                x,y,z= struct.unpack('<fff', file.read(12))
 
86
                return Vert(x, y, z)
 
87
        
 
88
        mesh.verts= [_vert_() for i in xrange(numverts)]
 
89
        del _vert_
 
90
        
 
91
        
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")
91
99
 
92
 
                face = Blender.NMesh.Face()
 
100
                
93
101
                numfaceverts, = struct.unpack("<b", file.read(1))
94
 
 
95
 
                for j in range(numfaceverts):
96
 
                        index, = struct.unpack("<h", file.read(2))
97
 
                        face.v.append(mesh.verts[index])
98
 
 
99
 
                for j in range(4):
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)
103
 
 
104
 
                if len(face.v) == 3:
105
 
                        face.uv = [ (0,0), (0,1), (1,1) ]
 
102
                
 
103
                
 
104
                face = Face(\
 
105
                 [\
 
106
                 mesh.verts[\
 
107
                  struct.unpack("<h", file.read(2))[0]] for j in xrange(numfaceverts)\
 
108
                 ]
 
109
                )
 
110
                
 
111
                face.col= [ Col(r, g, b, a) \
 
112
                for j in xrange(4)\
 
113
                for r,g,b,a in ( struct.unpack("<BBBB", file.read(4)), )]
 
114
                
 
115
                if len(face) == 3:
 
116
                        face.uv = NULL_UV3
106
117
                else:
107
 
                        face.uv = [ (0,0), (0,1), (1,1), (1,0) ]
 
118
                        face.uv = NULL_UV4
108
119
 
 
120
                
109
121
                face.mode = 0
110
122
                mesh.faces.append(face)
111
123
 
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):
117
 
 
 
124
        scn= Blender.Scene.GetCurrent()
 
125
        for obj in scn.getChildren():
 
126
                obj.sel= 0
 
127
        
 
128
        obj= Blender.Object.New('Mesh', objname)
 
129
        mesh.name= objname
 
130
        obj.link(mesh)
 
131
        scn.link(obj)
 
132
        obj.sel= 1
 
133
        obj.Layers= scn.Layers
 
134
        
118
135
        Blender.Window.DrawProgressBar(1.0, '')  # clear progressbar
119
136
        file.close()
120
 
        #end = time.clock()
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)
124
140
 
125
 
def fs_callback(filename):
126
 
        read(filename)
127
 
 
128
 
Blender.Window.FileSelector(fs_callback, "Import Radio")
 
141
 
 
142
def main():
 
143
        if not struct:
 
144
                Blender.Draw.PupMenu('ERROR%t|Error: you need a full Python install to run this script')
 
145
                return
 
146
        
 
147
        Blender.Window.FileSelector(read, "Import Radio", Blender.sys.makename(ext='.radio'))
 
148
 
 
149
if __name__ == '__main__':
 
150
        main()