Use registry to create terrain generator

This commit is contained in:
Nyall Dawson 2024-11-26 13:06:45 +10:00
parent 25313dd530
commit 64e0c9e484
14 changed files with 71 additions and 90 deletions

View File

@ -54,8 +54,7 @@ class _3D_EXPORT QgsMeshTerrainGenerator : public QgsTerrainGenerator
//! Sets the symbol used to render the mesh as terrain
void setSymbol( QgsMesh3DSymbol *symbol SIP_TRANSFER );
//! Sets CRS of the terrain
void setCrs( const QgsCoordinateReferenceSystem &crs, const QgsCoordinateTransformContext &context );
void setCrs( const QgsCoordinateReferenceSystem &crs, const QgsCoordinateTransformContext &context ) override;
QgsChunkLoader *createChunkLoader( QgsChunkNode *node ) const override SIP_FACTORY;
float rootChunkError( const Qgs3DMapSettings &map ) const override;

View File

@ -21,9 +21,7 @@
#include "qgsflatterraingenerator.h"
#include "qgsdemterraingenerator.h"
#include "qgsmeshterraingenerator.h"
#include "qgsonlineterraingenerator.h"
#include "qgsprojectviewsettings.h"
#include "qgsquantizedmeshterraingenerator.h"
#include "qgsprojectelevationproperties.h"
#include "qgsterrainprovider.h"
#include "qgslightsource.h"
@ -244,35 +242,13 @@ void Qgs3DMapSettings::readXml( const QDomElement &elem, const QgsReadWriteConte
mLayers = mapLayers; // needs to resolve refs afterwards
QDomElement elemTerrainGenerator = elemTerrain.firstChildElement( QStringLiteral( "generator" ) );
QString terrainGenType = elemTerrainGenerator.attribute( QStringLiteral( "type" ) );
if ( terrainGenType == QLatin1String( "dem" ) )
const QString terrainGenType = elemTerrainGenerator.attribute( QStringLiteral( "type" ) );
std::unique_ptr< QgsTerrainGenerator > terrainGenerator( Qgs3D::terrainRegistry()->createTerrainGenerator( terrainGenType ) );
if ( terrainGenerator )
{
QgsDemTerrainGenerator *demTerrainGenerator = new QgsDemTerrainGenerator;
demTerrainGenerator->setCrs( mCrs, mTransformContext );
setTerrainGenerator( demTerrainGenerator );
}
else if ( terrainGenType == QLatin1String( "online" ) )
{
QgsOnlineTerrainGenerator *onlineTerrainGenerator = new QgsOnlineTerrainGenerator;
onlineTerrainGenerator->setCrs( mCrs, mTransformContext );
setTerrainGenerator( onlineTerrainGenerator );
}
else if ( terrainGenType == QLatin1String( "mesh" ) )
{
QgsMeshTerrainGenerator *meshTerrainGenerator = new QgsMeshTerrainGenerator;
meshTerrainGenerator->setCrs( mCrs, mTransformContext );
setTerrainGenerator( meshTerrainGenerator );
}
else if ( terrainGenType == QLatin1String( "quantizedmesh" ) )
{
QgsQuantizedMeshTerrainGenerator *qmTerrainGenerator = new QgsQuantizedMeshTerrainGenerator;
setTerrainGenerator( qmTerrainGenerator );
}
else // "flat"
{
QgsFlatTerrainGenerator *flatGen = new QgsFlatTerrainGenerator;
flatGen->setCrs( mCrs );
setTerrainGenerator( flatGen );
terrainGenerator->setCrs( mCrs, mTransformContext );
mTerrainGenerator->readXml( elemTerrainGenerator );
setTerrainGenerator( terrainGenerator.release() );
}
std::unique_ptr<QgsAbstractTerrainSettings> terrainSettings( Qgs3D::terrainRegistry()->createTerrainSettings( terrainGenType ) );
@ -282,8 +258,6 @@ void Qgs3DMapSettings::readXml( const QDomElement &elem, const QgsReadWriteConte
setTerrainSettings( terrainSettings.release() );
}
mTerrainGenerator->readXml( elemTerrainGenerator );
QDomElement elemSkybox = elem.firstChildElement( QStringLiteral( "skybox" ) );
mIsSkyboxEnabled = elemSkybox.attribute( QStringLiteral( "skybox-enabled" ) ).toInt();
mSkyboxSettings.readXml( elemSkybox, context );
@ -687,7 +661,7 @@ void Qgs3DMapSettings::configureTerrainFromProject( QgsProjectElevationPropertie
if ( properties->terrainProvider()->type() == QLatin1String( "flat" ) )
{
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( crs() );
flatTerrain->setCrs( crs(), QgsProject::instance()->transformContext() );
setTerrainGenerator( flatTerrain );
setTerrainElevationOffset( properties->terrainProvider()->offset() );
@ -722,7 +696,7 @@ void Qgs3DMapSettings::configureTerrainFromProject( QgsProjectElevationPropertie
else
{
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( crs() );
flatTerrain->setCrs( crs(), QgsProject::instance()->transformContext() );
setTerrainGenerator( flatTerrain );
}
}

View File

@ -52,8 +52,7 @@ class _3D_EXPORT QgsDemTerrainGenerator : public QgsTerrainGenerator
//! Returns raster layer with elevation model to be used for terrain generation
QgsRasterLayer *layer() const;
//! Sets CRS of the terrain
void setCrs( const QgsCoordinateReferenceSystem &crs, const QgsCoordinateTransformContext &context );
void setCrs( const QgsCoordinateReferenceSystem &crs, const QgsCoordinateTransformContext &context ) override;
QgsCoordinateReferenceSystem crs() const override { return mCrs; }
//! Sets resolution of the generator (how many elevation samples on one side of a terrain tile)

View File

@ -131,7 +131,7 @@ void QgsFlatTerrainGenerator::readXml( const QDomElement &elem )
Q_UNUSED( elem )
}
void QgsFlatTerrainGenerator::setCrs( const QgsCoordinateReferenceSystem &crs )
void QgsFlatTerrainGenerator::setCrs( const QgsCoordinateReferenceSystem &crs, const QgsCoordinateTransformContext & )
{
mCrs = crs;
updateTilingScheme();

View File

@ -69,9 +69,7 @@ class _3D_EXPORT QgsFlatTerrainGenerator : public QgsTerrainGenerator
void writeXml( QDomElement &elem ) const override;
void readXml( const QDomElement &elem ) override;
//! Sets CRS of the terrain
void setCrs( const QgsCoordinateReferenceSystem &crs );
//! Returns CRS of the terrain
void setCrs( const QgsCoordinateReferenceSystem &crs, const QgsCoordinateTransformContext &context ) override;
QgsCoordinateReferenceSystem crs() const override { return mCrs; }
private:

View File

@ -46,9 +46,7 @@ class _3D_EXPORT QgsOnlineTerrainGenerator : public QgsTerrainGenerator
QgsOnlineTerrainGenerator();
~QgsOnlineTerrainGenerator() override;
//! Sets CRS of the terrain
void setCrs( const QgsCoordinateReferenceSystem &crs, const QgsCoordinateTransformContext &context );
//! Returns CRS of the terrain
void setCrs( const QgsCoordinateReferenceSystem &crs, const QgsCoordinateTransformContext &context ) override;
QgsCoordinateReferenceSystem crs() const override { return mCrs; }
//! Sets resolution of the generator (how many elevation samples on one side of a terrain tile)

View File

@ -71,6 +71,11 @@ QString QgsTerrainGenerator::typeToString( QgsTerrainGenerator::Type type )
return QString();
}
void QgsTerrainGenerator::setCrs( const QgsCoordinateReferenceSystem &, const QgsCoordinateTransformContext & )
{
}
bool QgsTerrainGenerator::isValid() const
{
return mIsValid;

View File

@ -26,6 +26,7 @@ class Qgs3DMapSettings;
class Qgs3DRenderContext;
class QgsRectangle;
class QgsTerrainEntity;
class QgsCoordinateTransformContext;
class QDomElement;
class QDomDocument;
@ -105,6 +106,13 @@ class _3D_EXPORT QgsTerrainGenerator : public QgsQuadtreeChunkLoaderFactory
//! Returns tiling scheme of the terrain
const QgsTilingScheme &tilingScheme() const { return mTerrainTilingScheme; }
/**
* Sets the CRS associated with the terrain.
*
* \see crs()
*/
virtual void setCrs( const QgsCoordinateReferenceSystem &crs, const QgsCoordinateTransformContext &context );
//! Returns CRS of the terrain
virtual QgsCoordinateReferenceSystem crs() const { return mTerrainTilingScheme.crs(); }

View File

@ -263,7 +263,7 @@ void Qgs3DMapConfigWidget::apply()
case QgsTerrainGenerator::Flat:
{
QgsFlatTerrainGenerator *flatTerrainGen = new QgsFlatTerrainGenerator;
flatTerrainGen->setCrs( mMap->crs() );
flatTerrainGen->setCrs( mMap->crs(), QgsProject::instance()->transformContext() );
mMap->setTerrainGenerator( flatTerrainGen );
}
break;

View File

@ -84,7 +84,7 @@ void initCanvas3D( Qgs3DMapCanvas *canvas )
} );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), map->transformContext() );
map->setTerrainGenerator( flatTerrain );
map->setTerrainElevationOffset( QgsProject::instance()->elevationProperties()->terrainProvider()->offset() );

View File

@ -99,7 +99,7 @@ void TestQgs3DCameraController::testTranslate()
mapSettings->setLayers( QList<QgsMapLayer *>() << mLayerRgb << mLayerBuildings );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( mapSettings->crs() );
flatTerrain->setCrs( mapSettings->crs(), QgsCoordinateTransformContext() );
mapSettings->setTerrainGenerator( flatTerrain );
QPoint winSize = QPoint( 640, 480 ); // default window size
@ -172,7 +172,7 @@ void TestQgs3DCameraController::testZoom()
mapSettings->setLayers( QList<QgsMapLayer *>() << mLayerRgb << mLayerBuildings );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( mapSettings->crs() );
flatTerrain->setCrs( mapSettings->crs(), QgsCoordinateTransformContext() );
mapSettings->setTerrainGenerator( flatTerrain );
QPoint winSize = QPoint( 640, 480 ); // default window size
@ -245,7 +245,7 @@ void TestQgs3DCameraController::testZoomWheel()
mapSettings->setLayers( QList<QgsMapLayer *>() << mLayerRgb << mLayerBuildings );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( mapSettings->crs() );
flatTerrain->setCrs( mapSettings->crs(), QgsCoordinateTransformContext() );
mapSettings->setTerrainGenerator( flatTerrain );
QPoint winSize = QPoint( 640, 480 ); // default window size
@ -292,7 +292,7 @@ void TestQgs3DCameraController::testRotationCenter()
mapSettings->setLayers( QList<QgsMapLayer *>() << mLayerRgb << mLayerBuildings );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( mapSettings->crs() );
flatTerrain->setCrs( mapSettings->crs(), QgsCoordinateTransformContext() );
mapSettings->setTerrainGenerator( flatTerrain );
QPoint winSize = QPoint( 640, 480 ); // default window size
@ -367,7 +367,7 @@ void TestQgs3DCameraController::testRotationCamera()
mapSettings->setLayers( QList<QgsMapLayer *>() << mLayerRgb << mLayerBuildings );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( mapSettings->crs() );
flatTerrain->setCrs( mapSettings->crs(), QgsCoordinateTransformContext() );
mapSettings->setTerrainGenerator( flatTerrain );
QPoint winSize = QPoint( 640, 480 ); // default window size
@ -443,7 +443,7 @@ void TestQgs3DCameraController::testRotationCenterZoomWheelRotationCenter()
mapSettings->setLayers( QList<QgsMapLayer *>() << mLayerRgb << mLayerBuildings );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( mapSettings->crs() );
flatTerrain->setCrs( mapSettings->crs(), QgsCoordinateTransformContext() );
mapSettings->setTerrainGenerator( flatTerrain );
QPoint winSize = QPoint( 640, 480 ); // default window size
@ -586,7 +586,7 @@ void TestQgs3DCameraController::testTranslateRotationCenterTranslate()
mapSettings->setLayers( QList<QgsMapLayer *>() << mLayerRgb << mLayerBuildings );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( mapSettings->crs() );
flatTerrain->setCrs( mapSettings->crs(), QgsCoordinateTransformContext() );
mapSettings->setTerrainGenerator( flatTerrain );
QPoint winSize = QPoint( 640, 480 ); // default window size
@ -739,7 +739,7 @@ void TestQgs3DCameraController::testTranslateZoomWheelTranslate()
mapSettings->setLayers( QList<QgsMapLayer *>() << mLayerRgb << mLayerBuildings );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( mapSettings->crs() );
flatTerrain->setCrs( mapSettings->crs(), QgsCoordinateTransformContext() );
mapSettings->setTerrainGenerator( flatTerrain );
QPoint winSize = QPoint( 640, 480 ); // default window size
@ -883,7 +883,7 @@ void TestQgs3DCameraController::testTranslateRotationCameraTranslate()
mapSettings->setLayers( QList<QgsMapLayer *>() << mLayerRgb << mLayerBuildings );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( mapSettings->crs() );
flatTerrain->setCrs( mapSettings->crs(), QgsCoordinateTransformContext() );
mapSettings->setTerrainGenerator( flatTerrain );
QPoint winSize = QPoint( 640, 480 ); // default window size
@ -1034,7 +1034,7 @@ void TestQgs3DCameraController::testRotationCenterRotationCameraRotationCenter()
mapSettings->setLayers( QList<QgsMapLayer *>() << mLayerRgb << mLayerBuildings );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( mapSettings->crs() );
flatTerrain->setCrs( mapSettings->crs(), QgsCoordinateTransformContext() );
mapSettings->setTerrainGenerator( flatTerrain );
QPoint winSize = QPoint( 640, 480 ); // default window size

View File

@ -281,7 +281,7 @@ void TestQgs3DRendering::testFlatTerrain()
map->setLayers( QList<QgsMapLayer *>() << mLayerRgb );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), map->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -414,7 +414,7 @@ void TestQgs3DRendering::testExtrudedPolygons()
map->setLightSources( { defaultLight.clone() } );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), map->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -461,7 +461,7 @@ void TestQgs3DRendering::testExtrudedPolygonsClipping()
map->setLightSources( { defaultLight.clone() } );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), map->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -517,7 +517,7 @@ void TestQgs3DRendering::testPhongShading()
map->setLightSources( { defaultLight.clone() } );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), map->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -569,7 +569,7 @@ void TestQgs3DRendering::testExtrudedPolygonsTexturedPhong()
map->setLightSources( { defaultLight.clone() } );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), map->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -623,7 +623,7 @@ void TestQgs3DRendering::testExtrudedPolygonsDataDefinedPhong()
map->setLightSources( { defaultLight.clone() } );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), map->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -677,7 +677,7 @@ void TestQgs3DRendering::testExtrudedPolygonsDataDefinedPhongClipping()
map->setLightSources( { defaultLight.clone() } );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), map->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -740,7 +740,7 @@ void TestQgs3DRendering::testExtrudedPolygonsDataDefinedGooch()
mapSettings->setLightSources( { defaultLight.clone() } );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( mapSettings->crs() );
flatTerrain->setCrs( mapSettings->crs(), mProject->transformContext() );
mapSettings->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -796,7 +796,7 @@ void TestQgs3DRendering::testExtrudedPolygonsDataDefinedGoochClipping()
mapSettings->setLightSources( { defaultLight.clone() } );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( mapSettings->crs() );
flatTerrain->setCrs( mapSettings->crs(), mProject->transformContext() );
mapSettings->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -837,7 +837,7 @@ void TestQgs3DRendering::testExtrudedPolygonsGoochShading()
map->setLayers( QList<QgsMapLayer *>() << mLayerBuildings << mLayerRgb );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), map->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -897,7 +897,7 @@ void TestQgs3DRendering::testExtrudedPolygonsMetalRoughShading()
map->setLightSources( { defaultLight.clone() } );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), mProject->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -949,7 +949,7 @@ void TestQgs3DRendering::testPolygonsEdges()
map->setLightSources( { defaultLight.clone() } );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), map->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -999,7 +999,7 @@ void TestQgs3DRendering::testLineRendering()
map->setLayers( QList<QgsMapLayer *>() << layerLines );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), map->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -1056,7 +1056,7 @@ void TestQgs3DRendering::testLineRenderingClipping()
map->setLayers( QList<QgsMapLayer *>() << layerLines );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), map->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -1115,7 +1115,7 @@ void TestQgs3DRendering::testLineRenderingCurved()
map->setLayers( QList<QgsMapLayer *>() << layerLines );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), map->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -1174,7 +1174,7 @@ void TestQgs3DRendering::testLineRenderingDataDefinedColors()
map->setLayers( QList<QgsMapLayer *>() << layerLines );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), map->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -1218,7 +1218,7 @@ void TestQgs3DRendering::testBufferedLineRendering()
map->setLightSources( { defaultLight.clone() } );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), map->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -1265,7 +1265,7 @@ void TestQgs3DRendering::testBufferedLineRenderingClipping()
map->setLightSources( { defaultLight.clone() } );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), map->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -1325,7 +1325,7 @@ void TestQgs3DRendering::testBufferedLineRenderingWidth()
map->setLightSources( { defaultLight.clone() } );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), map->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -1360,7 +1360,7 @@ void TestQgs3DRendering::testMapTheme()
map->setTerrainMapTheme( "theme_dtm" );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), map->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -1416,7 +1416,7 @@ void TestQgs3DRendering::testRuleBasedRenderer()
map->setLightSources( { defaultLight.clone() } );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), map->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -1475,7 +1475,7 @@ void TestQgs3DRendering::testFilteredRuleBasedRenderer()
map->setLightSources( { defaultLight.clone() } );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), map->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -1507,7 +1507,7 @@ void TestQgs3DRendering::testAnimationExport()
map.setExtent( fullExtent );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map.crs() );
flatTerrain->setCrs( map.crs(), mProject->transformContext() );
map.setTerrainGenerator( flatTerrain );
Qgs3DAnimationSettings animSettings;
@ -1578,7 +1578,7 @@ void TestQgs3DRendering::testInstancedRendering()
mapSettings->setLayers( QList<QgsMapLayer *>() << layerPointsZ.get() );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( mapSettings->crs() );
flatTerrain->setCrs( mapSettings->crs(), mapSettings->transformContext() );
mapSettings->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -1653,7 +1653,7 @@ void TestQgs3DRendering::testInstancedRenderingClipping()
mapSettings->setLayers( QList<QgsMapLayer *>() << layerPointsZ.get() );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( mapSettings->crs() );
flatTerrain->setCrs( mapSettings->crs(), mapSettings->transformContext() );
mapSettings->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -1754,7 +1754,7 @@ void TestQgs3DRendering::testBillboardRendering()
map->setLayers( QList<QgsMapLayer *>() << layerPointsZ.get() );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), map->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -1845,7 +1845,7 @@ void TestQgs3DRendering::testFilteredFlatTerrain()
map->setLayers( QList<QgsMapLayer *>() << mLayerRgb );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), map->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -1941,7 +1941,7 @@ void TestQgs3DRendering::testFilteredExtrudedPolygons()
map->setLightSources( { defaultLight.clone() } );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), map->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;

View File

@ -86,7 +86,7 @@ void TestQgsLayout3DMap::testBasic()
map->setLayers( QList<QgsMapLayer *>() << mLayerDtm );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), mProject->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsCameraPose cam;

View File

@ -155,7 +155,7 @@ void TestQgsMesh3DRendering::testMesh()
map->setLightSources( { defaultLight.clone() } );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), mProject->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -197,7 +197,7 @@ void TestQgsMesh3DRendering::testMesh_datasetOnFaces()
map->setLightSources( { defaultLight.clone() } );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), mProject->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -309,7 +309,7 @@ void TestQgsMesh3DRendering::testFilteredMesh()
map->setLightSources( { defaultLight.clone() } );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), mProject->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;
@ -350,7 +350,7 @@ void TestQgsMesh3DRendering::testMeshClipping()
map->setLightSources( { defaultLight.clone() } );
QgsFlatTerrainGenerator *flatTerrain = new QgsFlatTerrainGenerator;
flatTerrain->setCrs( map->crs() );
flatTerrain->setCrs( map->crs(), mProject->transformContext() );
map->setTerrainGenerator( flatTerrain );
QgsOffscreen3DEngine engine;