⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cylinder.cxx

📁 VTK入门样例(种类齐全)
💻 CXX
字号:

#include "vtkPolyDataMapper.h"
#include "vtkRenderWindow.h"
#include "vtkCamera.h"
#include "vtkActor.h"
#include "vtkRenderer.h"
#include "vtkPLOT3DReader.h"
#include "vtkPolyDataNormals.h"
#include "vtkRenderWindowInteractor.h"
#include "vtkTextProperty.h"
#include "vtkTexture.h"
#include "vtkActor2D.h"
#include "vtkContourFilter.h"
#include "vtkCastToConcrete.h"
#include "vtkProbeFilter.h"
#include "vtkPlaneSource.h"
#include "vtkRendererSource.h"
#include "vtkStructuredGridOutlineFilter.h"
#include "vtkProperty.h"
#include "vtkStructuredGrid.h"
#include "vtkPointData.h"

int main()
{
	vtkRenderer *ren1= vtkRenderer::New();
	vtkRenderer *ren2= vtkRenderer::New();
    vtkRenderWindow *renWin = vtkRenderWindow::New();
      renWin->AddRenderer( ren1 );
	  renWin->AddRenderer( ren2 );
	vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
      iren->SetRenderWindow(renWin);

  vtkPLOT3DReader *pl3d2 = vtkPLOT3DReader::New();
  //vtkPLOT3DReader is a reader object that reads PLOT3D formatted files 
  //and generates structured grid(s) on output. PLOT3D is a computer graphics 
  //program designed to visualize the grids and solutions of computational fluid dynamics.
	pl3d2->SetXYZFileName("combxyz.bin");
	pl3d2->SetQFileName("combq.bin");
	pl3d2-> SetScalarFunctionNumber (153);
	pl3d2->Update(); //force a read to occur


  vtkPLOT3DReader *pl3d = vtkPLOT3DReader::New();
	pl3d->SetXYZFileName("combxyz.bin");
	pl3d->SetQFileName("combq.bin");
	pl3d-> SetScalarFunctionNumber (120); 
	pl3d-> SetVectorFunctionNumber (202);
	pl3d->Update(); //force a read to occur

	vtkContourFilter *iso= vtkContourFilter::New();
      iso->SetInputConnection(pl3d->GetOutputPort());
      iso->SetValue(0,-100000);
	  iso->Update();

vtkProbeFilter *probe2=vtkProbeFilter::New();
  probe2-> SetInputConnection (iso-> GetOutputPort());
  probe2-> SetSource ((vtkDataSet *)pl3d2-> GetOutput());

vtkCastToConcrete *cast2 =vtkCastToConcrete::New();
  cast2-> SetInputConnection (probe2-> GetOutputPort());

vtkPolyDataNormals *normals=vtkPolyDataNormals::New();
    normals-> SetInput (cast2-> GetPolyDataOutput());
    normals-> SetFeatureAngle (45);

vtkPolyDataMapper *isoMapper=vtkPolyDataMapper::New();
    isoMapper ->SetInputConnection (normals-> GetOutputPort());
    isoMapper ->ScalarVisibilityOn();
	isoMapper ->SetScalarRange(pl3d2 ->GetOutput()-> GetPointData()-> GetScalars()-> GetRange());


    vtkActor *isoActor = vtkActor::New();
      isoActor->SetMapper(isoMapper);
	  isoActor->GetProperty()->SetColor(1,0,1);
	  
  // create outline
  vtkStructuredGridOutlineFilter *outline = vtkStructuredGridOutlineFilter::New();
    outline->SetInput(pl3d->GetOutput());
  vtkPolyDataMapper *outlineMapper = vtkPolyDataMapper::New();
    outlineMapper->SetInput(outline->GetOutput());
  vtkActor *outlineActor = vtkActor::New();
    outlineActor->SetMapper(outlineMapper);
    outlineActor->GetProperty()->SetColor(0,0,0);

	  ren1->AddActor(outlineActor);
	  ren1->AddActor(isoActor);
	  ren1->SetBackground( 1, 1, 1 );
	  ren1-> ResetCamera();

ren1-> GetActiveCamera()->SetClippingRange (3.95297, 50);
ren1-> GetActiveCamera()->SetFocalPoint(9.71821, 0.458166, 29.3999);
ren1-> GetActiveCamera()->SetPosition( 2.7439, -37.3196, 38.7167);
ren1-> GetActiveCamera()->SetViewUp (-0.16123, 0.264271, 0.950876);

vtkPlaneSource *aPlane=vtkPlaneSource::New();
vtkPolyDataMapper *aPlaneMapper=vtkPolyDataMapper::New();
  aPlaneMapper-> SetInputConnection(aPlane-> GetOutputPort());
  aPlaneMapper-> ImmediateModeRenderingOn();

vtkActor *screen=vtkActor::New();
  screen-> SetMapper (aPlaneMapper);

ren2-> AddActor (screen);
ren2-> SetViewport (.5,0 ,1, 1);
ren2-> GetActiveCamera()-> Azimuth(30);
ren2-> GetActiveCamera()->Elevation(30);
ren2-> SetBackground (.8,.4 ,.3);
ren1-> ResetCameraClippingRange();
ren2-> ResetCamera();
ren2-> ResetCameraClippingRange();
	//调整视窗大小
    renWin->SetSize( 800, 400 );
	renWin-> Render();

vtkRendererSource *ren1Image=vtkRendererSource::New();
  ren1Image-> SetInput (ren1);
  ren1Image-> DepthValuesOn();
vtkTexture *aTexture=vtkTexture::New();
  aTexture-> SetInputConnection (ren1Image-> GetOutputPort());

screen-> SetTexture (aTexture);
//	ren1-> GetActiveCamera()-> Zoom (1.5);

	iren->Initialize();
    iren->Start(); 


	ren1->Delete();
    renWin->Delete();
	iren->Delete();
    
	return 0;
}


	
	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -