Skip to content
Snippets Groups Projects
io_export_unreal_psk_psa.py 86.1 KiB
Newer Older
        
        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()