Export multiply objects (with children) using GLTF exporter

Hi,

My goal is to export multiple objects via the bpy.ops.export_scene.gltf function inside a for loop.
It is important to note that each object has its own children.

Problem:
Although it exports 3 different files (with different names), it only takes the latest object from the list.

Let’s say, for example…
I am selecting - obj 1, obj 2, obj 3 → It will create 3 different files with 3 different names, but the content of each file is the same = last object (obj 3).

Any help will be appreciated !

Code:

import bpy
import copy
 
print("********** BLENDER TO WEBGL EXPORTER **********\n")
 
# Set export directory
directory = "C:/Models/...."
 
# Make a list of selected objects
selection = [obj for obj in bpy.context.selected_objects]
print("\nSelected Models List:", selection)
 
bpy.ops.object.select_all(action='DESELECT') #deselect all
 
 
def exportModel(parentModel):      
    print('Exporting Parent: ', parentModel)
 
    # Select all visible objects grouped
    bpy.ops.object.select_grouped(type='CHILDREN_RECURSIVE')
 
    # Select parentModel and make it active
    parentModel.select_set(True)
   
    # Export to GLB/GLTF
    bpy.ops.export_scene.gltf(filepath= directory + parentModel.name + ".glb", export_format="GLB",use_selection = True,  )
 
def loopOverModels():
    # for obj in se
    for parentIndex in range(len(selection)): # 3
       
        # Select current obj
        bpy.data.objects[selection[parentIndex].name].select_set(True)
 
        print("\n=== Object Name:" + selection[parentIndex].name)
        print("\n===Object Index:" + str (parentIndex))
        print ("\n===Object Children:" , selection[parentIndex].children)
 
        # Get object position
        originalPosition = copy.copy(selection[parentIndex].location)
        # Set object location to new position = center.    
        selection[parentIndex].location = (0,0,0)
 
        print("\n ********** EXPORTING ********** \n")
        exportModel(selection[parentIndex])
 
        # Set object position to it's original one.
        selection[parentIndex].location = originalPosition
       
        # Deselect the object
        bpy.ops.object.select_all(action='DESELECT')
 
        print(selection[parentIndex].name +  " - DONE\n====================================" )