[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [1789] trunk/py/scripts/addons/ io_export_unreal_psk_psa.py: Fixed bone roll copy.

John Phan darkneter at gmail.com
Tue Apr 5 23:47:32 CEST 2011


Revision: 1789
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=1789
Author:   darknet
Date:     2011-04-05 21:47:31 +0000 (Tue, 05 Apr 2011)
Log Message:
-----------
Fixed bone roll copy.

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

Modified: trunk/py/scripts/addons/io_export_unreal_psk_psa.py
===================================================================
--- trunk/py/scripts/addons/io_export_unreal_psk_psa.py	2011-04-05 18:02:05 UTC (rev 1788)
+++ trunk/py/scripts/addons/io_export_unreal_psk_psa.py	2011-04-05 21:47:31 UTC (rev 1789)
@@ -2004,93 +2004,58 @@
 class OBJECT_OT_UTRebuildArmature(bpy.types.Operator):
     bl_idname = "object.utrebuildarmature"  # XXX, name???
     bl_label = "Rebuild Armature"
-    __doc__ = "Roll bone rotation not working yet. It rebuild the select armature object scrape to raw setup build."
+    __doc__ = "If mesh is deform when importing to unreal engine try this. It rebuild the bones one at the time by select one armature object scrape to raw setup build."
     
     def invoke(self, context, event):
-        #print("Init Export Script:")
-        
+        currentbone = [] #select armature for roll copy
         for obj in bpy.data.objects:
-            #print(dir(obj))
             if obj.type == 'ARMATURE' and obj.select == True:
                 print("Armature Name:",obj.name)
-                #print(dir(obj.data))
-                objectname = "armaturedata"
-                meshname ="ArmatureObject"
+                objectname = "ArmatureDataPSK"
+                meshname ="ArmatureObjectPSK"
                 armdata = bpy.data.armatures.new(objectname)
                 ob_new = bpy.data.objects.new(meshname, armdata)
                 bpy.context.scene.objects.link(ob_new)
+                bpy.ops.object.mode_set(mode='OBJECT')
                 for i in bpy.context.scene.objects: i.select = False #deselect all objects
                 ob_new.select = True
-                bpy.context.scene.objects.active = ob_new
+                bpy.context.scene.objects.active = obj
+                
+                bpy.ops.object.mode_set(mode='EDIT')
+                #print("number of bones:",len(obj.data.edit_bones))
+                for bone in obj.data.edit_bones:
+                    #print(dir(bone))
+                    #print("roll",(bone.roll))
+                    if bone.parent != None:
+                        #print([bone.name,bone.roll,bone.roll,None])
+                        currentbone.append([bone.name,bone.roll])
+                    else:
+                        currentbone.append([bone.name,bone.roll])
                 bpy.ops.object.mode_set(mode='OBJECT')
-                #bpy.ops.object.mode_set(mode='EDIT')
-                print("number of bones:",len(obj.data.edit_bones))
-                #for ib in range(len( obj.data.bones)):
-                    #print("bone name:",obj.data.edit_bones[ib].name)
-                    #print("bone name:",dir(bone))
-                    #editbone = obj.data.edit_bones[ib]
-                    #print("bone dir",dir(editbone))
-				
-				
-                #bpy.ops.object.mode_set(mode='EDIT')
-                print("=====================")
-                #for bone in obj.data.edit_bones:
-                    #print("bone name:",bone.name)
-                    #print("edit bone name:",dir(bone))
-                print("=====================")
-                print("data object:",dir(obj.data))
+                for i in bpy.context.scene.objects: i.select = False #deselect all objects
+                bpy.context.scene.objects.active = ob_new
                 bpy.ops.object.mode_set(mode='EDIT')
+                
                 for bone in obj.data.bones:
-                    print("bone name:",bone.name)
+                    #print("bone name:",bone.name)
                     bpy.ops.object.mode_set(mode='EDIT')
                     newbone = ob_new.data.edit_bones.new(bone.name)
-                    #print("parent:",bone.parent.name)
-                    newbone.head = bone.head
-                    newbone.tail = bone.tail
-                    #newbone.roll = bone.roll
-                    print(dir(bone))
-                    #print((bone.bbone_z))
-                    #newbone.matrix = bone.matrix
-                    newbone.roll = bone.bbone_z
-                    if bone.parent != None:
-                        print("Found!",bone.parent.name)
-                        parentbone = ob_new.data.edit_bones[bone.parent.name]
-                        newbone.parent = parentbone						
-                    else:
-                        print("Not found!")
                     newbone.head = bone.head_local
                     newbone.tail = bone.tail_local
-                    #newbone.matrix = bone.matrix_local
-                    
-                    #print(dir(newbone))
-                    
-                    #if  bone.name != bone.parent:
-                        #print("parent:",bone.parent.name)
-                        #parentbone = ob_new.data.edit_bones[bone.parent]
-                        #newbone.parent = parentbone
-						
-                '''
-                bpy.ops.object.mode_set(mode='OBJECT')#it need to go into object mode to able to select the faces
-                #print("Mesh found!",obj.name)
-                #print(len(obj.data.faces))
-                for face in obj.data.faces:
-                    #print(dir(face))
-                    if face.use_smooth == True:
-                        face.select = True
-                        #print("selected:",face.select)
-                    else:
-                        face.select = False
-                    #print("selected:",face.select)
-                    #print(("smooth:",face.use_smooth))
-                #bpy.context.scene.update()
-                bpy.ops.object.mode_set(mode='EDIT')
-                '''
-                #bpy.context.scene.objects.link(ob_new)
+                    for bonelist in currentbone:
+                        if bone.name == bonelist[0]:
+                            #print("found",bonelist[1])
+                            newbone.roll = bonelist[1]
+                            break
+                    if bone.parent != None:
+                        parentbone = ob_new.data.edit_bones[bone.parent.name]
+                        newbone.parent = parentbone
+                print("Rebuild Armture Finish:",ob_new.name)
                 bpy.context.scene.update()
                 break
-        #objects = bpy.data.objects
-        
+        self.report({'INFO'}, "Rebuild Armature Finish!")
         return{'FINISHED'}
+		
 def menu_func(self, context):
     #bpy.context.scene.unrealexportpsk = True
     #bpy.context.scene.unrealexportpsa = True



More information about the Bf-extensions-cvs mailing list