Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <vtkOutlineFilter.h>
- #include "vtkConeSource.h"
- #include "vtkPolyDataMapper.h"
- #include "vtkRenderWindow.h"
- #include "vtkRenderWindowInteractor.h"
- #include "vtkCamera.h"
- #include "vtkActor.h"
- #include "vtkRenderer.h"
- #include "vtkInteractorStyleTrackballCamera.h"
- #include "vtkInteractorStyleJoystickCamera.h"
- #include "vtkInteractorStyleRubberBandZoom.h"
- #include <vtkDataSetReader.h>
- #include <vtkDataSetMapper.h>
- #include <vtkLookupTable.h>
- #include "vtkPointData.h"
- #include "vtkContourFilter.h"
- #include <vtkScalarBarActor.h>
- #include <vtkProperty.h>
- #include "vtkConeSource.h"
- #include "vtkPolyDataMapper.h"
- #include "vtkRenderWindow.h"
- #include "vtkRenderWindowInteractor.h"
- #include "vtkCamera.h"
- #include "vtkActor.h"
- #include "vtkRenderer.h"
- #include "vtkInteractorStyleTrackballCamera.h"
- #include "vtkInteractorStyleJoystickCamera.h"
- #include "vtkInteractorStyleRubberBandZoom.h"
- #include <vtkDataSetReader.h>
- #include <vtkDataSetMapper.h>
- #include <vtkWarpVector.h>
- #include <vtkPointDataToCellData.h>
- #include <vtkThreshold.h>
- #include <vtkPointSetAlgorithm.h>
- #include <vtkPointData.h>
- #include <vtkConnectivityFilter.h>
- #include <vtkProperty.h>
- #include <vtkGeometryFilter.h>
- #include <vtkPolyDataNormals.h>
- #include <vtkLookupTable.h>
- #include <vtkContourFilter.h>
- #include <vtkDataSet.h>
- #include <vtkUnstructuredGridReader.h>
- #include <vtkCellArray.h>
- #include <vtkDoubleArray.h>
- #include <vtkLine.h>
- #include <vtkPoints.h>
- #include <vtkPolyData.h>
- #include <vtkRenderer.h>
- #include <vtkSmartPointer.h>
- #include <vtkWarpVector.h>
- #include <vtkSmartPointer.h>
- #include <vtkBoxClipDataSet.h>
- #include <vtkLookupTable.h>
- #include <vtkMetaImageReader.h>
- #include <vtkImageData.h>
- #include <vtkDataSetSurfaceFilter.h>
- #include <vtkDataSetMapper.h>
- #include <vtkCamera.h>
- #include <vtkActor.h>
- #include <vtkRenderWindow.h>
- #include <vtkRenderer.h>
- #include <vtkRenderWindowInteractor.h>
- #include <vtkVersion.h>
- #include <vtkSmartPointer.h>
- #include <vtkPolyData.h>
- #include <vtkUnstructuredGrid.h>
- #include <vtkCellArray.h>
- #include <vtkDataSetSurfaceFilter.h>
- #include <vtkPointSource.h>
- #include <vtkActor.h>
- #include <vtkCamera.h>
- #include <vtkColorTransferFunction.h>
- #include <vtkDataSetMapper.h>
- #include <vtkLookupTable.h>
- #include <vtkNamedColors.h>
- #include <vtkPolyDataNormals.h>
- #include <vtkPolyDataReader.h>
- #include <vtkRenderWindow.h>
- #include <vtkRenderWindowInteractor.h>
- #include <vtkRenderer.h>
- #include <vtkSmartPointer.h>
- #include <vtkVectorDot.h>
- #include <vtkWarpVector.h>
- int main() {
- // NUSKAITOMAS OBJEKTAS
- vtkDataSetReader *object = vtkDataSetReader::New();
- object->SetFileName("ubgrid.vtk");
- object->Update();
- // IŠTRAUKIAMA ATKARTPA
- double bounds[6];
- object->GetOutput()->GetBounds(bounds);
- double range[2];
- object->GetOutput()->GetScalarRange(range);
- double minBoxPoint[3];
- double maxBoxPoint[3];
- minBoxPoint[0] = (bounds[1] - bounds[0]) / 1.005 + bounds[0];
- minBoxPoint[1] = (bounds[3] - bounds[2]) / 1.005 + bounds[2];
- minBoxPoint[2] = (bounds[5] - bounds[4]) / 1.005 + bounds[4];
- maxBoxPoint[0] = bounds[1];
- maxBoxPoint[1] = bounds[3];
- maxBoxPoint[2] = bounds[5];
- vtkSmartPointer<vtkBoxClipDataSet> boxClip =
- vtkSmartPointer<vtkBoxClipDataSet>::New();
- boxClip->SetInputConnection(object->GetOutputPort());
- boxClip->GenerateClippedOutputOn();
- const double minusx[] = { -1.0, -0.0, 0.0 };
- const double minusy[] = { -1.0, -0.0, 0.0 };
- const double minusz[] = { 0.0, 0.0, -1.0 };
- const double plusx[] = { 1.0, 0.0, 0.0 };
- const double plusy[] = { 0.0, 1.0, 0.0 };
- const double plusz[] = { 0.0, 0.0, 1.0 };
- boxClip->SetBoxClip(minusx, minBoxPoint,
- minusy, minBoxPoint,
- minusz, minBoxPoint,
- plusx, maxBoxPoint,
- plusy, maxBoxPoint,
- plusz, maxBoxPoint);
- vtkSmartPointer<vtkDataSetSurfaceFilter> surfaceIn =
- vtkSmartPointer<vtkDataSetSurfaceFilter>::New();
- surfaceIn->SetInputConnection(boxClip->GetOutputPort(0));
- vtkSmartPointer<vtkDataSetMapper> mapperIn = vtkSmartPointer<vtkDataSetMapper>::New();
- mapperIn->SetInputConnection(surfaceIn->GetOutputPort());
- mapperIn->SetScalarRange(object->GetOutput()->GetPointData()->GetArray("group/Vector1")->GetRange(0)); // Atkarpa nuspalvinta group/Vector1
- mapperIn->ColorByArrayComponent("group/Vector1", 0);
- mapperIn->SetScalarModeToUsePointFieldData();
- vtkSmartPointer<vtkActor> actorIn =
- vtkSmartPointer<vtkActor>::New();
- actorIn->SetMapper(mapperIn);
- actorIn->AddPosition(-90.0 * (maxBoxPoint[0] - minBoxPoint[0]), // x asis
- -.0 * (maxBoxPoint[1] - minBoxPoint[1]), // y asis
- -.5 * (maxBoxPoint[2] - minBoxPoint[2]));
- ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
- vtkSmartPointer<vtkUnstructuredGrid> unstructuredGrid = vtkSmartPointer<vtkUnstructuredGrid>::New();
- vtkSmartPointer<vtkDataSetSurfaceFilter> surfaceFilter = vtkSmartPointer<vtkDataSetSurfaceFilter>::New();
- surfaceFilter->SetInputData(unstructuredGrid);
- vtkPolyData* polydata = surfaceFilter->GetOutput();
- /////////////////////////////////////////////////////
- vtkSmartPointer<vtkWarpVector> warp = vtkSmartPointer<vtkWarpVector>::New();
- warp->SetInputConnection(object->GetOutputPort());
- warp->SetScaleFactor(0.5);
- vtkSmartPointer<vtkPolyDataNormals> normals =
- vtkSmartPointer<vtkPolyDataNormals>::New();
- normals->SetInputConnection(warp->GetOutputPort());
- vtkSmartPointer<vtkVectorDot> color = vtkSmartPointer<vtkVectorDot>::New();
- color->SetInputConnection(normals->GetOutputPort());
- vtkSmartPointer<vtkActor> objectActor = vtkSmartPointer<vtkActor>::New();
- objectActor->SetMapper(mapperIn);
- // Pridedamas outline original DATA
- vtkSmartPointer<vtkOutlineFilter> outlineData =
- vtkSmartPointer<vtkOutlineFilter>::New();
- outlineData->SetInputConnection(object->GetOutputPort());
- vtkSmartPointer<vtkPolyDataMapper> mapOutline =
- vtkSmartPointer<vtkPolyDataMapper>::New();
- mapOutline->SetInputConnection(outlineData->GetOutputPort());
- vtkSmartPointer<vtkActor> outline =
- vtkSmartPointer<vtkActor>::New();
- outline->SetMapper(mapOutline);
- outline->GetProperty()->SetColor(1, 1, 1);
- // vtkRenderer: sukuriamas renderis, prie kurio prijungiamas kugio aktorius
- vtkRenderer *ren1 = vtkRenderer::New();
- ren1->AddActor(outline);
- ren1->AddActor(actorIn);
- ren1->SetBackground(0.1, 0.2, 0.4);
- // vtkRenderWindow: sukuriamas atvaizdavimo langas, prie kurio prijungiamas renderis
- vtkRenderWindow *renWin = vtkRenderWindow::New();
- renWin->AddRenderer(ren1);
- renWin->SetSize(900, 900);
- // vtkRenderWindowInteractor: sukuriamas interaktoriaus objektas, prie kurio prijungiams atvaizdavimo langas
- vtkRenderWindowInteractor *iren = vtkRenderWindowInteractor::New();
- iren->SetRenderWindow(renWin);
- // vtkInteractorStyleJoystickCamera: ijungiams JoystickCamera stilius
- vtkInteractorStyleJoystickCamera*style = vtkInteractorStyleJoystickCamera::New();
- iren->SetInteractorStyle(style);
- // vtkRenderWindowInteractor: inicializacija ir paleidimas (vietoje atvaizdavimo ciklo)
- iren->Initialize();
- iren->Start();
- // Naikinami nereikalingi objektai, atklaisvinama atmintis
- object->Delete();
- ren1->Delete();
- renWin->Delete();
- iren->Delete();
- style->Delete();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement