Skip to content

3D Extrusion of Buildings#192

Draft
Drabble wants to merge 7 commits into
maplibre:mainfrom
Drabble:extrusion-buildings
Draft

3D Extrusion of Buildings#192
Drabble wants to merge 7 commits into
maplibre:mainfrom
Drabble:extrusion-buildings

Conversation

@Drabble

@Drabble Drabble commented Nov 1, 2022

Copy link
Copy Markdown
Collaborator

This is a simple implementation for showcasing 3d possibilities in Maplibre-rs.

We simply take the elements in the buildings layer and extrude them with a fixed height.

In the future, it would be very interesting to add details to the buildings that are extruded and extrude based on the height metadata available in OSM.

Extrusion can be enabled/disabled in the Style configuration.

Finally I probably should split the function in tile_pipelines.rs into smaller functions to make it easier to understand.

@Drabble Drabble added the feature-request Request for a new feature label Nov 1, 2022
@Drabble Drabble requested a review from maxammann November 1, 2022 11:49
@Drabble Drabble self-assigned this Nov 1, 2022
@maxammann maxammann marked this pull request as draft November 1, 2022 11:57
@maxammann

Copy link
Copy Markdown
Collaborator

Converted to draft, or it this ready for review? :)

@Drabble

Drabble commented Nov 1, 2022

Copy link
Copy Markdown
Collaborator Author

Converted to draft, or it this ready for review? :)

I think it's not quite ready for production but being an experimental functionality, we could just disable it by default and enable it when we want to.

I guess the main thing left to do is to cleanup the big function with the extrusion to simplify the code and review/discuss about the implementation details.

@maxammann maxammann removed the feature-request Request for a new feature label Nov 1, 2022
@DerKarlos

Copy link
Copy Markdown

Yes please, 3D buildings! The changes are not that much:
The renderer gets an optional 3D extrude. Therefore some APIs are extended form 2D to 3D.
Style access and normals are needed, why a camera to?
The extrude code is quite plain. Its good to see, how the the faces are build.
I would like to use/test it! How could I merge it into my fork?
I compared it with the 3D renderer OSM2World. We should think about it's concepts.
I could introduce, how it works if you like and we could discus a merge of ideas with maplibre-rs.
https://wiki.openstreetmap.org/wiki/OSM2World
We could create an FRC for 3D object rendering

@maxammann maxammann changed the title Implement 3d extrusion of buildings 3D Extrusion of Buildings Dec 13, 2022
@maxammann

Copy link
Copy Markdown
Collaborator

I'll resolve merge conflicts now!

# Conflicts:
#	maplibre/src/headless.rs
#	maplibre/src/render/stages/upload_stage.rs
#	maplibre/src/stages/request_stage.rs
wgpu::VertexAttribute {
offset: 0,
format: wgpu::VertexFormat::Float32x2,
format: wgpu::VertexFormat::Float32x3,

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure if we should upgrade from 2D to 3D for everything.
This will increase the required bandwidth to the GPU.

But I'm not sure how much the impact is performance wise.

@maxammann

Copy link
Copy Markdown
Collaborator

@Drabble Hi! Are you still interested in pushing this forward? :) I guess a lot changed, but I think it would be nice to keep this effort updated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants