A) Would you like to have a detailed description how to convert the OSM 3D tagging into a VR scene?
B) Would you like to have an all new software to 3D render OSM?
B1) Would you like it in a new programming language with some great concepts but still annoying memory management: Zig?
B2) Or would you like a stable and save language, building native, mobile and Web and not that hard to learn: Rust.
C1) Would you like just an OSM Building inspector, showing the actual view directly from the OSM database? (May be with editing them.)
C2) Or an Earth wide 3D tile renderer
C21) just as a 2.5 rendering to place on 2D tiles
C22) or a 3D on tile maps like F4Map or Streets.gl
C23) or like the only really full scale 3D renderer OSM2World?
D1) Would you like to have an more detailed overview of all existing Rust crates, related to OSM?
D2) And would you like to have all this crates harmonised by defined APIs to use them like Lego brigs to build OSM 3D tools?
I would like to have all of this. I would even like to make all of this.
Would you like to participate? In which one of them above?
I am not in prison, no time to code or write all of this. But I started with C1+B2:
âOBIâ in short. You may try it like this:
A small legend would be nice where you describe what button does what. I figured now arrow keys and additionally A and Y to tile the object itself left or right and S and X tilts it backwards and forwards, for example. R for resetting the object (not the viewport).
I was trying to find a âcamera up and downâ ^^
Buildings may get replaced by parts. If there is no relation, only the position/footprint tells, if the part getâs visible. First, I did not care and just rendered all parts. That got slow, if a large area with many parts is rendered. As I already had a bounding box for each way, I added this lines speeded the code:
Even the first line drops up to 50% of the parts. But thats only a raw roll. Inspecting a building should not show other parts outside. I spied in the code of BakerBoyâs âOSMBuildingâ and fount a function âinsideâ. We disagree, but I think, only if ALL nodes are inside, the part is inside. But it did not work, nodes/parts are calculated outside, even if in the ID editor, it is clearly not so. I did ask for the code of OSM2World but not Streets-GL or the new Josm viewer. (Please maintainer, show me the used function).
I asked an AI to write me an âinsideâ code: not working. I checked for Rust libraries for âinsideâ and found crate geo. It is strange: If I use the LineString (like a way) I can only check if a point is ON that line. If I use the crates MultiPolygon, it works, mostly. The geo-calculations cause small differences. Or the user may have set a Node slightly outside. The solution came from OSM2World: If 99% of the part area is inside the building, it counts.
Building in Building?
After the âinsideâ worked, I checked an area around St.Pauls in London and observed flickering walls.
INSERT VIDEO
The debugger showed, there are parts of the outer building and an inner building at the same place. A mapper seems to have sorted the parts and overseen the inner building. Is there any allowed or meaningful construct to have a building inside a building, except this two:
A building may get bigger above a neighbouring building.
Inside of âholesâ of a building may be another building.
But there never should be a building fully inside of another building, ok? We could have a check tool, may be a challenge for Keep-Right?
Not all of it?
The OSM wiki says âThe entire building outline should be filled with building:part=* areas,âŚâ. Well âshouldâ is not âmustâ. And there are quite some buildings with remaining of the âouterâ. OSM2World drops the outer if only 40% are left. That would not work here. Could we have criteria like: the building tags include roof:*?
Or shall we add the missing part(s), a tool/Keep-Right?