Relaunching the 3D Model Repository

,

As the various 3D renderers using OpenStreetMap data continue to prove, OSM is a great resource for 3D maps. However, there are limits to what can be done using just the OSM data model. Sometimes, nodes, ways and relations just aren’t enough and it would make a lot more sense to open Blender, SketchUp or some other specialized 3D creation tool and properly model the object in 3D.

The 3D Model Repository, or 3DMR, is designed to allow just that! You can upload 3D models under a suitable open license and link them from OSM. A 3D rendering tool which encounters a link to 3DMR can then replace the OSM object with the 3D model downloaded through the 3DMR API.

The 3DMR website makes this process extra convenient by featuring interactive 3D previews, immediate feedback while uploading, and more:

The site (which is hosted by FOSSGIS, the German local chapter of the OSMF), has recently undergone major renovations as part of @Ayush_Dhar_Dubey’s recently completed Google Summer of Code project. Going forward, Ayush will continue as a maintainer of the 3DMR codebase.

3DMR is designed to host a large variety of objects – ranging from mass-produced benches or street lights to famous buildings and landmarks. Models uploaded to 3DMR are already used by OSM go and OSM2World, and we encourage other 3D renderering tools to adopt the platform as well.

Most importantly, we hope to see a lot of great 3D models uploaded to the site to bring the OSM 3D ecosystem to the next level in visual quality. If you have some interest in 3D mapping or 3D modelling, head over to 3dmr.eu and give it a try!

13 Likes

great news, thanks to everybody involved, it looks very nice. What I think could be useful is giving some size information on the overview, both in terms of real world dimensions but also in kB and polygon or point count. And if it has textures (you can usually see this last one, but there might be edge cases or partial texture availability. Size of textures would also be interesting).

2 Likes

OSM-go did use 3DMR. The new version does not longer support the OBJ/MTL API and OSMgo crashed, if an object tagged with “3dmr” was in the tile. But yesterday I updated to the new GLB API.

Try the Example / OSM ID 468460717

It got much more simple now. Instead of loading obj and map files and all the textures, now just one GLB file is requested. All 3D render tools support GLP. The main difference is: A GLB file may contain multiple scenes (but we use only the first) and a scene is like a mesh in a obj file. So this magic line was the essential change:
var mesh = gltf.scene.clone();

Next I tested some of the models:
There is even an ensemble of models in Chemnitz. OSM2World shows them all, OSMgo only one yet

As OSM2World needs time to update the tiles, this are only visible in OSMgo:

SOLVED: The last one, Hafenkran Kocks seems to have lost its colours the obj/mtl was converted to glb. (OSMgo)

Other oddities:

I did not check all of them yet as it is a bit toilsome to find the positions in the renderer. In 3DMR, on the model page and in the Map popup we could have icon-links to OSM2World, F4, OSMgo, Josm-Editor.

There are more remarks to 3DMR:

  • In the map that blue marker looks like two or more markers at a spot.
  • In the model data always 0.00: Triangle Density: 0.00 triangles/m3
  • We could have Categories that need to be selected while upload. Like single-use OR multi-use, point-claud OR mesh-model, building OR art OR … other. And the homepage may have a way to select this options as filters to list models.
  • In Altdorf is a model tagged by “3dmr:id”, not “3dmr”. Which one shall we use?
  • I would like to have a way to show all values of the info request, like offset in the UI
  • It seems, the orientation of the models changed +180 degrees, but not all?

3dmr could also have a link to Overpass to find all tagged instances of all/one 3dmr object:
[out:json][timeout:1000];
nwr"3dmr"=”nn”;
out geom;

  • From the model page to the map: In the single model view is a map button. It goes to a huge range but should focus on the model spot there.
3 Likes

Colours are comming back

1 Like

Hello @karlos

As always, thanks again for your continued testing and feedback on OSMgo with the latest 3DMR release, your feedback really helps move things forward!

Yes, that was indeed an issue with automated model conversion. Thanks to the efforts of @tordanik and @lonvia, this specific case has been fixed. There may be other models affected in a similar way, if you happen to notice them, please report them either on the community forum or via GitHub issues.

I believe this one isn’t actually broken. What’s happening is that Three.js’ default renderer hides objects beyond a cutoff distance from the camera perspective. Since this model has unusually large dimensions, parts of it disappear once they’re too far away from the perspective, which is relatively smaller on the model’s scale. Since I am relatively new working on ThreeJS, would you happen to know any fix for this, by chance??

No; It’s not always zero. The value is rounded to two decimal places, so with very large bounding boxes, the density drops into very small numbers (like 0.0000034 triangles/m³) which round down to 0.00. A dynamic unit system depending on the value is on the to-do list.

very nice suggestion, would you like to open a feature request for this on the GitHub repo so we can track it properly??

The correct tag is 3dmr. Seems to be fixed, thanks again to @tordanik.

As part of our discussions during GSoC program, we decided to phase out support for offset(origin), translation, scale and rotation fields. Instead, contributors are encouraged to upload models aligned correctly with world coordinates and directions. To help with this, the upload form now includes a small preview with direction helpers.
It’s generally more reliable to fix models locally in tools like Blender before upload. I believe perhaps @tordanik is looking into the direction of fixing all models relying on such fields…

That’s also a consequence of the obj → glb conversion :smiling_face_with_tear: don’t know what to say on this…

We actually did implement this one right after your initial feedback, please find the new
3DMR tag: 3dmr=nn
hyperlink at the top of the model panel.

Hello @dieterdreist,

I think 3dmr already does present most of the statistics you are proposing

I’m not quite sure how we could best implement texture-specific stats. If you happen to have a concrete implementation in mind you could elaborate?

You both are quite active, thank you.

I checked for the “missing walls”. Yes, it is the camera max-z / min-z. Puzzling: The Eiffel Tower is large to but works fine. You could calculate the maximal extend the model and set the z-max to about twice this value. To keep quality, the z-min should be max/10000 or alike.

As we don’t need info values like scale, we could delete them from the structure. The new 3DMR is incompatible anyway.

Just to mention it. This is professional competition, remarkable!:


Using 3dmr.eu creates more ideas and wishes:

  • In the 9 model overview, I klick on a mode square and expect to open the models page.
  • Ah, the Overpass link is right the first blue, nice! The Overpass logo is this steering wheel. And it works fine, try the Tardis :slight_smile: We could have more logos in this line as links for OSM2World, F4, …
  • The all-models-map popup looks plain now. We could have a second line with the logos too.
  • There could be a place-find in the map

I’m not quite sure how we could best implement texture-specific stats. If you happen to have a concrete implementation in mind you could elaborate?

it could be very simple, like the sum of all texture file sizes, e.g. “1.3MB”, for coverage, it could be textures: yes/no/partial