3DTiles Next, Subtree --(Problems encountered in testing 3DTiles)(Upload 3dfiles next file)

Hello, everyone
I am passing 3dfiles_ implicit_ Tiling tests the new features of 3dfiles next. But I have encountered some problems. When loading 3dfiles next, there is an error: cannot read property ‘implicitcoordinates’ of undefined. How to solve this problem.
I suspect that it is the problem of the tile availability binary data file (bin file), but the specification of this bin file is not mentioned in the official document. How to store this bin file. Is there any specification?
Looking forward to the answer, thank you.
NextTest.rar (2.8 MB)
This is the 3dtiles I generated, and the next.json is the 3dtiles next entry file, tileset_ b3dm. json is a common 3dtiles entry file. Please help me find the problem, thank you.

How to store this bin file. Is there any specification?

The format is described in the Implicit Tiling section of the specification. The relevant sections are

I know, this looks complicated at the first glance. But I’ll try to focus on what may be wrong with the example that you provided.

A small disclaimer: It can be difficult to debug something like this. The input data can have many different errors. I tried to analyze the data. And I found a few things that seem to be wrong. But I can not say for sure that this is really the reason for the error.


The error seems to be in the Data/subtree/0_0_0_0.subtree file. The JSON part of this file is the following:

{
   "buffers":[
      {
         "byteLength":74
      }
   ],
   "bufferViews":[
      {
         "buffer":0,
         "byteLength":74,
         "byteOffset":0
      }
   ],
   "tileAvailability":{
      "bitstream":0
   },
   "contentAvailability":[
      {
         "bitstream":0
      }
   ],
   "childSubtreeAvailability":{
      "constant":0
   }
}

It is a bit unusual that tileAvailability and contentAvailability refer to the same bitstream. But this is not necessarily wrong: It only means that every available tile also has content.

But there is one important point in the specification, in the tile availability section:

  • If a non-root tile’s availability is 1, its parent tile’s availability shall also be 1.

I tried to extract the relevant information from your subtree file, and it seems like this is not the case here. My test prints the following:

Is (level=2, (3,1,1)) available? true
Is (level=1, (1,0,0)) available? false
Is (level=0, (0,0,0)) available? true

(This is just one example - there seem to be several other cases like this).

The point is: When the tile (level=2, (3,1,1)) is available, then its parent tile (level=1, (1,0,0)) also has to be available.

(If this really is the reason for the error, and if you change this, then this means that your tileAvailability and contentAvailability will be different, and will no longer use the same bitstream).


A debugging hint: I came to the assumption that this might be the reason for the error because it reached the line cesium/Implicit3DTileContent.js at a8c27a25fc4d810788a8c30f3e8ea8ba0b773fc7 · CesiumGS/cesium · GitHub in a case where the parentTile was undefined. But I’m not sure whether this is the right track.

Thank you very much for your reply. I am checking these problems you mentioned. Thank you again.