Merging obj models to a fbx model each as a different layer

33 Views Asked by At

Im trying to get a list of obj model paths and merge them all to a single fbx model where every obj becomes a seperate layer in the final fbx. Im using autodesk fbx sdk for python.

I tried this code

import fbx

def import_obj_to_fbx(obj_filename, fbx_manager, scene):
    importer = fbx.FbxImporter.Create(fbx_manager, "")
    importer.Initialize(obj_filename, -1)
    node = fbx.FbxNode.Create(scene, "")
    importer.Import(scene)
    importer.Destroy()
    return node

def merge_models(obj_filenames, output_fbx_filename):
    fbx_manager = fbx.FbxManager.Create()
    scene = fbx.FbxScene.Create(fbx_manager, "")

    for i, obj_filename in enumerate(obj_filenames):
        layer_name = f"Layer_{i}"
        node = import_obj_to_fbx(obj_filename, fbx_manager, scene)
        layer = fbx.FbxDisplayLayer.Create(scene, layer_name)
        layer.AddMember(node)

    exporter = fbx.FbxExporter.Create(fbx_manager, "")
    exporter.Initialize(output_fbx_filename, -1)
    exporter.Export(scene)
    exporter.Destroy()

    fbx_manager.Destroy()

if __name__ == "__main__":
    obj_files = ["model1.obj", "model2.obj", "model3.obj"]
    output_fbx_file = "merged_model.fbx"
    merge_models(obj_files, output_fbx_file)

The fbx was exported with the correct layers but all the geometry from the obj was in the default layer. Cant figure out how to put the obj geometry into the respective layer.

0

There are 0 best solutions below