heremaps / harp.gl

3D web map rendering engine written in TypeScript using three.js
Apache License 2.0
1.29k stars 197 forks source link

3d buildings tms server datasrouce with texture #1892

Closed am2222 closed 3 years ago

am2222 commented 4 years ago

Is your feature request related to a problem? Please describe. He, I have just learned about this library and saw this example https://www.harp.gl/docs/master/examples/#object-picking.html I was wondering which standard are you using for 3d buildings? is it a tms based datasource which reads height data per each object and if the coordinates in each tile are based on vectortile standarad? I was also thinking if it is possible to add texture to each of the buildings? Describe the solution you'd like Being able to feed the datasource from a tms layer and texture the 3d buildings based on the properties of the object

nzjony commented 4 years ago

@am2222 , there is another issue where there is a request to texture the building, see: https://github.com/heremaps/harp.gl/issues/1854. We don't currently generate the correct texture coordinates to allow this, so there is a bit of work to be done before they can be textured.

am2222 commented 4 years ago

@nzjony Thanks, But how about the backend? isharp.gl able to read from a tms datasource (which provides height property for each geometry) and extrude the buildings? or we need to provide other type of standards for it?

nzjony commented 4 years ago

@am2222 , I don't know what a tms datasource means, maybe you can point me to what you mean exactly. Perhaps our current data sources already meet this standard?

am2222 commented 4 years ago

@nzjony By TMS I mean tile map service (https://wiki.openstreetmap.org/wiki/TMS) which is mainly is supported by image based tile maps and vector tiles standards. and I think you already support it but I am nut sure if you support 3d extrusion for tms as well or not?

nzjony commented 4 years ago

@am2222 , thanks for clarifying. I don't think we support TMS, though probably it could be implemented.

The data formats we support are mentioned here: https://github.com/heremaps/harp.gl/blob/master/@here/harp-vectortile-datasource/README.md

Does that help?

am2222 commented 4 years ago

Thanks I think that helps, So if you ae supporting mapbox vector tiles so your services also works with arcgis server's vector tiles right?

On Tue, Oct 13, 2020 at 3:52 AM Jonathan Stichbury notifications@github.com wrote:

@am2222 https://github.com/am2222 , thanks for clarifying. I don't think we support TMS, though probably it could be implemented.

The data formats we support are mentioned here: https://github.com/heremaps/harp.gl/blob/master/@here/harp-vectortile-datasource/README.md

Does that help?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/heremaps/harp.gl/issues/1892#issuecomment-707561017, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABD5JL3RD6Z4XTE66EAYUF3SKQBMXANCNFSM4SL3FXYA .

nzjony commented 4 years ago

Should be possible, check out: https://github.com/heremaps/harp.gl/blob/master/%40here/harp-vectortile-datasource/lib/OmvRestClient.ts

am2222 commented 4 years ago

Thanks @nzjony

stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

am2222 commented 3 years ago

@nzjony Hi, May I ask you a question about 3d building extrusion? I noticed that it only extrudes the objects, but in osm buildings data we have different roof shapes (https://wiki.openstreetmap.org/wiki/Key:roof:shape), Is there any way to define those types of roof shapes in rendering? I am not very familiar to the harp.gl's APIs and classes. I wanted to give it a try to add these types of roofs but I am not sure which classes I should start to look at. I think this website shows the correct roof types https://osmbuildings.org/?lat=52.52111&lon=13.41078&zoom=16.8&tilt=30

FraukeF commented 3 years ago

@am2222 Hi,

nzjony is out of the office until after christmas, so I ll try to help.

We currently do not support Roof Shapes in harp.gl, unfortunately its currently not even on our Roadmap. So, we will probably not be able to support this in the near future, I can let you know if this changes.

am2222 commented 3 years ago

@FraukeF Thanks for your reply, But May I ask which classes can I have a look to see if I can make some changes by myself to add support for roof type?

FraukeF commented 3 years ago

Hi @am2222 ,

sure, that would be great, actually the code for the extruded polygons ins harp.gl is not one we fancy as it grew a bit wild quite some time ago, I ever since we are hoping to find some time to restructure it a bit, so already sorry in advance :)

Basically the code decoding the data and creating/preparing to create THREE.js meshes out of it you can find in VectorTileDataEmitter::applyPolygonTechnique look out for const isExtruded = isExtrudedPolygonTechnique(technique);and everything related to this condition.

If the additional roof geometry is added there, this will finally create an instance of DecodedTile containing the prepared geometries, which then will be further processed and converted to THREE.js meshes in a class called TileGeometryCreator:createObjects, and in theory the rest should be falling into place.

If you need more support here, you are very welcome, let me know if/when you have further question.

am2222 commented 3 years ago

@FraukeF Thanks very much, I will get into it and see if I can add the roof support there. thanks

am2222 commented 3 years ago

@FraukeF If I am understanding the structure correctly here (https://github.com/heremaps/harp.gl/blob/2183218a104d77ce151e0975f5e2477c105e7fb0/%40here/harp-vectortile-datasource/lib/VectorTileDataEmitter.ts#L1361) we make vertexes of polygons, so can I can make roofs here?

FraukeF commented 3 years ago

@am2222 , sorry for the late reply, I took some christmas break :) happy new year to you.

I think the code generating the roofs currently you can find some lines below, here: https://github.com/heremaps/harp.gl/blob/2183218a104d77ce151e0975f5e2477c105e7fb0/%40here/harp-vectortile-datasource/lib/VectorTileDataEmitter.ts#L1582

Its only copying the floor coordinates and moving them up along the normal with the given hight, I think this might be the place you could try to add custom roofs.

am2222 commented 3 years ago

@FraukeF Thanks, Happy new year to you too, Thanks for the help, I will start working on it now.

am2222 commented 3 years ago

@FraukeF Hello again, I just checked the https://developer.here.com/documentation/vector-tiles-api/dev_guide/topics/layers.html#buildings-and-addresses and it seems here building vactor tile does not have roof type information, it seems I have to use another mvt tile provider which have roof information.

nzjony commented 3 years ago

@am2222 , hope you can fid a provider with the information you need, and please reach out to us if you have trouble with what @FraukeF mentioned.

am2222 commented 3 years ago

@nzjony yeah sure thanks

stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.