Convert B3DM json tileset to FBX

I know there are a few topics on this already, but thought I would refresh it.
I have a dataset with json and B3DM tiles
Has anyone successfully batch converted B3DM to glTF or FBX ?

Hello,

The functionality that you are looking for may be covered with the latest version of the 3d-tiles-tools that was just released into npm, at 3d-tiles-tools - npm

A short disclaimer: When you want to “convert” B3DM to glTF, then this usually implies some assumptions about the structure of the B3DM. Specifically: The B3DM may contain features that may not trivially be reflected in a glTF asset.

But when the goal is to mainly extract the GLB (glTF binary) data that is contained in a B3DM, then there are some options for that. For individual files, this can be done with

npx 3d-tiles-tools b3dmToGlb -i ./input/example.b3dm -o ./output/example.glb

When you want to apply this to all contents of a tileset that is given as a tileset.json file, then you can do this with the latest version of the 3d-tiles-tools as well. The basic approach would be to define a ‘pipeline’ file that describes the desired operation. For example, you could define a file myPipeline.json like this:

{
  "input": "./input/tileset.json",
  "output": "./output/tileset.json",
  "tilesetStages": [
    {
      "name": "_b3dmToGlb",
      "description": "Convert B3DM to GLB",
      "contentStages": [
        {
          "name": "b3dmToGlb",
          "description": "Convert each B3DM content into GLB"
        }
      ]
    }
  ]
}

This defines the input tileset and output tileset, and the single operation that should be applied to each content of that tileset - with that single operation being given by the "name": "b3dmToGlb" part.

Executing this with

npx 3d-tiles-tools pipeline -i myPipeline.json

will extract the GLB from each B3DM, and write the resulting tileset into the output directory.

Note: The ‘pipeline’ functionality is offered as a preview feature, and the details may change in future releases. There are some aspects that are not yet decided upon (e.g. how to handle external tilesets). But if you encounter any issues, we can probably resolve them quickly, or show how your task could be solved with a few lines of custom code.

bye
Marco