[vtkusers] Qt, QVTKWidget gridActor always in front
    zackster 
    zafer.leylek at gmail.com
       
    Sun Jan 11 19:08:21 EST 2015
    
    
  
Hi,
Below is a modified version of the SidebySideRenderWindowsQT example. I have
added a structured/image actor to the renderwindow that contains the sphere.
My problem is that the structured grid is always in front of the sphere.
This is not the case when not using QVTKWidget.  Any ideas??
#include "SideBySideRenderWindowsQt.h"
#include <vtkDataObjectToTable.h>
#include <vtkElevationFilter.h>
#include <vtkPolyDataMapper.h>
#include <vtkQtTableView.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkSphereSource.h>
#include <vtkCubeSource.h>
#include <vtkSmartPointer.h>
#include <vtkProperty.h>
#include <vtkDataSetMapper.h>
#include <vtkVersion.h>
#include <vtkImageData.h>
#include <vtkPoints.h>
#include <vtkImageDataToPointSet.h>
#include <vtkStructuredGrid.h>
// Constructor
SideBySideRenderWindowsQt::SideBySideRenderWindowsQt()
{
  this->setupUi(this);
  // Sphere
  vtkSmartPointer<vtkSphereSource> sphereSource =
      vtkSmartPointer<vtkSphereSource>::New();
  sphereSource->Update();
  vtkSmartPointer<vtkPolyDataMapper> sphereMapper =
      vtkSmartPointer<vtkPolyDataMapper>::New();
  sphereMapper->SetInputConnection(sphereSource->GetOutputPort());
  vtkSmartPointer<vtkActor> sphereActor =
      vtkSmartPointer<vtkActor>::New();
  sphereActor->SetMapper(sphereMapper);
  // Cube
  vtkSmartPointer<vtkCubeSource> cubeSource =
      vtkSmartPointer<vtkCubeSource>::New();
  cubeSource->Update();
  vtkSmartPointer<vtkPolyDataMapper> cubeMapper =
      vtkSmartPointer<vtkPolyDataMapper>::New();
  cubeMapper->SetInputConnection(cubeSource->GetOutputPort());
  vtkSmartPointer<vtkActor> cubeActor =
      vtkSmartPointer<vtkActor>::New();
  cubeActor->SetMapper(cubeMapper);
  // VTK Renderer
  vtkSmartPointer<vtkRenderer> leftRenderer =
      vtkSmartPointer<vtkRenderer>::New();
  leftRenderer->AddActor(sphereActor);
 
  vtkSmartPointer<vtkRenderer> rightRenderer =
      vtkSmartPointer<vtkRenderer>::New();
 
  // Add Actor to renderer
  rightRenderer->AddActor(cubeActor);
  /*
   * Modification 1
   */
  sphereActor->GetProperty()->BackfaceCullingOn();
  sphereActor->GetProperty()->SetColor(1,0,1);
  /*
   * Modification 2
   */
  vtkSmartPointer<vtkImageData> image =vtkSmartPointer<vtkImageData>::New();
  image->SetDimensions(3,3,1);
  image->SetSpacing(1.0, 1.0, 0.0);
  image->SetOrigin(-1.5, -1.5, -2);
  vtkSmartPointer<vtkImageDataToPointSet> imageDataToPointSet
=vtkSmartPointer<vtkImageDataToPointSet>::New();
#if VTK_MAJOR_VERSION <= 5
  imageDataToPointSet->SetInputConnection(image->GetProducerPort());
#else
  imageDataToPointSet->SetInputData(image);
#endif
  imageDataToPointSet->Update();
  vtkSmartPointer<vtkDataSetMapper> imageGridMapper =
vtkSmartPointer<vtkDataSetMapper>::New();
  vtkSmartPointer<vtkActor> imageGridActor =
vtkSmartPointer<vtkActor>::New();
  imageGridMapper->SetInputConnection(imageDataToPointSet->GetOutputPort());
  imageGridActor->SetMapper(imageGridMapper);
  imageGridActor->GetProperty()->SetColor(0,0,1);
  leftRenderer->AddActor(imageGridActor);
  // VTK/Qt wedded
  this->qvtkWidgetLeft->GetRenderWindow()->AddRenderer(leftRenderer);
  this->qvtkWidgetRight->GetRenderWindow()->AddRenderer(rightRenderer);
  // Set up action signals and slots
  connect(this->actionExit, SIGNAL(triggered()), this, SLOT(slotExit()));
}
void SideBySideRenderWindowsQt::slotExit()
{
  qApp->exit();
}
--
View this message in context: http://vtk.1045678.n5.nabble.com/Qt-QVTKWidget-gridActor-always-in-front-tp5730071.html
Sent from the VTK - Users mailing list archive at Nabble.com.
    
    
More information about the vtkusers
mailing list