@@ -41,8 +41,7 @@ QgsMesh3dSymbolWidget::QgsMesh3dSymbolWidget( QgsMeshLayer *meshLayer, QWidget *
41
41
connect ( mColorButtonWireframe , &QgsColorButton::colorChanged, this , &QgsMesh3dSymbolWidget::changed );
42
42
connect ( mSpinBoxWireframeLineWidth , static_cast <void ( QDoubleSpinBox::* )( double )>( &QDoubleSpinBox::valueChanged ),
43
43
this , &QgsMesh3dSymbolWidget::changed );
44
- connect ( mComboBoxTriangleCount , static_cast <void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ),
45
- this , &QgsMesh3dSymbolWidget::changed );
44
+ connect ( mLodSlider , &QSlider::valueChanged, this , &QgsMesh3dSymbolWidget::changed );
46
45
47
46
connect ( mColorRampShaderMinMaxReloadButton , &QPushButton::clicked, this , &QgsMesh3dSymbolWidget::reloadColorRampShaderMinMax );
48
47
connect ( mColorRampShaderWidget , &QgsColorRampShaderWidget::widgetChanged, this , &QgsMesh3dSymbolWidget::changed );
@@ -80,7 +79,11 @@ void QgsMesh3dSymbolWidget::setSymbol( const QgsMesh3DSymbol *symbol )
80
79
mGroupBoxWireframe ->setChecked ( symbol->wireframeEnabled () );
81
80
mColorButtonWireframe ->setColor ( symbol->wireframeLineColor () );
82
81
mSpinBoxWireframeLineWidth ->setValue ( symbol->wireframeLineWidth () );
83
- mComboBoxTriangleCount ->setCurrentIndex ( symbol->levelOfDetailIndex () );
82
+ if ( mLayer )
83
+ mLodSlider ->setValue ( mLayer ->triangularMeshLevelOfDetailCount () - symbol->levelOfDetailIndex () - 1 );
84
+ else
85
+ mLodSlider ->setValue ( mLodSlider ->maximum () );
86
+
84
87
85
88
mSpinBoxVerticaleScale ->setValue ( symbol->verticalScale () );
86
89
mComboBoxTextureType ->setCurrentIndex ( mComboBoxTextureType ->findData ( symbol->renderingStyle () ) );
@@ -121,26 +124,17 @@ void QgsMesh3dSymbolWidget::setLayer( QgsMeshLayer *meshLayer, bool updateSymbol
121
124
{
122
125
mLayer = meshLayer;
123
126
124
- mComboBoxTriangleCount ->clear ();
125
127
if ( meshLayer && meshLayer->meshSimplificationSettings ().isEnabled () )
126
128
{
127
- mComboBoxTriangleCount ->setVisible ( true );
129
+ mLodSlider ->setVisible ( true );
128
130
mLabelTriangleCount ->setVisible ( true );
129
131
int lodCount = meshLayer->triangularMeshLevelOfDetailCount ();
130
- int originalMeshTrianglesCount = meshLayer->triangularMeshByLodIndex ( 0 )->triangles ().count ();
131
- QString text = tr ( " Original (%1 triangles)" ).arg ( originalMeshTrianglesCount );
132
- mComboBoxTriangleCount ->addItem ( text );
133
- for ( int i = 1 ; i < lodCount; ++i )
134
- {
135
- int triangleCount = meshLayer->triangularMeshByLodIndex ( i )->triangles ().count ();
136
- int reduction = originalMeshTrianglesCount / triangleCount;
137
- text = tr ( " 1/%1 (%2 triangles)" ).arg ( reduction ).arg ( triangleCount );
138
- mComboBoxTriangleCount ->addItem ( text );
139
- }
132
+ mLodSlider ->setTickInterval ( 1 );
133
+ mLodSlider ->setMaximum ( lodCount - 1 );
140
134
}
141
135
else
142
136
{
143
- mComboBoxTriangleCount ->setVisible ( false );
137
+ mLodSlider ->setVisible ( false );
144
138
mLabelTriangleCount ->setVisible ( false );
145
139
}
146
140
@@ -185,7 +179,11 @@ std::unique_ptr<QgsMesh3DSymbol> QgsMesh3dSymbolWidget::symbol() const
185
179
sym->setWireframeEnabled ( mGroupBoxWireframe ->isChecked () );
186
180
sym->setWireframeLineColor ( mColorButtonWireframe ->color () );
187
181
sym->setWireframeLineWidth ( mSpinBoxWireframeLineWidth ->value () );
188
- sym->setLevelOfDetailIndex ( mComboBoxTriangleCount ->currentIndex () );
182
+ if ( mLayer )
183
+ sym->setLevelOfDetailIndex ( mLayer ->triangularMeshLevelOfDetailCount () - mLodSlider ->sliderPosition () - 1 );
184
+ else
185
+ sym->setLevelOfDetailIndex ( 0 );
186
+
189
187
sym->setVerticalScale ( mSpinBoxVerticaleScale ->value () );
190
188
sym->setRenderingStyle ( static_cast <QgsMesh3DSymbol::RenderingStyle>( mComboBoxTextureType ->currentData ().toInt () ) );
191
189
sym->setSingleMeshColor ( mMeshSingleColorButton ->color () );
0 commit comments