[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [768] trunk/py/scripts/addons/ export_directx_x.py: SVN maintenance and PEP8 (except E501).

gsr b3d gsr.b3d at infernal-iceberg.com
Fri Jul 9 22:12:08 CEST 2010


Revision: 768
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-extensions&revision=768
Author:   gsrb3d
Date:     2010-07-09 22:12:08 +0200 (Fri, 09 Jul 2010)

Log Message:
-----------
SVN maintenance and PEP8 (except E501).

Modified Paths:
--------------
    trunk/py/scripts/addons/export_directx_x.py

Property Changed:
----------------
    trunk/py/scripts/addons/export_directx_x.py

Modified: trunk/py/scripts/addons/export_directx_x.py
===================================================================
--- trunk/py/scripts/addons/export_directx_x.py	2010-07-09 13:28:08 UTC (rev 767)
+++ trunk/py/scripts/addons/export_directx_x.py	2010-07-09 20:12:08 UTC (rev 768)
@@ -1,870 +1,996 @@
- #  ***** GPL LICENSE BLOCK *****
- #
- #  This program is free software: you can redistribute it and/or modify
- #  it under the terms of the GNU General Public License as published by
- #  the Free Software Foundation, either version 3 of the License, or
- #  (at your option) any later version.
- #
- #  This program is distributed in the hope that it will be useful,
- #  but WITHOUT ANY WARRANTY; without even the implied warranty of
- #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- #  GNU General Public License for more details.
- #
- #  You should have received a copy of the GNU General Public License
- #  along with this program.  If not, see <http://www.gnu.org/licenses/>.
- #  All rights reserved.
- #  ***** GPL LICENSE BLOCK *****
-
-#One line description for early versions of Blender 2.52.
-"Export: DirectX Model Format (.x)"
-
-bl_addon_info = {
-    'name': 'Export: DirectX Model Format (.x)',
-    'author': 'Chris Foster (Kira Vakaan)',
-    'version': '1.1',
-    'blender': (2, 5, 3),
-    'location': 'File > Export',
-    'description': 'Export to the DirectX Model Format',
-    'wiki_url': 'http://wiki.blender.org/index.php/Extensions:2.5/Py/' \
-        'Scripts/File_I-O/DirectX_Exporter',
-    'tracker_url': 'https://projects.blender.org/tracker/index.php?'\
-        'func=detail&aid=22795&group_id=153&atid=469',
-    'category': 'Import/Export'}
-"""
-Name: 'DirectX Exporter'
-Blender: 252
-Group: 'Export'
-Tooltip: 'Exports to the DirectX model file format (.x)'
-"""
-
-__author__="Chris Foster (Kira Vakaan)"
-__url__="www.tobedecided.com"
-__version__="1.1"
-__bpydoc__="""\
-"""
-
-import bpy
-from math import radians
-from mathutils import *
-import os
-
-
-#Container for the exporter settings
-class DirectXExporterSettings:
-    def __init__(self,
-                 context,
-                 FilePath,
-                 CoordinateSystem=1,
-                 RotateX=True,
-                 FlipNormals=False,
-                 ApplyModifiers=False,
-                 IncludeFrameRate=False,
-                 ExportTextures=True,
-                 ExportArmatures=False,
-                 ExportAnimation=0,
-                 ExportMode=1,
-                 Verbose=False):
-        self.context=context
-        self.FilePath=FilePath
-        self.CoordinateSystem=int(CoordinateSystem)
-        self.RotateX=RotateX
-        self.FlipNormals=FlipNormals
-        self.ApplyModifiers=ApplyModifiers
-        self.IncludeFrameRate=IncludeFrameRate
-        self.ExportTextures=ExportTextures
-        self.ExportArmatures=ExportArmatures
-        self.ExportAnimation=int(ExportAnimation)
-        self.ExportMode=int(ExportMode)
-        self.Verbose=Verbose
-
-def LegalName(Name):
-    NewName=Name.replace(".","_")
-    NewName=NewName.replace(" ","_")
-    if NewName[0].isdigit() or NewName in ["ARRAY","DWORD","UCHAR","BINARY","FLOAT","ULONGLONG","BINARY_RESOURCE","SDWORD","UNICODE","CHAR","STRING","WORD","CSTRING","SWORD","DOUBLE","TEMPLATE"]:
-        NewName="_"+NewName
-    return NewName
-
-def ExportDirectX(Config):
-    print("----------\nExporting to {}".format(Config.FilePath))
-    if Config.Verbose: print("Opening File...",end=" ")
-    Config.File=open(Config.FilePath,"w")
-    if Config.Verbose: print("Done")
-    
-    if Config.Verbose: print("Generating Object list for export...",end=" ")
-    if Config.ExportMode==1:
-        Config.ExportList=[Object for Object in Config.context.scene.objects if Object.type in ("ARMATURE","EMPTY","MESH") and Object.parent==None]
-    else:
-        ExportList=[Object for Object in Config.context.selected_objects if Object.type in ("ARMATURE","EMPTY","MESH")]
-        Config.ExportList=[Object for Object in ExportList if Object.parent not in ExportList]
-    if Config.Verbose: print("Done")
-    
-    if Config.Verbose: print("Setting up...",end=" ")
-    Config.SystemMatrix=Matrix()
-    if Config.RotateX:
-        Config.SystemMatrix*=RotationMatrix(radians(-90),4,"X")
-    if Config.CoordinateSystem==1:
-        Config.SystemMatrix*=ScaleMatrix(-1,4,Vector((0,1,0)))
-    Config.InverseSystemMatrix=Config.SystemMatrix.copy().invert()
-    
-    if Config.ExportAnimation:
-        CurrentFrame=bpy.context.scene.frame_current
-        bpy.context.scene.frame_current=bpy.context.scene.frame_current
-    if Config.Verbose: print("Done")
-    
-    if Config.Verbose: print("Writing Header...",end=" ")
-    WriteHeader(Config)
-    if Config.Verbose: print("Done")
-    
-    Config.Whitespace=0
-    Config.ObjectList=[]
-    if Config.Verbose: print("Writing Objects...")
-    WriteObjects(Config,Config.ExportList)
-    if Config.Verbose: print("Done")
-    
-    if Config.ExportAnimation:
-        if Config.IncludeFrameRate:
-            if Config.Verbose: print("Writing Frame Rate...",end=" ")
-            Config.File.write("{}AnimTicksPerSecond {{\n".format("  "*Config.Whitespace))
-            Config.Whitespace+=1
-            Config.File.write("{}{};\n".format("  "*Config.Whitespace,int(bpy.context.scene.render.fps/bpy.context.scene.render.fps_base)))
-            Config.Whitespace-=1
-            Config.File.write("{}}}\n".format("  "*Config.Whitespace))
-            if Config.Verbose: print("Done")
-        if Config.Verbose: print("Writing Animation...")
-        WriteAnimationSet(Config)
-        bpy.context.scene.frame_current=CurrentFrame
-        if Config.Verbose: print("Done")
-    
-    CloseFile(Config)
-    print("Finished")
-
-def GetObjectChildren(Parent):
-    return [Object for Object in Parent.children if Object.type in ("ARMATURE","EMPTY","MESH")]
-
-def GetMeshVertexCount(Mesh):
-    VertexCount=0
-    for Face in Mesh.faces:
-        VertexCount+=len(Face.verts)
-    return VertexCount
-
-def GetMaterialTexture(Material):
-    if Material:
-        ImageTextures=[Material.texture_slots[TextureSlot].texture for TextureSlot in Material.texture_slots.keys() if Material.texture_slots[TextureSlot].texture.type=="IMAGE"]
-        ImageFiles=[os.path.basename(Texture.image.filename) for Texture in ImageTextures if Texture.image.source=="FILE"]
-        if ImageFiles:
-            return ImageFiles[0]
-    return None
-
-def WriteHeader(Config):
-    Config.File.write("xof 0303txt 0032\n\n")
-    if Config.ExportArmatures:
-        Config.File.write("template XSkinMeshHeader {\n\
-  <3cf169ce-ff7c-44ab-93c0-f78f62d172e2>\n\
-  WORD nMaxSkinWeightsPerVertex;\n\
-  WORD nMaxSkinWeightsPerFace;\n\
-  WORD nBones;\n\
-}\n\n\
-template SkinWeights {\n\
-  <6f0d123b-bad2-4167-a0d0-80224f25fabb>\n\
-  STRING transformNodeName;\n\
-  DWORD nWeights;\n\
-  array DWORD vertexIndices[nWeights];\n\
-  array float weights[nWeights];\n\
-  Matrix4x4 matrixOffset;\n\
-}\n\n")
-
-def WriteObjects(Config,ObjectList):
-    Config.ObjectList+=ObjectList
-    
-    for Object in ObjectList:
-        if Config.Verbose: print("  Writing Object: {}...".format(Object.name))
-        Config.File.write("{}Frame {} {{\n".format("  "*Config.Whitespace,LegalName(Object.name)))
-        
-        Config.Whitespace+=1
-        if Config.Verbose: print("    Writing Local Matrix...",end=" ")
-        WriteLocalMatrix(Config,Object)
-        if Config.Verbose: print("Done")
-        
-        if Config.ExportArmatures and Object.type=="ARMATURE":
-            Armature=Object.data
-            ParentList=[Bone for Bone in Armature.bones if Bone.parent==None]
-            if Config.Verbose: print("    Writing Armature Bones...")
-            WriteArmatureBones(Config,Object,ParentList)
-            if Config.Verbose: print("    Done")
-        
-        ChildList=GetObjectChildren(Object)
-        if Config.Verbose: print("    Writing Children...")
-        WriteObjects(Config,ChildList)
-        if Config.Verbose: print("    Done Writing Children")
-        
-        if Object.type=="MESH":
-            if Config.Verbose: print("    Generating Mesh...",end=" ")
-            Mesh=Object.create_mesh(bpy.context.scene,(Config.ApplyModifiers|Config.ExportArmatures),"PREVIEW")
-            if Config.Verbose: print("Done")
-            if Config.Verbose: print("    Writing Mesh...")
-            WriteMesh(Config,Object,Mesh)
-            if Config.Verbose: print("    Done")
-            bpy.data.meshes.remove(Mesh)
-        
-        Config.Whitespace-=1
-        Config.File.write("{}}} //End of {}\n".format("  "*Config.Whitespace,LegalName(Object.name)))
-        if Config.Verbose: print("  Done Writing Object: {}".format(Object.name))
-
-def WriteLocalMatrix(Config,Object):
-    if Object.parent:
-        LocalMatrix=Object.parent.matrix_world.copy().invert()
-    else:
-        LocalMatrix=Matrix()
-    LocalMatrix*=Object.matrix_world
-    LocalMatrix=Config.SystemMatrix*LocalMatrix*Config.InverseSystemMatrix
-    
-    Config.File.write("{}FrameTransformMatrix {{\n".format("  "*Config.Whitespace))
-    Config.Whitespace+=1
-    Config.File.write("{}{:9f},{:9f},{:9f},{:9f},\n".format("  "*Config.Whitespace,LocalMatrix[0][0],LocalMatrix[0][1],LocalMatrix[0][2],LocalMatrix[0][3]))
-    Config.File.write("{}{:9f},{:9f},{:9f},{:9f},\n".format("  "*Config.Whitespace,LocalMatrix[1][0],LocalMatrix[1][1],LocalMatrix[1][2],LocalMatrix[1][3]))
-    Config.File.write("{}{:9f},{:9f},{:9f},{:9f},\n".format("  "*Config.Whitespace,LocalMatrix[2][0],LocalMatrix[2][1],LocalMatrix[2][2],LocalMatrix[2][3]))
-    Config.File.write("{}{:9f},{:9f},{:9f},{:9f};;\n".format("  "*Config.Whitespace,LocalMatrix[3][0],LocalMatrix[3][1],LocalMatrix[3][2],LocalMatrix[3][3]))
-    Config.Whitespace-=1
-    Config.File.write("{}}}\n".format("  "*Config.Whitespace))
-
-def WriteArmatureBones(Config,Object,ChildList):
-    PoseBones=Object.pose.bones
-    for Bone in ChildList:
-        if Config.Verbose: print("      Writing Bone: {}...".format(Bone.name),end=" ")
-        Config.File.write("{}Frame {} {{\n".format("  "*Config.Whitespace,LegalName(Object.name)+"_"+LegalName(Bone.name)))
-        Config.Whitespace+=1
-        
-        PoseBone=PoseBones[Bone.name]
-        
-        if Bone.parent:

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list