Streets GL — a new 3D renderer for OSM

Looking really nice! I love to see the progress in my own area as well.

Btw, Ctrl + P reloads the tiles without reloading the whole application. Can be useful if you want to see the latest changes often.

12 Likes

If

  1. bandwidth is slim (got 6-7MB at best over the fixed copper line)
  2. and you keep Streets.gl in an open tab of your web browser
  3. and you don’t want the your mapping speed to suffer, mine does badly in JOSM,

Then set the ‘vertical field of view’ setting of SG as low as 8 or less. Before turning back to mapping zoom out and Streets.gl quickly switches back to the regular OSM carto view which stops the constant data fetching from the site. When done mapping and returning to SG to view the results just zoom-in a little to get the 3D picture back and with the previous post’s tip of Ctrl+P or Ctrl+p, presto pronto you’re back at the auwesome SG view.

2 Likes

It seems like est_min_height is never used, as are other tags with est_ prefix (except est_height). So it’s better to just use conventional tags.
est_height is also really unpopular, but Streets GL supports it.

2 Likes

Yup, programmed the ‘popular’ height tags into a JOSM custom preset with a select box for source:height=* which I’ve given a wrong default so as to force a choice of the origins (yes JOSM has great validations build-in). Happy as a clam.

Meanwhile was tagging an historic tower, brick/stone, pattern visible in close up, on a grass covered and only now noticed the transition zone rendering from street and buildings to grass, not path and the bench has to go, is no more. Auwesomeness comes daily here.

keep it up

1 Like

This renderer is really impressive. Thank you for making this.

From the few minutes I took to explore, here is my quick feedback.
I saw the layer attribute being mentioned previously, that would be good to improve bridges on top of roads. Maybe the tunnel=building_passage would be done with the same king of work?

Apart from this, I only have real minor and very low priority suggestions such as amenity=parking_entrance on buildings that have underground parkings, or man_made=cross for example on top of mountains.

1 Like

I’ve found that side-hipped and round don’t render either for now.
Am I tagging hipped correctly on a semi-detached pair of houses? I can’t get it to render without a gulley in between the two roof sections in either Streets GL or F4Map.
Here is some of my work in East Brighton, England.

Side hipped / equal hipped is not supported yet though requested. When there’s a building with equal hipped but tagged as hipped you get the perfect rendition though so that would only need adding in a translation table as if equal_hipped execute as hipped.

Round as in round along or across works fine too, dome works also but you need to add the real/estimated height or you get a conehead. Cone roof on a round building with tiles produces a flat roof. Apse_gabled is similar to hipped. If the building has a round end and you specify gabled the outcome is a perfect apse_gabled roof, another candidate for adding to a translation table of if X then call Y roof rendering.

I’m defnitely going to visit the coding and tagging of this building in Brighton as it does show what I call (a silvery) cone roof, roof type 8 in this wiki OSM-4D/Roof table - OpenStreetMap Wiki. Can’t get it show up on the ones I mapped. Also seeing onion, good to see that’s implemented.

Edit: So I see the cone was tagged a pyramidal with metal_sheet cover. One more that could be put into the translation table… If cone (on round building) then call pyramidal render routine.

3 Likes

I’v given this a couple of minutes, but I need to nip out now

If half-hipped is too difficult to implement… maybe render as hipped?

I do sometimes, but one tenet is that you tag your syntax for OSM and not for any given renderer.
Maybe Streets GL should render as hipped when it sees half-hipped tag rather than defaulting to flat.

1 Like

That just about defines the extent of my 3D descriptive capabilities.
I’m really enjoying 3D modelling, It takes the skill to a whole new dimension.

side_hipped and half-hipped don’t seem to be rendered at the time.

Have you considered supporting some OSM4D tags? Some of them are very useful for churches for instance. Absent apse_gabled, for instance, the only possibility to document many churches consists in creating multiple artificial skilions such as in this example.

1 Like

I was playing around with Blender and adding streetlamps to streetsgl (local dev instance):

3 Likes

Looks great! Feel free to make a PR once you feel that it’s ready.
Having the lamps actually emit light at night would be great, but this wouldn’t be easy to implement. Currently, there’s no support for light sources other then the sun.

@StrandedKitty , let me thank you and congratulate you warmly. Your project casts a special light on openstreetmap and hopefully will sparks new interrest in 3D developement.

As you are looking for feedback, here is what I found out after spending a few hours mapping around Bex.

The tag landuse=vineyard isn’t rendered at all, which is unfortunate in a village such as Bex.

As posted earlier, the roof shapes roof:shape=side_hipped orientation=north and roof:shape=half-hipped aren’t rendered at the moment.

I am convinced that while all of them would likely require too much work, some tags from OSM4D would be very useful, in particular apse_gabled as it seems to be the only way to map many churches.

Finally does somone have any suggestion to map the roof of the Saint-Maurice abbey?

Looks great. The road lane transitions of 4 to 2 and 4 or 3 looks odd though given the space along the bend does not change.

Yes, living here in vineyard / olive country, a rendition of these would certainly add texture to the hilly landscape. Plots of grass and farmland do though, but meadow and grassland don’t which look same in Carto standard but different from the normal unmapped surface. Since the tiling of forest/wood/water is greatly delayed at present (3rd party sourcing, SG working on doing their own), looked at the Tollo area where I did a lot few years ago, but nothing by regular green.

I’m still having trouble getting building:part=yes to render with the correct height.
My understanding is that the entire outline of a house should be tagged building=house and should carry building:levels and height which defines the tallest part of the building (excluding minor petrubrances).
Areas within the main building and tagged with building:part=yes should then override the height and levels tags and building:material= with its discrete values.
I find that using building:part= does not suppress this and the building:part can be seen glinting through in my render.
In this example, the overall building height is tagged as 10m, and the single level extensions to the rear I have described as 4m.

2 Likes

In streets gl tags don’t propagate from building outlines to parts. I don’t really know how many 3D buildings in OSM rely on this propagation behaviour, but it seems like not many. So I’m not sure if this is worth implementing.

In your specific case you have a building outline (building=house) with a single part (building:part=yes). Because this part doesn’t completely cover the outline they both get rendered. See Non-building:part parts of buildings are not rendered · Issue #3 · StrandedKitty/streets-gl · GitHub

Thanks for your speedy response.
I’m fairly new to 3D mapping and still struggling with some of its precepts.
Can you suggest the correct way of of tagging such buildings?
I’ve done a house just down the road with a separate building=yes for the rear extension, but I get the feeling that is not the way to proceed.