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

Allow for resolution CLI flag below 0.5, eg up to 0.0001 #62

Open
jo-chemla opened this issue Dec 17, 2024 · 1 comment
Open

Allow for resolution CLI flag below 0.5, eg up to 0.0001 #62

jo-chemla opened this issue Dec 17, 2024 · 1 comment

Comments

@jo-chemla
Copy link

Hi there,
Thanks for this open-source OGC-3Dtiles pnts tiler, pretty fast and customizable CLI! Also pretty great that the 2.0.1 version stores coordinates and transforms in local CRS that is then transformed to EPSG:4978 via only the root transform.

We produce some pretty massive tilesets, a few billion points, of photogrammetric 3d-scans done via ground + drone captures - not purely airborne lidar - and I noticed the tiles have a pretty small extent with maximumScreenSpaceError: 1px in CesiumJS and there are lots of them. Plus Cesium using a depth-first rather than breadth-first approach at loading children tiles makes the problem pretty apparent in our case - just opened an issue here.

I tried enforcing a resolution that matches the points spacing at highest resolution, 0.1mm on some focus areas, to see if the resulting tiles would be bigger, but got the error message

gocesiumtiler/cmd/main.go

Lines 202 to 203 in adb1649

if c.resolution < 0.5 || c.resolution > 1000 {
log.Fatal("resolution should be between 1 and 1000 meters")
resolution should be between 1 and 1000 meters

Would it be possible to allow for resolution of 0.0001m (0.1 mm)? Do you think this could solve the described problem, or maybe I should try enforcing a min-points-per-tile of 10k or 20k?

@jo-chemla jo-chemla changed the title Allow for resolution below 0.5 Allow for resolution CLI flag below 0.5, eg up to 0.0001 Dec 17, 2024
@mfbonfigli
Copy link
Owner

I am not sure if I understand exaxtly the problem here, if not please correct me.

I can certainly change the resolution flag bounds however I'm not confident this will solve your issues. Setting the resolution value to 1mm means that the coarser LOD will contain at least 1 point per mm3 which is a very high value you probably don't want.

This will certainly reduce the depth of the tree Cesium traverses, but I expect the resulting root pnts/glb files to be very large, kind of defeating the purpose of the streaming format.

If the problem is the size and depth of the tile tree you should jointly use depth and min-points-per-tile flags.

depth controls the number of LODs, allowing you to create shallower or deeper trees of tiles. min-points-per-tile allows to stop the creation of a new LOD for a tile in case there are not enough points, which helps optimize the tree making it less deep where not needed.

resolution instead influences how many points are put at each non-leaf LOD. Lower values mean more points, doubling at every level of detail. Leaf nodes always contain all remaining points so resolution doesn't really play a role there.

Without knowing the details of your point clouds (eg extents in meters and number of points) and also more specific description of the issues you are facing it's hard to give advice on the settings to try here.

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

2 participants