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.