I’m looking at ways to stream large geospatial datasets that represent a collection of photos. The each photo would have a position associated with it. These collections may have thousands of photos so I don’t want to just download a single file with all the data. I would like to stream it so it works on low bandwidth devices. I’m trying to figure out if 3D tiles is a possible solution to this problem.
The problem is that there isn’t any well defined graphics associated with how the photo location should be represented. If I had a defined graphics for how I wanted to present the photo (eg, a colored dot, or a 3d frustum, or a floating thumbnail) then it would be straight forward to build a 3D tileset that streams this. However, the graphic style is something I would prefer to leave up to the application to decide.
At this point I’m thinking if I did use 3D tiles I would embed multiple graphic representations and then use 3DTileStyles to control which is visible.
- Has anyone done something similar?
- Any recommendations for other streaming formats that would support this?
Just some questions/brainstorming:
The ‘position’ that you mentioned is (I guess) not only a position, but probably something that represents a ~“camera setup”, right? At least, I could imagine that for many application cases, it would be necessary (or at least useful/interesting) to have the (eye) position and the view direction. (And the aspect ratio. And aperture. And shutter speed. And resolution. And…
)
Another question is what the image format should be. Options could be: 1. Define an extension for 3D Tiles that allows images as the tile content, or 2. just shove the whole thing into a glTF that only stores the image. (Both could even handle a “level of detail” with low/high-resolution images for the same place…)
As for the visual representation of the positions: I’m not sure whether something has to be “stored” for that at all. If this is only about the position/orientation of the camera, then all required information is contained in the tile transform. It could be a client-side decision about how to visualize that. (Think of the current debugShowBoundingVolumes
for tilesets, but … more sophisticated and configurable).
If there’s more information than just the position/orientation, then there also are different options, but I think that would depend on whether (and how) that information should be provided at all, and whether it should be stored in the tileset JSON itself, or somehow stored in the tile content.
Another question is what the image format should be
Probalby a list of several formats would be supported. I was also thinking of storing them as separate files referenced by a URL. The full photo may be large and only would be needed to be loaded if the user wanted to review it. No
As for the visual representation of the positions: I’m not sure whether something has to be “stored” for that at all .
I agree. Ideally it would not store a visual representation. Just let the application determine how to represent it. But then that means the application has to hook into the 3D Tiles visibilty changes and then do the work to manage the visuals. That would make it harder for others to consume since they could not just load up the 3d tileset and get something in the view. Though maybe it is a combo where the tileset includes a basic point represnetation and then the application can do more advanced processing if it wants somethign else.