Don't show texture controls in terrain shading widget

This commit is contained in:
Nyall Dawson 2020-07-31 10:52:44 +10:00
parent ce13ca2007
commit 7c08046a47
8 changed files with 27 additions and 18 deletions

View File

@ -9,5 +9,7 @@ QgsAbstractMaterialSettings.InstancedPoints = QgsMaterialSettingsRenderingTechni
QgsAbstractMaterialSettings.InstancedPoints.__doc__ = "Instanced based rendering, requiring triangles and point data"
QgsAbstractMaterialSettings.Points = QgsMaterialSettingsRenderingTechnique.Points
QgsAbstractMaterialSettings.Points.__doc__ = "Point based rendering, requires point data"
QgsMaterialSettingsRenderingTechnique.__doc__ = 'Material rendering techniques\n\n.. versionadded:: 3.16\n\n' + '* ``Triangles``: ' + QgsMaterialSettingsRenderingTechnique.Triangles.__doc__ + '\n' + '* ``Lines``: ' + QgsMaterialSettingsRenderingTechnique.Lines.__doc__ + '\n' + '* ``InstancedPoints``: ' + QgsMaterialSettingsRenderingTechnique.InstancedPoints.__doc__ + '\n' + '* ``Points``: ' + QgsMaterialSettingsRenderingTechnique.Points.__doc__
QgsAbstractMaterialSettings.Terrain = QgsMaterialSettingsRenderingTechnique.Terrain
QgsAbstractMaterialSettings.Terrain.__doc__ = "Terrain rendering"
QgsMaterialSettingsRenderingTechnique.__doc__ = 'Material rendering techniques\n\n.. versionadded:: 3.16\n\n' + '* ``Triangles``: ' + QgsMaterialSettingsRenderingTechnique.Triangles.__doc__ + '\n' + '* ``Lines``: ' + QgsMaterialSettingsRenderingTechnique.Lines.__doc__ + '\n' + '* ``InstancedPoints``: ' + QgsMaterialSettingsRenderingTechnique.InstancedPoints.__doc__ + '\n' + '* ``Points``: ' + QgsMaterialSettingsRenderingTechnique.Points.__doc__ + '\n' + '* ``Terrain``: ' + QgsMaterialSettingsRenderingTechnique.Terrain.__doc__
# --

View File

@ -17,6 +17,7 @@ enum class QgsMaterialSettingsRenderingTechnique
Lines,
InstancedPoints,
Points,
Terrain,
};

View File

@ -38,6 +38,7 @@ enum class QgsMaterialSettingsRenderingTechnique SIP_MONKEYPATCH_SCOPEENUM_UNNES
Lines, //!< Line based rendering, requires line data
InstancedPoints, //!< Instanced based rendering, requiring triangles and point data
Points, //!< Point based rendering, requires point data
Terrain, //!< Terrain rendering
};

View File

@ -34,6 +34,7 @@ bool QgsGoochMaterialSettings::supportsTechnique( QgsMaterialSettingsRenderingTe
switch ( technique )
{
case QgsMaterialSettingsRenderingTechnique::Triangles:
case QgsMaterialSettingsRenderingTechnique::Terrain:
return true;
case QgsMaterialSettingsRenderingTechnique::Lines:
@ -81,6 +82,7 @@ Qt3DRender::QMaterial *QgsGoochMaterialSettings::toMaterial( QgsMaterialSettings
switch ( technique )
{
case QgsMaterialSettingsRenderingTechnique::Triangles:
case QgsMaterialSettingsRenderingTechnique::Terrain:
{
Qt3DExtras::QGoochMaterial *material = new Qt3DExtras::QGoochMaterial;
material->setDiffuse( mDiffuse );

View File

@ -41,6 +41,7 @@ bool QgsPhongMaterialSettings::supportsTechnique( QgsMaterialSettingsRenderingTe
case QgsMaterialSettingsRenderingTechnique::Lines:
case QgsMaterialSettingsRenderingTechnique::InstancedPoints:
case QgsMaterialSettingsRenderingTechnique::Points:
case QgsMaterialSettingsRenderingTechnique::Terrain:
return true;
}
return false;
@ -120,8 +121,8 @@ Qt3DRender::QMaterial *QgsPhongMaterialSettings::toMaterial( QgsMaterialSettings
case QgsMaterialSettingsRenderingTechnique::Triangles:
case QgsMaterialSettingsRenderingTechnique::InstancedPoints:
case QgsMaterialSettingsRenderingTechnique::Points:
case QgsMaterialSettingsRenderingTechnique::Terrain:
{
bool fitsInCache = false;
QImage textureSourceImage;

View File

@ -105,7 +105,7 @@ Qgs3DMapConfigWidget::Qgs3DMapConfigWidget( Qgs3DMapSettings *map, QgsMapCanvas
chkShowLightSourceOrigins->setChecked( mMap->showLightSourceOrigins() );
groupTerrainShading->setChecked( mMap->isTerrainShadingEnabled() );
widgetTerrainMaterial->setDiffuseVisible( false );
widgetTerrainMaterial->setTechnique( QgsMaterialSettingsRenderingTechnique::Terrain );
QgsPhongMaterialSettings terrainShadingMaterial = mMap->terrainShadingMaterial();
widgetTerrainMaterial->setSettings( &terrainShadingMaterial, nullptr );

View File

@ -64,6 +64,21 @@ void QgsPhongMaterialWidget::setTechnique( QgsMaterialSettingsRenderingTechnique
break;
}
case QgsMaterialSettingsRenderingTechnique::Terrain:
{
lblAmbient->setVisible( true );
btnAmbient->setVisible( true );
lblDiffuse->setVisible( false );
btnDiffuse->setVisible( false );
lblSpecular->setVisible( true );
btnSpecular->setVisible( true );
lblShininess->setVisible( true );
spinShininess->setVisible( true );
activateTexturingUI( false );
break;
}
case QgsMaterialSettingsRenderingTechnique::Lines:
{
lblAmbient->setVisible( true );
@ -97,17 +112,6 @@ void QgsPhongMaterialWidget::setTechnique( QgsMaterialSettingsRenderingTechnique
}
}
void QgsPhongMaterialWidget::setDiffuseVisible( bool visible )
{
lblDiffuse->setVisible( visible );
btnDiffuse->setVisible( visible );
}
bool QgsPhongMaterialWidget::isDiffuseVisible() const
{
return btnDiffuse->isVisible();
}
void QgsPhongMaterialWidget::setSettings( const QgsAbstractMaterialSettings *settings, QgsVectorLayer * )
{
const QgsPhongMaterialSettings *phongMaterial = dynamic_cast< const QgsPhongMaterialSettings * >( settings );

View File

@ -34,13 +34,11 @@ class QgsPhongMaterialWidget : public QgsMaterialSettingsWidget, private Ui::Pho
static QgsMaterialSettingsWidget *create();
void setTechnique( QgsMaterialSettingsRenderingTechnique technique ) override;
void setDiffuseVisible( bool visible );
bool isDiffuseVisible() const;
void setSettings( const QgsAbstractMaterialSettings *settings, QgsVectorLayer *layer ) override;
QgsAbstractMaterialSettings *settings() override;
private:
//! activates the texturing UI (to make sure texturing UI isn't visible when the user doesn't need it like in the 3D configuration window)
void activateTexturingUI( bool activated );