3D Model Repository

Ok now the orientation/rotation and scaling of my 3d model it’s pretty ok.I don’t know exactly what i did in C4d - i flipped the Z Axis,swaped Y/Z axis,swapped faces in the obj. exporter options but in the end it turned ok.

Another aspect to consider it’s clearing the browser cache after you revised your 3d model,because in the first time i didn’t clear it all the time,and thus i couldn’t see all the “transformations” on the Osmgo page.

I should correct the position of the model,i mean move it in the horizontal axis,but this i think it should be fixed with making the area of the building in Openstreetmap editor and then assign the right 3dmr tag to it,isnt’it?

In OSMgo, the values of the parameter “origin” of 3dmr.eu are used now, to shift the zero/rotation point of the model. Meaning: [right,near,elevate]. :slight_smile: Mind: If you edit them, they toggle the sign! I think, it’s a error :confused:

To test the values of “origin”, 3D models now can be moved (shift & arrow keys), elevated and rotated (no shift) if selected. :sunglasses: Just click on it (only in control mode “View”, key X to select it).

It’s not final. We have to define a lot of things - later.

Moved flying 3D model Tardis

There is a new visible 3D model /9 . It has to be scaled yet.

And there is an error in the Javascript code, to be investigated.

https://osmgo.org/go.html?lat=46.11468713&lon=3.68270798&ele=7.96&dir=38&view=-30&dbg=1&fps=10&con=1&tiles=1&opt=0&name=montagne

church in OSMgo

In the last days, some models have been uploaded. Rendering them and implementing was a challenge, may questions raised. Some user of 3dmr.eu missed descriptions. This is a collection of topics. Please check them, if I am correct. We should place the user documentation to a Wiki page and work it out incrementally. It’s not done, the more difficult obstacles are still on the way. (I did not code the replacement of relations and building:parts yet.)

  1. Create and upload Zip-file.

  2. Tag model in OSM

  3. Fine tune parameters metadata of the model

  4. Create and upload Zip-file

  • Edit your own 3D model or find a good one. In this case clarify the copyright! You may use Blender, Sketchup or any tool you like. Set the positive y to the north and positive x to the east,

  • The file format actually is OBJ with MTL. Both should have the same name. There may be multible material files JPG, PNG? No unused and none missing please. It would be better, if the images sizes are power of two (i.E. 512x256). Don’t add extra data, as macOS used to do! (You may clean the zip by the two commands: zip -d name.zip *.DS_Store zip -d name.zip "__MACOSX*”)

  • Put all the files on one ZIP file. Do not use any path, just a flat list. There mustn’t any path in the MTL file to!

  • Later we may also support other file formats like Collada

  • Login into www.3dmr.eu with you OSM login. (AOout??)

  • Add a new model by “Upload Model”. Give it a name, description, tags and categories (more hints needed)

  • If it is a uniq object, set its position by map or values. The GPS position is NOT the position used by the renderer, only to find repository models in an given bounding box.

  • You may already know the scale

  • A model like a bench should have its origin at the center, to make rotation possible. To adjust this, you may set the offset origin values now or later by testing it out. The meaning of the 3 values are: with/right , dept/back , elevate up. Their unit is the models unit before scaling, not afterwards in Meter.

  • The rotation value may be needed to let the modes direct to the expected side (like a bench is directed to the view you have, if you sit on it. All instances of i.e. a bench should have its direction tag. So both values later are added by the renderer. The direction tag may also be “along” to place a bench along the nearest way it is placed to.

  • A unique model like the Eiffel Tower may only use the repository value.

  • Licensing: More Info!

  • And finally upload the ZIP file

  1. Tag model in OSM
  • Multiple used models like a benches usually placed by an OSM Node. So just add the Tag “3dmr” = “id-number” (or uuid, mesonic name, in discussion) For objets like a bench, an Tag “direction” is recommended. See the wiki page for all the options. - The default symbol or object, the Node usually is shown will not get rendered but replaced by the model.
  • A model may also be tagged to an OSM way, like a “building" or an small “amenity”. Never on open ways? How is the “center” of an area calculated? All renderers should use the same algorithm. Maybe we need an pseudo code for it. If it is a unique used model, the origin Metadata may fit the model to the right place. - The default object, the Way usually is shown will not get rendered but replaced by the model. That includes all building:parts inside this area, partial to?
  • An OSM relation is NOT adequate to place a model because it does not have a defined position. But the “outer” member as an are is fine. In this case, all member objects of the relation will not get rendered but replaced by the model, also including building:parts. If the area, a relation covers does not fit to the model, the model should be divided in multiple parts, an extra relation for a model should be avoided.
  1. Fine tune parameters metadata of the model
  • Depending on the data refresh cycle of the used 3D renderer, that may be a view minutes with overpass, the model should now be visible.
  • Changing the Metadata in the repository should be valide at once. Refresh the rendering (mind the cache!) and repeat this until the model is placed accurate. The 3D renderer may provide an interactive fine-tuning of the model and set direct or show you the values to edit into the metadata.

Now scaling is also posible. :sunglasses:
The controls are soft now, the display unified for all values

Fine tuning of a 3D model, rendered out of http://www.3dmr.eu
Click the model to select. Start to find out its metadata
<> rotate/direction ^v scale
shift <>^v and pageUp/down to place origin (right,back,up)
0 or o reset all

Tweet with movie: https://twitter.com/OSM__go/status/984003969071673346 :smiley:

How to get from a model in 3dwarehouse.sketchup.com to 3dmr

In 3dwarehouse:

If no Collada.dae file is present, download the SketchUp.skp
Open skp in SketchUp (I user 2017)
File Export 3D Model to *.dae .... wait
Set the Options! Two-Side, NO Edges, Export textur maps
Next to the Name.dae will be a folder Name with the textures.

Open Blender

Erase the block and import the dae. Textures are NOT visible
Export to OBJ .... wait
Set the Options! NOT include Edges, Write Materials
You will see a Name.obj and Name.mtl but NO Textures. Use the folder from SketchUp

For 3DMR.eu you need more steps:

Move obj and mtl into the folder from SketchUp
Edit the Name.mtl and remove (Text replace all) all path at the texture files
Create a ZIP with obj, mdl and all textures and upload it to 3DMR.eu

If you check the log output of OSM-go you will see a lot of warnings because the texture sizes are not Power-of-Two. It works anyway. To be perfect, resize the textures to the values of the warnings before you ZIP the model.

Hi all,
when I try to login at https://3dmr.eu/ I got a “Server Error (500)”…

Login is broken? After Logging in by OSM, I get Error 500.

3DMR is online again!

From my friend Martin, I got a small container-crane and uploaded it. Th moving parts are missing yet and will follwe. 3DMR does not support moving models yet (windmills, London Eye, etc. but also moving sequences like building site cranes etc. That may be done one day to.

It was not to much work to place multiple instances of the crane in OSM. As I assumed, there were some cranes, visible by satellite images, in the port of Cologne (Köln) and (hurray) there were already nodes in OSM: https://www.openstreetmap.org/node/2561999495

I had to add the tags 3dmr and direction. And I had to move one of the nodes to have them all at the same distance to the water:
http://osmgo.org/go.html?lat=50.97991&lon=6.97676461&ele=37.12&dir=158&view=-16&name=crane&tiles=6&opt=2

Cranes in Cologne port

The tagging of the nodes just did say: container crane, no size, no type nor the company it was build. But because it is not at a see port, it most probably its a small crane, not a big container crane for oversee ships. In theory, any node, tagged the same way could be replaced by a crane model without the 3dmr-tag. Well, you need some AI to find the water border and adjust direction and position this way :-o Yes, I am dreaming.

For now it should be done manually. Overpass does show uns quite a view cranes as candidates.
node"seamark:crane:category";
But there are a lot of other types! We could ask the building company for a list. They would get dubious, wouldn’t they? This one looks good:
https://www.openstreetmap.org/edit?editor=id&node=2544979831#map=17/51.62641/6.60709

Adding the tags is done quickly. Even the direction is easy to set by iD. Only the position is a problem. May be we should set the 0.0 point in 3DMR to the water border? No that would mean to shift all notes to this point to. In OSMgo is a nice function to find the coordinates for 3DMR. It also should be able to find the needed lat/lon for the node.

Good work -karlos-!

I’m thinking about the possibility of integrating a 3D renderer that works in the browser (such as OSMgo) into the upload model and edit model forms to set these values, so that they’re easier to fill.

That would be reasonable. It could be a simplyfied version of a renderer & editor. Even the latest http://vrmap.kairo.at looks good for this.

Model Update:

Hi karlos, thanks a lot for your efforts in supporting 3dmr! I’m only getting around to responding now, but I have a few comments to your posts:

The direction tag isn’t just used for 3dmr – it’s a popular key used by quite a few applications. So I believe we should follow the existing rules for the tag instead of using 3dmr-specific values. So far, “along” is not an established value for direction.

I think 3dmr models could be linked to open ways in some cases, e.g. for bridges or even an unusually pretty/remarkable barrier=wall.

Yes, such a set of instructions should probably include instructions to check the license, for example:

Make sure that you have the right to publish the model under one of 3DMR’s licenses. This usually means that you created the model yourself or that the author gave you explicit permission. Models found online are rarely suitable for 3DMR! Also make sure that the same applies for the textured used in the model – textures from proprietary sources such as Street View cannot be used.

@Tordanik

Direction: A bank to sit on usually faces to the way, next to it. We should have a tagging for this. May be I did see it as roof:orientation. Next to direction we could support the tag orientation=parallel/opposite/etc., or whatever you like. Please make a recommendation.

I would set paralles as the default rendering (except the code of OSMgo is so verkorkst, it cant’t be done there :smiley: )

Open ways: Bridges are a good argument. So we should have Ways, open or as arrays. But we also must have a definition, how the resulting point is calculated!

NEXT? I was happy to see, the HTML-Error 500 got fixet. This project seamed almost abandoned. There are some todos (documentation, discussions) but no activities, sadly. As a last contribution, I am just in an dialog about including a small 3D renderer into the server (rather not OSMgo), to solve the idea of @n42k.

Some days ago I noted a new model in 3DMR, but no tag in OSM. So I send a message to the uploader. But the process seems to be to complicated, even with the description I wrote (see above). So he invided me to upload and place all his models. Well, that’s not the way we intendet but I did it one time to check the process: It is ok.

https://osmgo.org/go.html?km=1&lat=44.87351147&lon=0.24555831&ele=18.67&dir=243&view=-13&fname=Fleix

But I can’t help with the uploads he did. :frowning:
May be we should enable edits of metadata to any model after any login as it is with OSM tagging.
In this case, even the ZIP is not ok (textures don’t work). Do we need some “Superuser” logins?

Who will help? The caregiver of 3DMR are to busy or don’t have access (me :sunglasses:)
-karlos-

I am working on an simple tool for model visualisation in 3D OSM. It will also be usable to fine-tune the model metadata. The tool uses the framework A-Frame (and the example, given by OSM user KaiRo. No code from OSMgo)

A minimum of code should support just the needed functionality. At the moment, it is a 2D ground map with 3D buildings and threes. We could drop the trees or ad more. And the model of corse, placed as it would be in all OSM 3D renderer, using 3DMR.

Next to the visualisation, the only function is, to move and rotate the model for fine tuning. The arrow keys (and WASD) should move it. What shall be used for rotation? I think, only the model should move. But the camera could be bound to the model and move with it to. We may start with this and use it. If we miss functions, they may be added.

Details:

The GPS lat/lon, given in the model metadata are only a raw position. And there may be more than one tagged instance! An overpass query should be used to find the OSM Nodes and Ways with the Tag “3dmr” and the ID of the model. This instance(s) may be shown in 3DMR in the models Map-View. I could change the code of 3DMR. But I never have used GIT and will do it, if some one supports me.

A marker in the Map may be used to select the model instance for visualisation and fine-tuning. The A-Frame tool will now get the valide lat/lon values and the model ID. It also will geht the Node or Way ID. This way, a 3D Building, replaced by the model will be hidden.

A user of 3DMR, if logged in, may now moved the model to the exact place. This will change Origin an Rotation or the lat/lon and direction tag of a node. The new model metadata or the OSM tag will be set by a “Save” button (next to “Cancel”). The View will return to the model page of 3DMR. This page shows the plain model in 3D. We may implement, it to show the model by the A-Frame tool.

@all: Please check my concept, comment it and tell mistakes, I may have done.

There will be more to be defined later one, like how to find the model position if a way is tagged by “3mdr”. But fist steps first.

-karlos-

Fine-tuning tool by A-Frame

Since my last reply, I’ve improved 3DMR, namely improving the load times of the pages, by preloading the required models, inlining CSS, and using a minified version of the THREE.js library. This is already live on https://3dmr.eu. Other changes include fixing the insecure page on models with a map, and small programming style fixes.

Currently, I’m working on validating the uploaded models server side, so that new users get a friendly error when a model they uploaded is not set up correctly (such as invalid OBJ or MTL files). This will still take some time, as there is currently no library available in Python for opening OBJ files in zips directly. Furthermore, I’ve gotten permission to import some of the models that were uploaded to the now defunct OBM (https://wiki.openstreetmap.org/wiki/OpenBuildingModels). I will have to write a script to iterate through all the models and fix certain aspects (such as applying a translation to the origin for each building).

@karlos

Good work! Could this be included later in 3DMR for users to define the position/rotation/scale of the model? We will likely still make some changes to how we’re handling those attributes before that can be implemented. Regarding more individual questions:

I’d find it intuitive for the Q/E keys to be used for rotation.

I like this idea, seems better than our current approach, I’ll have to discuss it with Tobias. I’m more than willing to help you with git in real time, you can find me on OSM’s IRC. We could start with a simpler feature too, such as the one you suggested in the issue tracker (https://gitlab.com/n42k/3dmr/issues/4), to get you acquainted.

Sounds sensible. I agree that there might still some confusion on what the lat/lon and origin fields should be, as different values for these fields will still work. Models should be centered on the origin when they’re uploaded. If that’s not possible, that should be fixed with the origin attribute. No other changes should be done to this attribute. For positioning the model in OSM, the lat/lon attribute on the corresponding OSM element should be used.

Agree! Hope to find you on IRC.

A demo version of the positoner is running: www.OSMgo.org/3
We can talk about the function details like keys. And if it is fine, we start merging into you repository.

  • Slide the viewpoint by arrow-keys, shift to rotate. PgUp/Down or +/# to elevate. 0 to reset.
  • Slide/rotate the model by WASD/QE. Elevate by RC (changed form F). Scale by TG? O to reset. <+++
    Mouse and Touch are disabled at the moment.

The flying tower :slight_smile:
Fine-tuning tool by A-Frame

@n42k You did close my merge request. Is it ok? Running? Seems not to work.

Good work, it’s a starting point for a proof of concept. The F key might not be the best idea to elevate, as it fullscreens the application on Google Chrome.

Regarding your pull request, I’d love to check it and approve it, but I believe you’ve closed it? https://gitlab.com/n42k/3dmr/merge_requests/21/diffs

I really like the idea, still. It seems though, as the SSL certificate for the production server has expired. Please renew.

The certificate issue has been solved in the meantime.