OSM2World: Exception: Too many iterations while enforcing constraints

Hello,

when rendering an object with lots of circular building:parts (cylinders), I get the exception written in the title of this thread. The debug window also tells me at the end of the exception details a way ID, where the error occurred (a negative number, which is the object ID of the way with the tag building=yes (the outline of the whole object) - a negative number because I do local testing and did not upload to the OSM server because of this error). The circles are mostly made of 32 nodes, smaller circles have less nodes (16). Reducing the count of nodes to e.g. 8 does not look so round like in real world.

When I set a roof:shape to pyramidal (which looks much more like the original than a flat roof (it’s a cone in real world)), lots of parts of my object are not rendered and are missing in the 3D image.

In the web I found, that the constant MAX_SPLIT_ITER in the source code for rendering is set to 99 and my object seems to need more triangles.

How can I split the building into more parts, when the center of all circles (and pyramids) is the same point without a building inside building error at JOSM? - they all have a common outline (the largest circle). I tried to split vertically to have more bilding=yes relations with less elements and with different layers, but the largest outline includes everything.

Is it ok to upload this object with the exception from the renderer (without roof:shape=pyramidal I am not missing any parts of my object although the exception is thrown)?

It looks like the renderer does not support multiple layers, that counting the triangles restarts from zero for each relation in a new layer.

Franz

Hi,

I’ve just implemented another triangulation method for OSM2World as the conforming delaunay triangulation often produced inefficient meshes for buildings. The exception you had probably comes from roof lines that are in a steep angle to each other (as conforming delaunay tries to produces equal sided triangles). Could you test if it works with my branch or post the osm file? https://github.com/hjanetzek/OSM2World

Regards,
Hannes

Hi Hannes,

it’s the same with the latest compiled binary from 19-Apr-2013 23:00.

I just uploaded a building with 10 levels, which also made this exception, although there are no round things at this building. Can you please check, what’s the matter here?

Franz

The version I referred to is not the official one, but your examples works here :slight_smile: BTW is it intended that you do not merge the ‘top level’ nodes with the building?

Hi,

my first try was to merge the nodes of the upper level with the lower building, but the rederer didn’t show the brown part of the house - I only had a floating upper floor. So I have shrunk the upper floor by some centimeters to get the lower 9 floors rendered.

What is the right solution here when I use same nodes for all floors to get all building parts rendered?

Does the exception of the renderer has to do with the amount of memory, I give the renderer? I only have an older computer (XP) with at maximum 700 MB - so I tried with 100 to 300 MB for Java, but always the same exception when rendering this building.

The official version was the only binay I could find. With your link, I couldn’t find a binary zip to download.

Franz

It should be correct to use the same nodes for both parts. As far as I understood ‘Simple 3D Buildings’ the building outline should be rendered when it has building:part=yes, but it does not. About the exception: you see the thin red line for the lower part roof, say one line has the area of 1*100. To fill it with same sided triangles it requires roughly 200 triangles. Not a memory constraint, but also not very efficient.

Yes, my branch is just for development. I try to get working stuff merged upstream though :slight_smile:

Regards,
Hannes