(As mentioned above: Whether or not the data is wrapped into a 3TZ file is unrelated to this issue. 3TZ is “only” a packaging/convenience format)
Beyond that:
I cannot give any recommendations about tools for converting OBJ to 3D Tiles - except fo the obvious one, https://ion.cesium.com/ . You can upload your OBJ there, and then also download the resulting tileset if you want to. I’d suggest to give it a try, at least.
If the goal is to “improve” an existing tileset that was created with another tool (like the “ESRI-Campus-By-ODM” one in this case), then such an improvement would fall into one of two “categories”:
1. The improvement could essentially “re-tile” the data to create a completely new tileset. This is hardly doable. Very roughly: Depending on the exact structure of the input tileset, this could be prohibitively expensive (in terms of the compuation), and more importantly, it may result in a very poor visual quality.
2. The improvement could try to improve the tileset while keeping the structure of the original tileset.json. This is relatively easy. But any improvement there is limited by the existing structure. As I said, the structure of the “ESRI-Campus-By-ODM” tileset JSON is a bit unusual, in that it looks like this
root
/|\ \ ...
/ | \ \ ...
LOD0 O O O ... 16 children
| | |
LOD1 O O O
| | |
LOD2 O O O
There are 3 LOD levels, but not a real “hierarchy”. Each child is just a “chain” with the different LOD levels. (Again: This is not “good” or “bad” per se. It is what it is…)
Given the limited options (i.e. the fact that it’s hardly possible to re-structure the tileset JSON), what can be done:
It would be relatively easy to process each tile content - i.e. each B3DM file - and perform optimizations on this B3DM file. This would read each B3DM, extract the GLB, “optimize” the GLB (see below), pack the GLB into a B3DM, and write out that resulting B3DM.
“Optimize” here could, for example, mean to simplify the geometry, or apply Draco- or meshopt compression to glTF. Similarly, optimizations like “reducing the texture size” could be doable with a few lines of code. Applying KTX compression would also be easy.
There are many engineering considerations to be taken into account here. On top of the limitation of having to keep the JSON structure, there is the obvious trade-off between “size reduction” and “quality”.
And (this may be important): I don’t know this “ODM” tool. Maybe there already are some configuration parameters in this tool that would result in smaller leaf tiles? Maybe have a look at some of the docs and settings of this tool…
An aside: The 3D Tiles Tools offer the core of that functionality for such an optimization. This would be similar to what is shown in the TileContentProcessingDemo. This shows how to apply Draco- or meshopt compression, and could easily be tweaked to perform (arbitrary) other optimizations (with the engineering question being: “Which ones, exactly?”). But note that this snippet is only a demo - this is not an official tool, and not operating on a public, stable API!