289 Commits

Author SHA1 Message Date
NEDJIMAbelgacem
a656da3b75 Moved finding geometries from parseVectorLayerEntity to each symbol class 2020-07-28 01:45:11 +01:00
NEDJIMAbelgacem
860be14c32 add SIP_FACTO to QgsAbstractMaterialSettings::toExportParameters 2020-07-25 21:51:59 +01:00
Nyall Dawson
f2e4ac606e [3d] Abstract out material settings
Opens the possibilities for non-phong based materials for 3d symbols
2020-07-24 16:28:18 +10:00
Nyall Dawson
0528fe284c Populate 3D symbol registry, and use to create symbols 2020-07-23 07:53:20 +10:00
Nyall Dawson
c7b6a115df Better initialization of 3d framework, usable outside of app 2020-07-23 07:53:20 +10:00
Nyall Dawson
f60b79fcea Move QgsAbstract3DSymbol to core 2020-07-23 07:53:20 +10:00
Nyall Dawson
573ace14bf [3d][feature] Add option to show light source origins
If enabled, shows a sphere at light source origins, allowing easier repositioning
and placement of light sources relative to the scene contents

Fixes #37726
2020-07-16 07:52:12 +10:00
Nyall Dawson
bf7d746ae4 [api] Add a Qgs3D singleton object, designed to collect other singleton-ish
objects in a central place

Copying the pattern setup by the QgsGui singleton container
2020-07-15 16:10:25 +10:00
Nyall Dawson
b6a9cced10 Dox 2020-07-10 15:46:42 +10:00
Nyall Dawson
eff171ad6d Cleanup diffuse texture API
Seperate the calls for whether a user has enabled diffuse texture
from API for determining whether diffuse texture should be used during
rendering. And don't try to use diffuse textures when the texture
path hasn't yet been set, which causes a flood of Qt warnings...
2020-07-10 15:46:42 +10:00
Nyall Dawson
402ce03763 Minor code cleanup 2020-07-10 15:46:42 +10:00
Nedjima Belgacem
cc96e9e1c1
[Feature] texturing support for vector layer (#36981)
* [Feature] texturing support for vector layer

* Fixed tesselation test not passing issue

* Fixed diffuse_texture_path typo

* Refactoring according to code review

* [Bugfix] the texture coordinates are not setup properly for certain walls

* Added seperation between roofs and walls

* [Feature] texture coordinates rotation

* took back the seperation of texture rotation between walls and roofs because the user will be specifying them with different symbols anyway

* Fixed docs test not passing issue

* Fixed compilation problem

* Fixed compilation problem

* Executed sipify_all trying to fix test not passing issue

* [ui] Harmonize play button across the board

* [ui] Better network logger icon

* [ui] Harmonize loop widget of 3D map view

* [ui] Add a record icon and use it in the network logger panel

* [ui] Move icon-less network logger toolbar actions under settings menu

* [ui] Reflect playback stay in the 3D map view's play button

* Fix azure

* Use prefix increment operator to fix cppcheck warnings related to postfixOperator

* [afs] Read field aliases from layer definition

* Fix ui build warning

* [FEATURE][processing] Add modeler algorithm to set a project expression variable

Allows a model to set Project-level expression variables during execution. Especially
useful with the new Export Print Layout algorithms to allow models which dynamically set variables
used in a layout prior to export.

* Add test

* Refactoring according to code review

Co-authored-by: nirvn <nirvn.asia@gmail.com>
Co-authored-by: Even Rouault <even.rouault@spatialys.com>
Co-authored-by: Nyall Dawson <nyall.dawson@gmail.com>
2020-07-09 21:12:49 +02:00
Nyall Dawson
5b85cb93c1 Sipify 2020-06-30 12:07:21 +10:00
nedjima
7d8a03b1fe Executed sipify_all script to fix the setDirectionalLights header definition 2020-06-20 04:31:10 +10:00
nedjima
9556bd2147 [Feature] directional lights support for QGIS 3D 2020-06-20 04:31:10 +10:00
Nyall Dawson
81a9db9f57 [sipify] Fix creation of cross references 2020-06-15 13:43:58 +10:00
Nyall Dawson
c795ddb1e9 Updates 2020-06-11 13:29:59 +10:00
Nyall Dawson
1f835dfa9a [3d] Expose 3d algorithms provider to Python
Otherwise this provider cannot be initialized from standalone Python
scripts

Fixes #36661

Also cleanup 3d sip generation by correctly defining SIP_NO_FILE
in headers we don't want to expose, so that the sip_include script
can do its magic
2020-05-29 03:44:55 +10:00
Vincent Cloarec
f8fae3cf39
[FEATURE][MESH] 1D mesh width/color varying (#35926)
Introduce a renderer for 1D mesh edges that can vary width over the line. The line can also have different color based on the actual dataset value on the line's point.

Co-authored-by: Peter Petrik <zilolv@gmail.com>
2020-04-24 10:49:24 +02:00
Martin Dobias
520246174a Fixes to SIP finally working 2020-04-19 08:14:49 +10:00
Martin Dobias
cad7cf4a06 Add QgsLayoutItem3DMap to PyQGIS [not working yet] 2020-04-19 08:14:49 +10:00
Martin Dobias
ee92e10e46 Updates based on PeterP's review 2020-01-16 17:08:40 +01:00
Martin Dobias
5b9b2e4afc Optionally show bounding boxes for vector layer entities (for debugging) 2020-01-12 16:51:19 +01:00
Martin Dobias
db509652c8 sip and doxygen fixes 2020-01-11 17:23:19 +01:00
Martin Dobias
64769f4dab sipify, doxygen, spelling 2020-01-11 16:44:45 +01:00
Martin Dobias
89829c5191 Introduce intermediate base class QgsAbstractVectorLayer3DRenderer
This will be useful as we start adding more properties that are common
among all vector layer 3D renderers (such as tiling configuration)
2020-01-10 13:50:05 +01:00
Ismail Sunni
b9978d53d1 [FEATURE][3D] Billboard Rendering for Points (#31308)
* Add button to change billboard symbol.

* Add shaders for billboards.

* Add billboard material class.

* Add sample billboard image.

* Add dummy handler for billboard.

* Add billboard geometry class.

* First working version of 3D point as billboard.

* Make selected feature bigger.

* Use default symbol preview as billboard.

* Update billboard when changes the viewport size.

* Use QgsTerrainTextureImage for adding image to texture.

* Show better quality of billboard default symbol.

* Promote QgsSymbolButton not working.

* Add QgsSymbolButton properly.

* Add seTexture2DFromSymbol.

* Use default symbol

* [On Progress] Get symbol from the QgsSymbolButton.

* [On progress] failed to change the symbol

* Fix billboard fragment shader for macOS

* Better transparency handling.

* Use size from the symbol.

* Add set layer for 3d billboard symbol.

* Set billboard size from the symbol pixel size * 20

* Use size from the image.

* [Debug] set white symbol to success kid, it work when previous billboard is success kid.

* Use store and restore symbol from Nyall.

* Remove unrelated code.

* Apply random extent to fix the bug, from Martin.

* Remove add mesh entities for billboard.

* Hide material and transformation widget for billboard.

* Remove add scene entities for billboard.

* Add selected as parameter in drawPreviewIcon.

* Add QgsMarkerSymbol to store the symbol in billboard

* Put billboard symbol in point3dsymbol serialization.

* Add billboard height in the UI.

* Set height for billboard.

* Store billboard height separately. Perhaps better to use existing transform.

* Set height of billboard to TY.

* Flipped image for billboard symbol.

* Add helper function to set billboard function.

* Generate billboard transform from general transform.

* Use static dpi for context size.

* Remove debug message.

* Use Qgs3DRenderContext for selection color and dpi from QgsApplication.

* Remove unnecessary file and code.

* Remove commented iut code.

* Add documentation of new classes.

* Fix banned keywords.

* Add missing parameter's documentation.

* Address PR review.

* Use context from readXML.

* Remove one line function.

* Fix billboard size.

* Make some functions private, remove unused function.

* Use unique_ptr for the ownership.

* Use unique_ptr for default symbol to avoid memory leak.

* Add parent to texture2D.

* Fix documentation.

* Add copy constructor.

* Fix documentation.

* Remove documentation warning.

* Fix sip error.

* Add unit test for billboard rendering.

* Set ambient to not transparent for measurement line.

* Add dpi in the Qgs3DMapSetting

* Update billboard rendering unit test.

* Remove layer from 3d point widget since it's not supported yet.

* Addressing PR review from Martin.

* Attach dom directly for the billboard symbol.

* Remove unused constructor for point3dsymbol.

* Use stroke width ratio for solving big stroke width.

* Update unit test for rendering with some stroke color.

* Fix typo.
2019-08-27 10:04:56 +02:00
Nyall Dawson
861c5115eb Fix various clazy warnings 2019-06-07 16:40:18 +10:00
Bas Couwenberg
2628c480c5 Don't include revision in sources.
Prevent changes to files that weren't changed between releases.
This eases review of the changes between releases significantly.
2019-05-17 16:47:47 +02:00
Martin Dobias
b5fec5872b Edge settings for polygons + GUI to configure edge rendering 2019-04-09 09:42:08 +02:00
Nyall Dawson
107b48a430 Add NULLPTR macro for use in doxygen comments
For the c++ api dox this expands to "\c nullptr" (the
\c directive indicates a code literal value), and for sipify/Python
it expands to ``None`` (`` is sphinx annotation for literal values)

Makes for nicer dox for both c++ and Python!
2019-02-27 09:41:11 +10:00
Nyall Dawson
a7ca08784c Nullptr consistency in dox 2019-02-27 09:41:11 +10:00
Nyall Dawson
b6d66becab Sipify 2019-02-27 09:41:11 +10:00
Martin Dobias
9875821b04 Review fixes, sip, doc fixes, icons, style panel fix 2019-01-18 09:32:53 +01:00
Martin Dobias
d3e81f6d18 [FEATURE] Add support for shading of terrain
This adds new options for user to choose how the terrain should be rendered:
- shading disabled - color of terrain is determined only from map texture
- shading enabled - color of terrain is determined using Phong's shading model,
  taking into account map texture, terrain normal vector, scene light(s) and
  terrain material's ambient+specular colors and shininess

(configuration of lights is not there yet - now we always have a single point
light with white color at the middle of the scene at 1km above the zero elevation)
2018-11-11 16:10:58 +01:00
Martin Dobias
0f3088abf8 Fix spelling 2018-10-14 22:13:58 +02:00
Martin Dobias
45c9ae97c0 Add warnings about the QGIS 3D API being unstable / tech preview only 2018-10-14 16:40:13 +02:00
Martin Dobias
8814e40635 Move altitude binding/clamping enums to Qgs3DTypes + add culling mode in Python 2018-10-14 16:32:24 +02:00
Martin Dobias
88cb8313c8 Python bindings for QGIS 3D library 2018-10-13 22:05:39 +02:00