Revision: 23554
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=23554
Author:   kazanbas
Date:     2009-09-29 14:16:58 +0200 (Tue, 29 Sep 2009)

Log Message:
-----------
Fixed export scripts: 3DS, OBJ, X3D, FBX. These need testing now.

Modified Paths:
--------------
    trunk/blender/release/scripts/io/export_3ds.py
    trunk/blender/release/scripts/io/export_fbx.py
    trunk/blender/release/scripts/io/export_obj.py
    trunk/blender/release/scripts/io/export_x3d.py

Modified: trunk/blender/release/scripts/io/export_3ds.py
===================================================================
--- trunk/blender/release/scripts/io/export_3ds.py      2009-09-29 09:48:30 UTC 
(rev 23553)
+++ trunk/blender/release/scripts/io/export_3ds.py      2009-09-29 12:16:58 UTC 
(rev 23554)
@@ -559,14 +559,15 @@
                uf = mesh.active_uv_texture.data[i] if do_uv else None
                
                if do_uv:
-                       f_uv =  (uf.uv1, uf.uv2, uf.uv3, uf.uv4) if 
face.verts[3] else (uf.uv1, uf.uv2, uf.uv3)
+                       f_uv = uf.uv
+                       # f_uv =  (uf.uv1, uf.uv2, uf.uv3, uf.uv4) if 
face.verts[3] else (uf.uv1, uf.uv2, uf.uv3)
 #                      f_uv = face.uv
                        img = uf.image if uf else None
 #                      img = face.image
                        if img: img = img.name
 
-               if f_v[3] == 0:
-               # if len(f_v)==3:
+               # if f_v[3] == 0:
+               if len(f_v)==3:
                        new_tri = tri_wrapper((f_v[0], f_v[1], f_v[2]), 
face.material_index, img)
 #                      new_tri = tri_wrapper((f_v[0].index, f_v[1].index, 
f_v[2].index), face.mat, img)
                        if (do_uv): new_tri.faceuvs= uv_key(f_uv[0]), 
uv_key(f_uv[1]), uv_key(f_uv[2])
@@ -1109,11 +1110,12 @@
        # to the class instance from the operator settings before calling.
 
        __props__ = [
-               bpy.props.StringProperty(attr="filename", name="File Name", 
description="File name used for exporting the 3DS file", maxlen= 1024, default= 
""),
+               # bpy.props.StringProperty(attr="filename", name="File Name", 
description="File name used for exporting the 3DS file", maxlen= 1024, default= 
""),
+               bpy.props.StringProperty(attr="path", name="File Path", 
description="File path used for exporting the 3DS file", maxlen= 1024, default= 
""),
        ]
        
        def execute(self, context):
-               save_3ds(self.filename, context)
+               save_3ds(self.path, context)
                return ('FINISHED',)
        
        def invoke(self, context, event):

Modified: trunk/blender/release/scripts/io/export_fbx.py
===================================================================
--- trunk/blender/release/scripts/io/export_fbx.py      2009-09-29 09:48:30 UTC 
(rev 23553)
+++ trunk/blender/release/scripts/io/export_fbx.py      2009-09-29 12:16:58 UTC 
(rev 23554)
@@ -1528,7 +1528,8 @@
                file.write('\n\t\tPolygonVertexIndex: ')
                i=-1
                for f in me.faces:
-                       fi = [v_index for j, v_index in enumerate(f.verts) if 
v_index != 0 or j != 3]
+                       fi = f.verts
+                       # fi = [v_index for j, v_index in enumerate(f.verts) if 
v_index != 0 or j != 3]
 #                      fi = [v.index for v in f]
 
                        # flip the last index, odd but it looks like
@@ -1637,10 +1638,7 @@
                # returns a slice of data depending on number of face verts
                # data is either a MeshTextureFace or MeshColor
                def face_data(data, face):
-                       if f.verts[3] == 0:
-                               totvert = 3
-                       else:
-                               totvert = 4
+                       totvert = len(f.verts)
                                                
                        return data[:totvert]
 
@@ -1740,12 +1738,9 @@
                                i = -1
                                ii = 0 # Count how many UVs we write
                                
-                               for f, uf in zip(me.faces, uvlayer.data):
+                               for uf in uvlayer.data:
 #                              for f in me.faces:
-                                       uvs = [uf.uv1, uf.uv2, uf.uv3, uf.uv4]
-                                       uvs = face_data(uvs, f)
-                                       
-                                       for uv in uvs:
+                                       for uv in uf.uv:
 #                                      for uv in f.uv:
                                                if i==-1:
                                                        file.write('%.6f,%.6f' 
% tuple(uv))
@@ -3356,7 +3351,8 @@
        # to the class instance from the operator settings before calling.
        
        __props__ = [
-               bpy.props.StringProperty(attr="filename", name="File Name", 
description="File name used for exporting the PLY file", maxlen= 1024, 
default=""),
+               bpy.props.StringProperty(attr="path", name="File Path", 
description="File path used for exporting the FBX file", maxlen= 1024, default= 
""),
+               
                bpy.props.BoolProperty(attr="EXP_OBS_SELECTED", name="Selected 
Objects", description="Export selected objects on visible layers", 
default=True),
 #              bpy.props.BoolProperty(attr="EXP_OBS_SCENE", name="Scene 
Objects", description="Export all objects in this scene", default=True),
                bpy.props.FloatProperty(attr="_SCALE", name="Scale", 
description="Scale all data, (Note! some imports dont support scaled 
armatures)", min=0.01, max=1000.0, soft_min=0.01, soft_max=1000.0, default=1.0),
@@ -3389,8 +3385,8 @@
                return context.active_object != None
        
        def execute(self, context):
-               if not self.filename:
-                       raise Exception("filename not set")
+               if not self.path:
+                       raise Exception("path not set")
 
                GLOBAL_MATRIX = mtx4_identity
                GLOBAL_MATRIX[0][0] = GLOBAL_MATRIX[1][1] = GLOBAL_MATRIX[2][2] 
= self._SCALE
@@ -3398,7 +3394,7 @@
                if self._YROT90: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_y90n
                if self._ZROT90: GLOBAL_MATRIX = GLOBAL_MATRIX * mtx4_z90n
                        
-               write(self.filename,
+               write(self.path,
                          None, # XXX
                          context,
                          self.EXP_OBS_SELECTED,

Modified: trunk/blender/release/scripts/io/export_obj.py
===================================================================
--- trunk/blender/release/scripts/io/export_obj.py      2009-09-29 09:48:30 UTC 
(rev 23553)
+++ trunk/blender/release/scripts/io/export_obj.py      2009-09-29 12:16:58 UTC 
(rev 23554)
@@ -153,7 +153,7 @@
                
                elif mat: # No face image. if we havea material search for MTex 
image.
                        for mtex in mat.textures:
-                               if mtex and mtex.texure.type == 'IMAGE':
+                               if mtex and mtex.texture.type == 'IMAGE':
                                        try:
                                                filename = 
copy_image(mtex.texture.image)
 #                                              filename = 
mtex.texture.image.filename.split('\\')[-1].split('/')[-1]
@@ -330,7 +330,8 @@
                return round(v.x, 6), round(v.y, 6), round(v.z, 6)
                
        def veckey2d(v):
-               return round(v.x, 6), round(v.y, 6)
+               return round(v[0], 6), round(v[1], 6)
+               # return round(v.x, 6), round(v.y, 6)
        
        def findVertexGroupName(face, vWeightMap):
                """
@@ -376,7 +377,7 @@
 #      scn = Scene.GetCurrent()
 
        file = open(filename, "w")
-       
+
        # Write Header
        version = "2.5"
        file.write('# Blender3D v%s OBJ File: %s\n' % (version, 
bpy.data.filename.split('/')[-1].split('\\')[-1] ))
@@ -593,11 +594,12 @@
 
                                        tface = uv_layer.data[f_index]
 
-                                       uvs = [tface.uv1, tface.uv2, tface.uv3]
+                                       uvs = tface.uv
+                                       # uvs = [tface.uv1, tface.uv2, 
tface.uv3]
 
-                                       # add another UV if it's a quad
-                                       if f.verts[3] != 0:
-                                               uvs.append(tface.uv4)
+                                       # # add another UV if it's a quad
+                                       # if len(f.verts) == 4:
+                                       #       uvs.append(tface.uv4)
 
                                        for uv_index, uv in enumerate(uvs):
                                                uvkey = veckey2d(uv)
@@ -661,8 +663,8 @@
                        for f_index, f in enumerate(faces):
                                f_v = [{"index": index, "vertex": 
me.verts[index]} for index in f.verts]
 
-                               if f.verts[3] == 0:
-                                       f_v.pop()
+                               # if f.verts[3] == 0:
+                               #       f_v.pop()
 
 #                              f_v= f.v
                                f_smooth= f.smooth
@@ -673,9 +675,10 @@
                                        tface = 
me.active_uv_texture.data[face_index_pairs[f_index][1]]
 
                                        f_image = tface.image
-                                       f_uv= [tface.uv1, tface.uv2, tface.uv3]
-                                       if f.verts[3] != 0:
-                                               f_uv.append(tface.uv4)
+                                       f_uv = tface.uv
+                                       # f_uv= [tface.uv1, tface.uv2, 
tface.uv3]
+                                       # if len(f.verts) == 4:
+                                       #       f_uv.append(tface.uv4)
 #                                      f_image = f.image
 #                                      f_uv= f.uv
                                
@@ -918,7 +921,7 @@
        # to the class instance from the operator settings before calling.
 
        __props__ = [
-               bpy.props.StringProperty(attr="filename", name="File Name", 
description="File name used for exporting the OBJ file", maxlen= 1024, default= 
""),
+               bpy.props.StringProperty(attr="path", name="File Path", 
description="File path used for exporting the OBJ file", maxlen= 1024, default= 
""),
 
                # context group
                bpy.props.BoolProperty(attr="use_selection", name="Selection 
Only", description="", default= False),
@@ -949,7 +952,7 @@
        
        def execute(self, context):
 
-               do_export(self.filename, context,
+               do_export(self.path, context,
                                  EXPORT_TRI=self.use_triangles,
                                  EXPORT_EDGES=self.use_edges,
                                  EXPORT_NORMALS=self.use_normals,

Modified: trunk/blender/release/scripts/io/export_x3d.py
===================================================================
--- trunk/blender/release/scripts/io/export_x3d.py      2009-09-29 09:48:30 UTC 
(rev 23553)
+++ trunk/blender/release/scripts/io/export_x3d.py      2009-09-29 12:16:58 UTC 
(rev 23554)
@@ -604,7 +604,8 @@
 
                for face in mesh.active_uv_texture.data:
                # for face in mesh.faces:
-                       uvs = [face.uv1, face.uv2, face.uv3, face.uv4] if 
face.verts[3] else [face.uv1, face.uv2, face.uv3]
+                       uvs = face.uv
+                       # uvs = [face.uv1, face.uv2, face.uv3, face.uv4] if 
face.verts[3] else [face.uv1, face.uv2, face.uv3]
 
                        for uv in uvs:
                        # for uv in face.uv:
@@ -676,11 +677,11 @@
 
                shininess = mat.specular_hardness/512.0
                # shininess = mat.hard/512.0
-               specR = 
(mat.specular_color[0]+0.001)/(1.25/(mat.specular_reflection+0.001))
+               specR = 
(mat.specular_color[0]+0.001)/(1.25/(mat.specular_intensity+0.001))
                # specR = (mat.specCol[0]+0.001)/(1.25/(mat.spec+0.001))
-               specG = 
(mat.specular_color[1]+0.001)/(1.25/(mat.specular_reflection+0.001))
+               specG = 
(mat.specular_color[1]+0.001)/(1.25/(mat.specular_intensity+0.001))
                # specG = (mat.specCol[1]+0.001)/(1.25/(mat.spec+0.001))
-               specB = 
(mat.specular_color[2]+0.001)/(1.25/(mat.specular_reflection+0.001))
+               specB = 
(mat.specular_color[2]+0.001)/(1.25/(mat.specular_intensity+0.001))
                # specB = (mat.specCol[2]+0.001)/(1.25/(mat.spec+0.001))
                transp = 1-mat.alpha
                # matFlags = mat.getMode()
@@ -1213,7 +1214,7 @@
        # to the class instance from the operator settings before calling.
 
        __props__ = [
-               bpy.props.StringProperty(attr="filename", name="File Name", 
description="File name used for exporting the X3D file", maxlen=1024, 
default=""),
+               bpy.props.StringProperty(attr="path", name="File Path", 
description="File path used for exporting the X3D file", maxlen= 1024, default= 
""),
 
                bpy.props.BoolProperty(attr="apply_modifiers", name="Apply 
Modifiers", description="Use transformed mesh data from each object.", 
default=True),
                bpy.props.BoolProperty(attr="triangulate", name="Triangulate", 
description="Triangulate quads.", default=False),
@@ -1221,7 +1222,7 @@
        ]
        
        def execute(self, context):
-               x3d_export(self.filename, context, self.apply_modifiers, 
self.triangulate, self.compress)
+               x3d_export(self.path, context, self.apply_modifiers, 
self.triangulate, self.compress)
                return ('FINISHED',)
        
        def invoke(self, context, event):


_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to