Skip to content
Snippets Groups Projects
io_export_unreal_psk_psa.py 86.1 KiB
Newer Older
  • Learn to ignore specific revisions
  •         
            return{'FINISHED'}
    
    		
    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."
        
        def invoke(self, context, event):
            #print("Init Export Script:")
            
            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"
                    armdata = bpy.data.armatures.new(objectname)
                    ob_new = bpy.data.objects.new(meshname, armdata)
                    bpy.context.scene.objects.link(ob_new)
                    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.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))
                    bpy.ops.object.mode_set(mode='EDIT')
                    for bone in obj.data.bones:
                        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)
                    bpy.context.scene.update()
                    break
            #objects = bpy.data.objects
            
            return{'FINISHED'}
    
    def menu_func(self, context):
    
    Luca Bonavita's avatar
    Luca Bonavita committed
        #bpy.context.scene.unrealexportpsk = True
        #bpy.context.scene.unrealexportpsa = True
        default_path = os.path.splitext(bpy.data.filepath)[0] + ".psk"
    
        self.layout.operator(ExportUDKAnimData.bl_idname, text="Skeleton Mesh / Animation Data (.psk/.psa)").filepath = default_path
    
    Luca Bonavita's avatar
    Luca Bonavita committed
        bpy.types.INFO_MT_file_export.append(menu_func)
    
    Luca Bonavita's avatar
    Luca Bonavita committed
        bpy.types.INFO_MT_file_export.remove(menu_func)
    
    Luca Bonavita's avatar
    Luca Bonavita committed
        register()