-
Notifications
You must be signed in to change notification settings - Fork 471
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
Vector tiles #124
Vector tiles #124
Conversation
I am part way through this. Made some edits in 47d6089. Please update the status section of the main README.md.
Perhaps better named
Similar comment.
I can see the use case for polylines, but are we sure about this for polygons? CC @bagnell |
We need to know the individual indices/positions of the polygons for picking and/or dynamically changing the polygons (we need to re-batch or reorder draw calls). |
Ah, OK |
I added this to a tasklist at the top of this PR. Please add any other items that need to be addressed before this is merged, e.g., review by @bagnell, etc. |
If both `POSITION` and `POSITION_QUANTIZED` are defined, the higher precision `POSITION` will be used. | ||
Per-feature semantics specific to a feature type are prefixed with the name of the feature type. e.g. `POLYGON` for polygons and `POLYLINE` for polylines. | ||
|
||
At least one global `LENGTH` semantic must be defined. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here and below in the Global Semantics
table, I don't think we need to require this. Throughout 3D Tiles if length is zero (e.g., no feature table), the tile doesn't need to be rendered. Requiring that one of these be defined still does not guarantee that one is non-zero so it is not really a meaningful requirement.
Actually, my question is if this is for supporting triangle soup, and if so why can't we just require indices for polygons? |
We'll also need to change the pnts and i3dm spec, but the Perhaps
|
Also consider renaming For example, |
As discussed offline, I would drop this for now until we have the full game plan for extrusions, etc. |
TileFormats/VectorData/README.md
Outdated
|
||
### Examples | ||
|
||
This example will define positions for polylines, but the same procedure is applied for polygons as well. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't expect this to be true.
Polygons should always have indices.
Polylines should optionally have indices.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Polylines should optionally have indices.
Or not have indices and just be strips.
Made a few tweaks in 09f1222, and also removed |
Can we make this explicit from #24?
We should also be explicit that polygons do not have self-intersections (in WGS84 coordinates). |
Can we allow per-feature indices arrays to either be |
Same comment for batch ids throughout the spec. |
During my discussion with @bagnell, I did bring this up, but he said it was reasonable to support both. If that changes, I'm happy to adjust the spec. |
Given the "fast by default" spirit of 3D Tiles, I see no reason to encourage triangle soup. |
We also need to define if polygons and polylines are sub-sampled as geodesics or rhumb lines. This can be a global semantic as I think this needs to be an optional instead of just, for example, always going with rhumb lines. |
@bagnell after discussing offline with @lasalvavida, can we explore a more concise representation for positions for ground clamped positions? I think we can do even better than quantized x, y, z by taking advantage of the fact that the positions are on the ground. Longitude/latitude is the obvious choice, but would require a lot of precision and runtime conversion. Perhaps something in the tile's tangent plane or angular measurements from the tile's center. The key is to not require many bits, but still have good precise by using a local origin, and to have a fast conversion to WGS84 for rendering. |
I agree. @lasalvavida We discussed this offline, but what are |
Isn't that the same as latitude/longitude or do you mean polar coordinates in the tangent plane?
I like this idea, but I would be concerned with points on the plane with large distances to the ellipsoid. We would also run into the same problems that we have with triangulating polygons on the tangent plane in Cesium. Can we restrict the tile regions so they can never get that big? Another idea is to store them in 2D ( |
Polar coordinates in the tangent plane
All good points, the question still remains:
Perhaps profile to see how bad Cartographic-to-Cartesian is in practice. Perhaps there are optimizations if the points are all close by (there are definitely optimizations, for example, when the points are on the same line of longitude or latitude). No rush, but we should explore or decide to punt before finalizing the initialize spec. |
Thanks for the initial work here @lasalvavida! I'm closing this since the format has changed significantly. I merged your commits to the |
@bagnell @pjcozzi, this should be ready for a look.
This is largely based on the existing vector tiles implementation, but I have made some tweaks to make it more consistent with the way that the
i3dm
andpnts
specifications work.TODO