273 Commits

Author SHA1 Message Date
Nyall Dawson
0dc89613df Expose equals method for QgsAbstractMaterialSettings subclasses 2024-11-26 20:05:30 +10:00
Nyall Dawson
373b48ce10
Expose QgsMesh3DSymbol to Python 2024-11-26 14:42:21 +10:00
qgis-bot
eacf823601 auto sipify 🍺 2024-11-25 16:19:42 +00:00
Martin Dobias
6defbc68c4 Review: add missing \since 2024-11-25 17:16:28 +01:00
Martin Dobias
60554195dc Add possibility to shift origin of 3D map scenes
This introduces a new class QgsGeoTransform (derived from QTransform)
that keeps chunk's translation vector as a QgsVector3D (i.e. in double
coordinates) and if there is a shift of the origin, 3D map scene and
chunk entities react to it by adjusting the underlying QTransform.
2024-11-25 17:16:28 +01:00
Jean Felder
dfce7dc231 qgs3dmapscene: Compute max clip planes
The number of available clip planes depends on the OpenGL
implementation.

This change Introduces a new function in Qgs3DUtils function called
`Qgs3DUtils::getOpenGLMaxClipPlanes` to compute this
number (`GL_MAX_CLIP_PLANES`) and use it in the 3D scene.

See: https://registry.khronos.org/OpenGL-Refpages/gl2.1/xhtml/glClipPlane.xml
2024-11-21 17:08:41 +01:00
qgis-bot
14ab3d40de auto sipify 🍺 2024-11-21 08:33:56 +00:00
Withalion
5f6259ac10 Fix issues found in review 2024-11-21 09:30:45 +01:00
Withalion
1551449df3 Move debug panel icon from toolbar
Debug panel in 3d map view can be set in advanced settings or by
keyboard shortcut CTRL + SHIFT + d
2024-11-21 09:30:45 +01:00
Withalion
c76455bcc6 Add stop updates checkbox in 3D View options 2024-11-21 09:30:45 +01:00
Nyall Dawson
aaf4b90911
Fix malformed docstrings (#59244)
* Fix malformed docstrings

Fixes https://github.com/qgis/pyqgis-api-docs-builder/issues/188

* Fix malformed docstrings

* Fix more malformed docs
2024-10-28 14:29:21 +01:00
qgis-bot
afc3e8d41c auto sipify 🍺 2024-10-25 18:38:36 +00:00
Martin Dobias
68a76bc407 Update python/3d/auto_generated/symbols/qgspoint3dsymbol.sip.in
Co-authored-by: Nyall Dawson <nyall.dawson@gmail.com>
2024-10-26 04:35:12 +10:00
Martin Dobias
04d5369d4d Fix sip bindings 2024-10-26 04:35:12 +10:00
qgis-bot
94411b5fcd auto sipify 🍺 2024-10-17 08:34:52 +00:00
Jean Felder
e38ac6c7b9 qgs3dmapscene: Add support to setup clipping
This adds two functions to setup clip planes on a 3d scene:
- enableClipping() to enable opengl clipping
- disableClipping() to disable opengl clipping

The `enableClipping()` function achieves 3 things:
- it stores the clipping plane equations
- it adds clip planes to the framegraph
- it enables the clipping on the material of the existing entities

`disableClipping()` does the opposite things.

The clip planes equations need to be stored to handle the dynamic
addition of new entities. Indeed, when a new entity is added, clipping
needs to be enabled on its material if necessary. This is achieved
in `finalizeNewEntity` which is called on all new entities.
However, this is not true for the terrain entity. That's why,
`mTerrain` now listens to the `newEntityCreated` signal to call
`handleClippingOnEntity()`.
2024-10-17 10:31:40 +02:00
qgis-bot
8f4da32b6b auto sipify 🍺 2024-10-02 22:13:35 +00:00
Martin Dobias
b02813e657 Add API to temporarily disable updates in 3D map scene
This is useful for debugging 3D views, to pause scene updates and
inspect some parts of the scene in detail.
2024-10-03 08:09:04 +10:00
qgis-bot
774399c3ea auto sipify 🍺 2024-09-12 07:21:24 +00:00
Alessandro Pasotti
987c38eda6
[auth][api] QgsAuthConfigurationStorage classes and tests (#57992)
Implementation of QEP 
Authentication System: allow Database storage for authentication DB
https://github.com/qgis/QGIS-Enhancement-Proposals/issues/248
2024-09-12 09:18:15 +02:00
Nyall Dawson
f21722a0f1 [sipify] Minor cleanup to auto additions
Condense injections into a single block instead of multiple
separate blocks
2024-09-09 16:56:29 +10:00
Nyall Dawson
cfd251e7f7 Capture signal arguments 2024-09-08 16:06:22 +10:00
qgis-bot
d46973d9c1 auto sipify 🍺 2024-09-03 20:35:11 +00:00
Nyall Dawson
534ca73c59 Fix missing see also trailing notes in PyQGIS documentation 2024-09-04 06:32:03 +10:00
Nyall Dawson
0f1daa11f3 Fix formatting of some \see links 2024-09-04 06:32:03 +10:00
Julien Cabieces
94863b435e
Merge pull request #58534 from nyalldawson/fix_3d_import
Fix PyQGIS 3D module patching
2024-09-02 11:21:11 +02:00
Nyall Dawson
ef0289f3ec Fix formatting of Python ..deprecated annotations in docstrings
Fixes https://github.com/qgis/pyqgis-api-docs-builder/issues/174
2024-09-02 11:42:12 +10:00
Nyall Dawson
765cbb32db Standardise some deprecated annotations 2024-09-02 11:42:12 +10:00
Nyall Dawson
2af54ad057 Fix malformed python docstrings when enum value has \since annotation 2024-09-01 02:29:17 +10:00
Nyall Dawson
da317dd8de
Fix PyQGIS 3D module patching
The module patching for _3d was not working at all, because
the same logic which works for other modules with a private _module
copy clashed with the approach of exposing the public 3d module
as qgis._3d

Work around this by renaming the private internal module as _3d_p,
so that the monkey patching logic from sip is correctly run
when the module is loaded.

Fixes broken API in 3d module for renamed enums, and fixes the
broken PyQGIS doc for the 3d module
2024-08-30 11:57:42 +10:00
qgis-bot
9a3809de82 auto sipify 🍺 2024-08-28 02:41:19 +00:00
Nyall Dawson
e161d0bd60 Enforce thread safety for Qgs3DMapSettings 2024-08-28 12:38:16 +10:00
Nyall Dawson
9391a62664 Refactor so Qgs3DMapSettings is a member of Qgs3DSceneEntity 2024-08-28 12:38:16 +10:00
Nyall Dawson
1f94f9bc4e Rework to use Qgs3DRenderContext instead 2024-08-28 12:38:16 +10:00
Nyall Dawson
5e33ee4a57 Add some thread safety to Qgs3DMapSettings usage
Create a small, cheap to copy (non-qobject) class
Qgs3DMapSettingsSnapshot which is designed to store
just cheap properties of Qgs3DMapSettings. Then use this
object wherever possible to avoid accessing the (non-thread
safe) Qgs3DMapSettings object for retrieval of simple
map properties (eg crs, extent, ...)

Refs https://github.com/qgis/QGIS-Enhancement-Proposals/issues/301
2024-08-28 12:38:16 +10:00
qgis-bot
a37fec4fc9 auto sipify 🍺 2024-08-28 02:01:25 +00:00
Nyall Dawson
bc52832b47 Lazily hack around markdown title underline not being long enough
Causes a bunch of warnings when building the PyQGIS docs
2024-08-28 11:58:21 +10:00
Nyall Dawson
6a936472d4 Remove incorrect 'not available in python' note 2024-08-28 11:58:21 +10:00
Jean Felder
8dab246707
[3D] Use QGIS material for the terrain (#58134)
* terrain: Use PhongMaterialSettings material for the non texture case

There is no functional change. With this change, the terrain uses a
material defined by QGIS instead of a default Qt3D. This will make it
easier to customize the shader in the future.

* qgsphongmaterialsettings: Fix setShininess signature

`mShininess` is a double.

* qgsphongtexturedmaterialsettings: Use a double to store shininess

This is already waht QgsPhongTexturedMaterialSettings does. The reason
for this change is to avoid the user-set values changing for them when
saving/restoring projects.

* qgsphongtexturedmaterialsettings: Use a double to store opacity

This is already waht QgsPhongTexturedMaterialSettings does. The reason
for this change is to avoid the user-set values changing for them when
saving/restoring projects.

* qgsphongtexturedmaterialsettings: Do proper opacity cast in toMaterial

* qgsphongtexturedmaterialsettings: Factor out material creation

This introduces a new class `QgsPhongTexturedMaterial` which is
similar to Qt3D `QDiffuseSpecularMaterial`.
`QgsPhongTexturedMaterial::toMaterial()` now calls
`QgsPhongTexturedMaterial` to create the material. This has no
functional change.

This will make it possible to directly use `QgsPhongTexturedMaterial`
for the terrain in the next commit. Indeed, the texture case needs to
use a `QTexture2D` which cannot be stored in a settings class. This
issue is avoided by directly creating the material instead of using
`QgsPhongTexturedMaterial::toMaterial()`.

* qgsterraintileloader: Fix typo

* terrain: Use QgsPhongTexturedMaterial for shading texture

There is no functional change. With this change, the terrain uses a
material defined by QGIS instead of a default Qt3D. This will make it
easier to customize the shader in the future.

* 3d/material: Introduce QgsTextureMaterial

This is the same material as the qt3d one:
`Qt3DExtras::QTextureMaterial`. It will also be used in the following
commit by the terrain.

* terrain: Use QgsTextureMaterial for non shading texture

There is no functional change. With this change, the terrain uses a
material defined by QGIS instead of a default Qt3D. This will make it
easier to customize the shader in the future.
2024-08-19 23:01:06 +02:00
qgis-bot
6222445858 auto sipify 🍺 2024-08-19 09:19:05 +00:00
Nyall Dawson
bc331f6a98 Add documentation for QgsPoint3DSymbol properties
Fixes https://github.com/qgis/pyqgis-api-docs-builder/issues/140
2024-08-19 11:16:01 +02:00
Nyall Dawson
3f481b568e Record header subfolders as __group__ attribute in PyQGIS classes
This will allow us to logically create subgroups for PyQGIS modules
in the API reference guide
2024-08-17 20:13:12 +10:00
Nyall Dawson
1f27fc627a [pyqgis] Wrap unambiguously static methods in staticmethod
sip doesn't use the standard Python staticmethod type for defining
static methods, which means that standard means of testing
for a static method (like `isinstance(..., staticmethod)`) fail
with any PyQGIS static methods.

This causes issues with lint tools, which incorrectly flag
calls to QGIS static methods as missing self arguments. It also
breaks detection of static methods in the sphinx PyQGIS docs,
so all static methods are shown as non-static.

Work around this in sipify, by wrapping unambiguously static
methods in staticmethod wrappers.
2024-08-14 22:08:41 +10:00
Nyall Dawson
dc68f03f88 Be tolerant against optional sip modules 2024-08-14 13:05:46 +10:00
Nyall Dawson
ed19d996b2 Collect attribute docstrings for PyQGIS documentation 2024-08-14 13:05:46 +10:00
Nyall Dawson
774ad87251 Remove orphaned sip files
These headers are marked SIP_NO_FILE, these files are not
referenced anywhere
2024-08-13 20:28:55 +10:00
Nyall Dawson
3a578d6712 Header update 2024-08-13 20:28:55 +10:00
Nyall Dawson
e7b26478e2 Valid fixes 2024-08-13 20:28:55 +10:00
qgis-bot
3aed037ce2 auto sipify 🍺 2024-07-25 08:00:08 +00:00
Nyall Dawson
c2c75f3b19
More no-value dox removal 2024-07-25 09:04:22 +10:00