Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mesh properties - elevation mode #9207

Merged
merged 3 commits into from
Oct 2, 2024
Merged

Conversation

selmaVH1
Copy link
Collaborator

fixes #8978 ; fixes #9100

Copy link
Collaborator

@DelazJ DelazJ left a comment

Choose a reason for hiding this comment

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

@nyalldawson may I request your feedback here. I am bit confused on what these options actually do and am not sure we are clear enough.

Comment on lines 649 to 652
The |elevationscale| :guilabel:`Elevation` tab provides options to control
the layer elevation properties within a :ref:`3D map view <label_3dmapview>`
and its appearance in the :ref:`profile tool charts <label_elevation_profile_view>`.
Specifically, you can set:
Specifically, you can set configuration:
Copy link
Collaborator

Choose a reason for hiding this comment

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

@nyalldawson, unless there is a report that already explains it (and I'd be happy to be redirected to it), can you help clarify what the Elevation tab is now used for? In my understanding, it was the place to set how values are taken to shape the terrain for 3d map or profile tool, but it looks like it covers more ideas now... and I am a bit confused on what belongs to terrain behavior, and what to the 2D map filtering

Copy link
Contributor

Choose a reason for hiding this comment

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

It's everything related to elevation. These settings should ideally affect everywhere the layer is interpreted for heights, including elevation profile, 2d filtering AND 3d map canvases. But right now there's partial support, and eg some settings work in some contexts but not in others. That's due to funding limitations only...

Suffice to say, for the documentation I'd just say it's where you configure how the dataset heights should be interpreted.

@@ -658,9 +658,21 @@ Specifically, you can set:

Mesh Elevation properties

* :guilabel:`Elevation Surface`: how the mesh layer vertices Z values
* :guilabel:`From vertices`: how the mesh layer vertices Z values
Copy link
Collaborator

Choose a reason for hiding this comment

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

As an example, does this option (also) interact with 2d filtered z map?

Copy link
Contributor

Choose a reason for hiding this comment

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

No -- that setting only applies to 3d map canvas & elevation profiles, not 2d filtering.

of elevation values. If a range is specified, mesh values will be extruded over this range.
You can set the :guilabel:`Lower` and :guilabel:`Upper`
elevation range values for the layer, and specify whether the lower or upper :guilabel:`Limits`
are inclusive or exclusive.
Copy link
Collaborator

Choose a reason for hiding this comment

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

I miss this feature, available in the issue report

Suggested change
are inclusive or exclusive.
are inclusive or exclusive.
When enabled, the layer will only be visible in :ref:`elevation filtered 2d maps <elevation_controller>`
when the layer's range is included in the map's z range.

should be interpreted as terrain elevation.
You can apply a :guilabel:`Scale` factor and an :guilabel:`Offset`.
* :guilabel:`Fixed Elevation Range`: the mesh layer is linked to a fixed elevation range.
This mode is applicable when a layer has either a single fixed elevation or a range (slice)
of elevation values. If a range is specified, mesh values will be extruded over this range.
Copy link
Collaborator

Choose a reason for hiding this comment

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

I'm trying to understand this sentence: does that mean that the lowest value of the layer is bound to the lower limit, same for the highest value and upper limit, and then there is some interpolation in-between to calculate extrusion value for the other faces/vertices? Or only the meshes falling in the range are taken into consideration (and then what is the extrusion offset?)?

Copy link
Contributor

Choose a reason for hiding this comment

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

Think of it like a "voxel" (3d rectangle). Instead of the mesh values representing an infinitely narrow horizontal plane, they then represent pixels stretched up through elevation values. The actual value doesn't change, it's not interpolated.

You can set the :guilabel:`Lower` and :guilabel:`Upper`
elevation range values for the layer, and specify whether the lower or upper :guilabel:`Limits`
are inclusive or exclusive.
* :guilabel:`Fixed Elevation Range Per Group`: each group in the mesh layer
Copy link
Collaborator

Choose a reason for hiding this comment

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

For this option also it is unclear to me if it is about map filtering and/or terrain interpolation...

Copy link
Contributor

Choose a reason for hiding this comment

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

This one ONLY applies to map filtering. Again, ideally it'd also affect the elevation profile and 3d map views, but that needs funding :)

Copy link
Collaborator

Choose a reason for hiding this comment

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

Better late than never: thanks @nyalldawson for explanation.

@selmaVH1
Copy link
Collaborator Author

@DelazJ and @nyalldawson
Thanks for the review!

This feature is exposed as a user-editable table for dataset groups with lower and upper values.
You can either populate the lower and upper values manually
or use an |expression| :guilabel:`Expression` to auto-fill all group values based on an expression.
When enabled, the layer will only be visible in :ref:`2D map view <label_mapview>`.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Hmmm, this sentence sounds to me like the layer is no longer visible in 3d or profile views while in my understanding they just ignore the filtering and will display the full extent you request. On the contrary, the display in 2D view is limited to values falling within the map filter ranges, if enabled.

@DelazJ DelazJ merged commit f27d4e4 into qgis:master Oct 2, 2024
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants