Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tileset LOD parent and child render at the same time #7007

Closed
riematrix opened this issue Sep 6, 2018 · 11 comments
Closed

Tileset LOD parent and child render at the same time #7007

riematrix opened this issue Sep 6, 2018 · 11 comments

Comments

@riematrix
Copy link

Hi,
I followed the tileset example and fall into this problem. No matter how do I set the SSE or bounding volume, the refinement act strangely that either parent node and child node render at the same time or they don't show at all.
My data contains 2 level tiles. A single parent and it's children.

Data ### https://drive.google.com/open?id=1wdHxCpFgjPZMMjngMgLDUSRJoisrutDT

code
3D Tiles Photogrammetry szyl.html.zip

PS, is there any tile set generator for converting existing LOD .obj tiles to cesium tilesets?

@likangning93
Copy link
Contributor

Hi @riematrix, your tileset.json file specifies ADD in the refine field, when it seems like what you want is REPLACE. Take a look at the specification here: https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification#refinement

The spec and 3d-tiiles-tools projects are also a place to start for converting existing obj tiles to tilesets, but Cesium ion is also going to have the ability to tile large photogrammetry models.

@riematrix
Copy link
Author

@likangning93 I batch removed all the children's refine field this time, the problem still occurs. I'm sure I have the "REPLACE" on the root's refine field.

@a0026
Copy link

a0026 commented Sep 11, 2018

The same problem !

@mramato
Copy link
Contributor

mramato commented Sep 11, 2018

@riematrix and @a0026 does setting tileset.skipLevelOfDetails = false make the problem go away?

@likangning93 @lilleyse could this be related to #7011 (or perhaps another bug introduced in the recent traversal changes?)

@likangning93 likangning93 reopened this Sep 11, 2018
@likangning93
Copy link
Contributor

@riematrix sorry for closing prematurely! I took a deeper look, and I noticed that the tileset provided isn't spec compliant. According to the current 3D Tiles specification, when a tile points to an external tileset it cannot have children. See here: https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification#external-tilesets

You may have to refactor your tileset transforms a bit. Remember that transformations in a 3D Tileset are chained, so it may be easiest to have one transformation that puts the tileset where it needs to be on the Earth in the root and have either very small or nonexistent transformations for each tile.

@a0026 please let us know if you have the same problem in #7026.

@likangning93
Copy link
Contributor

@lilleyse since it seems like this might be something that users encounter frequently, should Cesium check and throw some kind of exception for this case?

@lilleyse
Copy link
Contributor

lilleyse commented Sep 11, 2018

@likangning93 Yeah it seems like that is the problem. The root tile is refining to both the level 5 tile and the level 6 tiles simultaneously. The problem occurs in previous version of Cesium too (tried 1.48 and 1.45). It looks like a data issue rather than a Cesium bug.

Debugging demo I've been using for testing

@lilleyse
Copy link
Contributor

lilleyse commented Sep 11, 2018

@lilleyse since it seems like this might be something that users encounter frequently, should Cesium check and throw some kind of exception for this case?

Hard to say, I haven't seen this problem until now. We try not to do too much validation client side and prefer to offload that to the 3D Tiles validator, well once it's ready.

@mramato
Copy link
Contributor

mramato commented Sep 11, 2018

I would strongly suggest that anything that is simple to check for, is a fairly common mistake, and does not affect performance is something we spit out a console warning for. (unless unrecoverable, then a RuntimeError).

Not everyone is going to run the validator and not everyone is even in control of generating the tileset. It will create a lot of noise in our issue tracker and the forum if we have to continual help people debug their tilesets for things that Cesium could have easily checked for.

That being said, it sounds like this might not be a common mistake, so maybe just put it on the radar and see if it pops up again?

@a0026
Copy link

a0026 commented Sep 13, 2018

@riematrix sorry for closing prematurely! I took a deeper look, and I noticed that the tileset provided isn't spec compliant. According to the current 3D Tiles specification, when a tile points to an external tileset it cannot have children. See here: https://github.com/AnalyticalGraphicsInc/3d-tiles/tree/master/specification#external-tilesets

You may have to refactor your tileset transforms a bit. Remember that transformations in a 3D Tileset are chained, so it may be easiest to have one transformation that puts the tileset where it needs to be on the Earth in the root and have either very small or nonexistent transformations for each tile.

@a0026 please let us know if you have the same problem in #7026.

Hello. I do have the same problem in #7026, and I will try as you mentioned before. Thanks!

@riematrix
Copy link
Author

@likangning93 @mramato Thanks for the additional specification. I wrote a tileset converter to generate an internally linked tileset for our quad tree .obj data set. Finally the problem disappears.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants