@@ -19,7 +19,7 @@ VTK_MODULE_INIT(vtkRenderingFreeType)
19
19
#include " imagejockey/paraviewscalarbar/vtkParaViewScalarBar.h"
20
20
#include " util.h"
21
21
#include < QProgressDialog>
22
- #include < QVTKOpenGLWidget .h>
22
+ #include < QVTKOpenGLNativeWidget .h>
23
23
#include < QMessageBox>
24
24
#include < vtkAxesActor.h>
25
25
#include < vtkOrientationMarkerWidget.h>
@@ -64,23 +64,23 @@ GaborFilterDialog::GaborFilterDialog(IJAbstractCartesianGrid *inputGrid,
64
64
}
65
65
66
66
// /-------------------setup the 3D viewer-------------------
67
- _vtkwidget = new QVTKOpenGLWidget ();
67
+ _vtkwidget = new QVTKOpenGLNativeWidget ();
68
68
69
69
_renderer = vtkSmartPointer<vtkRenderer>::New ();
70
70
71
71
// enable antialiasing
72
72
_renderer->SetUseFXAA ( true );
73
73
74
- _vtkwidget->SetRenderWindow (vtkGenericOpenGLRenderWindow::New ());
75
- _vtkwidget->GetRenderWindow ()->AddRenderer (_renderer);
74
+ _vtkwidget->setRenderWindow (vtkGenericOpenGLRenderWindow::New ());
75
+ _vtkwidget->renderWindow ()->AddRenderer (_renderer);
76
76
_vtkwidget->setFocusPolicy (Qt::StrongFocus);
77
77
78
78
// ----------------------adding the orientation axes-------------------------
79
79
vtkSmartPointer<vtkAxesActor> axes = vtkSmartPointer<vtkAxesActor>::New ();
80
80
_vtkAxesWidget = vtkSmartPointer<vtkOrientationMarkerWidget>::New ();
81
81
_vtkAxesWidget->SetOutlineColor (0.9300 , 0.5700 , 0.1300 );
82
82
_vtkAxesWidget->SetOrientationMarker (axes);
83
- _vtkAxesWidget->SetInteractor (_vtkwidget->GetRenderWindow ()->GetInteractor ());
83
+ _vtkAxesWidget->SetInteractor (_vtkwidget->renderWindow ()->GetInteractor ());
84
84
_vtkAxesWidget->SetViewport (0.0 , 0.0 , 0.2 , 0.2 );
85
85
_vtkAxesWidget->SetEnabled (1 );
86
86
_vtkAxesWidget->InteractiveOn ();
@@ -155,7 +155,8 @@ void GaborFilterDialog::updateDisplay()
155
155
double featureSizeFinal = ( featureSizeXFinal + featureSizeYFinal ) / 2 ;
156
156
// get the feature size step size (intial size is greater because initial frequency is lower)
157
157
double dFeatureSize = ( featureSizeInitial - featureSizeFinal ) / ( s1 - s0 ) ;
158
-
158
+ // get the z coordinate of the origin of the spectrogram
159
+ double spectrogramOriginZ = featureSizeFinal - 0.5 * dFeatureSize;
159
160
160
161
// ///--------------------code to render the spectrogram cube-----------------------
161
162
vtkSmartPointer<vtkActor> spectrogramActor = vtkSmartPointer<vtkActor>::New ();
@@ -182,7 +183,7 @@ void GaborFilterDialog::updateDisplay()
182
183
dFeatureSize);
183
184
spectrogramGridAsCellCentered->SetOrigin ( m_inputGrid->getOriginX () - m_inputGrid->getCellSizeI ()/2 ,
184
185
m_inputGrid->getOriginY () - m_inputGrid->getCellSizeJ ()/2 ,
185
- featureSizeFinal - 0.5 * dFeatureSize );
186
+ spectrogramOriginZ );
186
187
spectrogramGridAsCellCentered->SetExtent ( extent[0 ], extent[1 ]+1 ,
187
188
extent[2 ], extent[3 ]+1 ,
188
189
extent[4 ], extent[5 ]+1 );
@@ -218,7 +219,8 @@ void GaborFilterDialog::updateDisplay()
218
219
vtkSmartPointer<vtkThreshold> threshold = vtkSmartPointer<vtkThreshold>::New ();
219
220
{
220
221
threshold->SetInputData ( spectrogramGridAsCellCentered );
221
- threshold->ThresholdByUpper (1 ); // Criterion is cells whose scalars are greater or equal to threshold.
222
+ threshold->SetUpperThreshold (1 ); // Criterion is cells whose scalars are greater or equal to threshold.
223
+ threshold->SetThresholdFunction ( vtkThreshold::THRESHOLD_UPPER );
222
224
threshold->SetInputArrayToProcess (0 , 0 , 0 , vtkDataObject::FIELD_ASSOCIATION_CELLS, " Visibility" );
223
225
threshold->Update ();
224
226
}
@@ -249,7 +251,7 @@ void GaborFilterDialog::updateDisplay()
249
251
_scalarBar->SetTitle (" amplitude" );
250
252
// scalarBar->SetNumberOfLabels( 4 );
251
253
_scalarBar->SetRenderer ( _renderer );
252
- _scalarBar->SetInteractor ( _vtkwidget->GetRenderWindow ()->GetInteractor () );
254
+ _scalarBar->SetInteractor ( _vtkwidget->renderWindow ()->GetInteractor () );
253
255
254
256
// Create a text style for the cube axes
255
257
vtkSmartPointer<vtkTextProperty> tprop = vtkSmartPointer<vtkTextProperty>::New ();
@@ -282,11 +284,18 @@ void GaborFilterDialog::updateDisplay()
282
284
spectral::arrayPtr gridData ( m_inputGrid->createSpectralArray ( m_inputVariableIndex ) );
283
285
ImageJockeyUtils::makeVTKImageDataFromSpectralArray ( out, *gridData );
284
286
285
- // put the input grid a bit far from the spectrogram cube
287
+ // put the input grid a bit below from the spectrogram cube
286
288
double * origin = out->GetOrigin ();
287
- origin[2 ] -= 10.0 ;
289
+ origin[0 ] = m_inputGrid->getOriginX ();
290
+ origin[1 ] = m_inputGrid->getOriginY ();
291
+ origin[2 ] = spectrogramOriginZ - 10.0 ;
288
292
out->SetOrigin ( origin );
289
293
294
+ // render the input grid with the correct cell sizes
295
+ out->SetSpacing ( m_inputGrid->getCellSizeI (),
296
+ m_inputGrid->getCellSizeJ (),
297
+ m_inputGrid->getCellSizeK ());
298
+
290
299
// Create a color table
291
300
vtkSmartPointer<vtkLookupTable> lut = vtkSmartPointer<vtkLookupTable>::New ();
292
301
{
@@ -330,7 +339,7 @@ void GaborFilterDialog::updateDisplay()
330
339
_renderer->AddActor ( gridActor );
331
340
_currentActors.push_back ( gridActor );
332
341
_renderer->ResetCamera ();
333
- _vtkwidget->GetRenderWindow ()->Render ();
342
+ _vtkwidget->renderWindow ()->Render ();
334
343
}
335
344
336
345
void GaborFilterDialog::onScan ()
@@ -408,7 +417,7 @@ void GaborFilterDialog::onFreqAzSelectionsUpdated(const GaborFrequencyAzimuthSel
408
417
409
418
void GaborFilterDialog::onUserEditedAFrequency (QString freqValue)
410
419
{
411
- Q_UNUSED ( freqValue );
420
+ Q_UNUSED ( freqValue )
412
421
// get the user-entered topological frequencies
413
422
// the frequencies are topological (that is, inverse of cell counts)
414
423
// because the Gabor transform involves convolutions, which are cell-centered
0 commit comments