Showing off my 3D building renderer

I recently mentioned this on Slack, but I’m sure people here would be interested in this too. A couple of years ago I started a project to display a 3D rendered version of any specified building in your web browser, using live data from OSM. The other 3D map services grab the data and render whole regions on a schedule. In theory someone could probably turn this into a JOSM plug-in to visualize a building from a pending changeset before it gets pushed to OSM.

19 Likes

interesting, very fluid even on an old phone. It seems it doesn’t interpret the “roof:shape” tag yet.

Here is an example for a more complex building that renders okish
https://beakerboy.github.io/OSMBuilding/index.html?id=8035487

here some problems:
https://beakerboy.github.io/OSMBuilding/index.html?type=relation&id=3376015

(this is what it looks like in F4

It does support several roof shapes. However, calculating the shape of a gabled roof is difficult.

1 Like

neat! it renders a bandstand i mapped nicely:
https://beakerboy.github.io/OSMBuilding/index.html?id=297997038

2 Likes

I think on the Trajan’s Column, the fact that there is a building part outside of the building is a problem. The OSM spec says that the building must surround all of its parts.

Also, I think my script might not be smart enough to combine multiple linear ways into an enclosed shape. In this particular building, it there a reason the outer square has to be two separate L-shaped lines?

Also, I think my script might not be smart enough to combine multiple linear ways into an enclosed shape. In this particular building, it there a reason the outer square has to be two separate L-shaped lines?

in this particular case I don’t know why it was done like this, not my work, but generally it is not uncommon for multipolygons to have several linear outer ways which only together form a ring.

The Simple 3D Buildings schema says that the outline has to be completely filled with building parts (“The entire building outline should be filled with building:part= areas”), but doesn’t say that they have to be all of its parts. Building parts can also hang over the outline (“If at least one part of a building is hanging over the building footprint”), but in this case the schema suggests to group all the parts in a type=building relation.

1 Like

The Simple 3D Buildings schema says that the outline has to be completely filled with building parts

Thank you, you are correct. However, rendering parts where not a single node appears inside the building presents issues. You would have to scan the area to see if there is a separate building that surrounds this building, that the part should be associated with.

Nice, looks good. It gets the bulding i tagged recently pretty good

https://beakerboy.github.io/OSMBuilding/index.html?type=relation&id=1766500

Thanks, will have to check this out more often espacially when trying to tag something. A nice tool! I shared it in the small matrix osm-3d room as well :slight_smile: https://matrix.to/#/#osm-3d:matrix.org

It looks very good ! I’ve tested with a building that I’ve finished today : the Ryugyong Hotel. Even if I don’t understand why some part are grey and not blue ?

Beakerboy/OSMBuilding render

F4map

2 Likes

That has to be a bug. Thanks!

1 Like

@Koreller I figured out the issue with the incorrect color. The way I have interpreted the standard is the roof is the entire shape above the building. In the case of a domed, pyramid, or hipped roof, everything above the “building” would be “roofing” material. However, for skillion and gabled roof shapes, there is still “wall” in the roof section. I was using the base colour tag to override the color of the “wall of a roof” if that makes sense. I’ll have to reevaluate that.

So, if the objects had

colour = blue
roof:color = grey
building:color = blue

It should work.

Yeah I think it’s a bad idea to use the colour=* tag who doesn’t mean anything (for me) in concrete terms, so I don’t use it (and I wouldn’t use it).

By the way I’ve had the same issue on this (on the green area) :

Beakerboy/OSMBuilding render

F4map

Also thanks a lot for your tool which is very useful and fun to use!

1 Like

As someone who’s focused in reconstructing buildings in OSM (to the point of having the building levels and roof shape quests in StreetComplete enabled), this will definitively come in handy should this be ported to JOSM since I rely on OSMWorld which is a bit clunky to use for this situation.

One thing I did notice is that building:min_levels isn’t taken into account, though building:min_height is. I assume it’s still a missing feature?

@ManuelB701 Yes, that feature is missing. I assume 3 meters per floor, so it should be easy to get that in.

2 Likes

For anyone reading this thread who knows javascript: I’m more than happy to take any advice, assistance, or pull requests. Even if you don’t know javascript and want to learn, I’m happy to help you implement a feature you want.

4 Likes

Nidaros cathedral looks nice also, though there is some trouble with the roof direction.

https://beakerboy.github.io/OSMBuilding/index.html?id=417245741

Thanks. I’ve seen this a few times myself. I’ve just started adding unit tests to this project, so I’ll be able to simulate and diagnose what’s going on easier.

@dieterdreist I added some code to combine multiple open ways into a closed three.Shape object that OSMBuilding can work with. Trajan’s Column looks better now, although it’s still missing the top spire.

Edit: the top spire appears to actually be a statue, so it’s all good. Thanks for the kick in the butt to fix this.

1 Like