Kendzi3D - 3D Viewer as plugin for JOSM.

F4 map try to automatically connect building parts with outline and remove outline if it is not necessary. In kendzi3d you need to add all parts and outline to relation type=building then you should get the same result.

Example:
http://www.openstreetmap.org/browse/relation/3208173

Thanks,

However, may be it’s possible to consider implementing the same algorith in Kendzi 3d, as in F4? Currently Kendzi 3d plugin is rather a tool for preparing models for F4 (and possibly other renders) in Josm. It looks very confusing, when you download some building which looks correctly in F4 (renderer), and it is corrupted in Josm/Kendzi 3d (editor).

I don’t see why not, but there are some major problems with it:

  1. F4 for searching polygons inside polygons uses DB function, JOSM don’t have any fast and indexed function for that, so it have to be implemented.
  2. Searching entire data set for polygons inside polygons will be slow.
  3. Personally I think it is an error if building relation don’t exist. I see checking for that more as validation rule.

I will think about it in future but don’t expect it fast…

I agree with Kendzi, don’t expect F4map and Kendzi3D to match on everything.

They are distinct software maintained by distinct people. We could converge to similar rendering on most case (i already got in touch with Kendzi to uniformize some tag handling) but it will never be perfectly matching as we are using different algorithm and technologies.

By the way i’m glad you enjoy both Kendzi3D and F4map.

Yea, I enjoy Kendzi3D and F4map, thanks to you both for your efforts.
:slight_smile:

Different web-browsers may use different algorithms, but they should produce more or less the same result. For example this very page looks the same way in Crome and IE :slight_smile:

I hope that different OSM-3D applications will achieve the same level of convergence, and will follow the same basic conventions. Otherwise OSM-3D will not be usable. Why to use Kendzi3d? Just adjust tags, upload data to osm, and wait to see how it will be rendered in F4.

Regarding building relation – I do not think that is should be a must. The majority of building parts do not have it. What to do with them? Do not render them?

P.S.
At least the basic idea {the building outline should not be extruded if there are building parts} is accepted and not argued. It’s good :slight_smile:

P.P.S.
There are quick and easy to use implementations of the R-Tree for java, e.g. http://sourceforge.net/projects/jsi/ I use it to find junctions :slight_smile:

OSM2World also does not need the relation, but does some funny logic.

It subtracts all building-parts from the building. So, if the building-outline should not be rendered, it must be covered
fully with the building-parts.

I don’t find Kenzi’s approach to bad. Advantage is you have full control: Building should not be rendered →
use relation, otherwise don’t put it to the relation.

F4maps does the same using the same database request :wink:

Doesn’t kendzi (or f4 map) support building parts as lines? I’ve got a building with a glass front (not over the complete height). So I drawed a line on this building site, and set building:part and materiel=glass but this didn’t work. On kendzi plugin the building was completely gone.

Afaik that’s exactly what I would expect: “building:part”=* as a non-closed way is not defined and if there’s a “building:part”=* within (since it’s not defined I’d say it is not wrong to interpret it as “within”, but in this case that’s what you want anyway) the Buildings outline the latter should be ignored (aka “be completely gone”).

You should think about current SB3D buildings as of solids. You can change in kendzi3d material of one of walls by tagging building as multipolygon and as member you need to add all it’s walls. One of them you can tag with different building:material tag.

Ok, i’ve done now. but i doesn’t work.

I’ve got a line with building:material=glass. Another line for the rest of the building with building:facade:colour=#XXXXXX. Both are part of a relation. type=multipolygon. the lines have role=outer.
where do i tag the height and min_height? at the keys for the multi polygon? i did, but i don’t see the wall i’ve tagged.

Here is an example:
http://www.openstreetmap.org.pl/kendzi/Kendzi3d/examples/multipolygon%20glass%20wall.osm
Tags height and min_height should be put on multipolygon it self

Result:

Hi, one more enhancement request for Kendzi)
Is it possible to support color names, from this list:
https://github.com/One-com/one-color/blob/master/lib/color-namedColors.js

For example, firebrick is quite popular colour already.

done in v217

kendzi,

  1. There is link to message here and link to osm-file with examples is broken there.

  2. About deactivation of volume rendering of building outlines - I want to add, that joining to relation type=building is not the only simple method to recognize building, which has dividing to parts. Another variant is detecting a tag building:parts= . On the one hand, if you don’t want, of course, you can not add this tag, but, on the other hand, you can use this tag right now in that buildings, which already have it (more that 1.000 buildings have this tag at this moment).

Could you, please, deactivate volume rendering of buildings (building= ), which also have tag building:parts= ?

Great! Thanks!

kendzi, could you please check out this building. When in Josm the plugin doesn’t render it untill you remove roof:material tags or ** roof:colour** tags. Can’t figure out what’s wrong with it.

Added it in v220. If there is building:parts=* tag and there is no tag building:part=* building will not be rendered.
However i think all parts should be put to relation too.

Bug fixed in v222. But i think it should be used tag steel not stal

You are right, of course. Thanks.

Thank you! Of course, these things are not mutually exclusive.

As I see, this building:part is not rendered because of building:part=dormitory. I think, plugin should work with all building:part= (if we can use building=commercial and building=dormitory, we should also have possibility to use building:part=commercial and building:part=dormitory, if they are parts of building=yes.