• VTK初学一,a Mesh from vtkImageData


    #ifndef INITIAL_OPENGL
    #define INITIAL_OPENGL
    #include <vtkAutoInit.h>
    VTK_MODULE_INIT(vtkRenderingOpenGL)
    VTK_MODULE_INIT(vtkInteractionStyle)
    #endif
    
    
    #include <iostream>
    using namespace std;
    #include <vtkVersion.h>
    #include <vtkPolyData.h>
    #include <vtkProperty.h>
    #include <vtkMath.h>
    #include <vtkSmartPointer.h>
    #include <vtkPolyDataMapper.h>
    #include <vtkActor.h>
    #include <vtkRenderWindow.h>
    #include <vtkRenderer.h>
    #include <vtkRenderWindowInteractor.h>
    #include <vtkImageData.h>
    #include <vtkGreedyTerrainDecimation.h>
    #include <vtkInteractorStyleTrackballCamera.h>
    #include <vtkInteractionWidgetsModule.h>
    
    
    void myShow(vtkGreedyTerrainDecimation* anInput)
    {
    
    
        vtkSmartPointer<vtkPolyDataMapper> aMapper=vtkSmartPointer<vtkPolyDataMapper>::New();
        aMapper->SetInputConnection(anInput->GetOutputPort());
        aMapper->ScalarVisibilityOn();
    
    
        vtkSmartPointer<vtkActor> anActor=vtkSmartPointer<vtkActor>::New();
        anActor->SetMapper(aMapper);
        anActor->GetProperty()->SetInterpolationToFlat();
        anActor->GetProperty()->EdgeVisibilityOn();
        anActor->GetProperty()->SetEdgeColor(1,0,0);
    
    
        vtkSmartPointer<vtkRenderer> ren1=vtkSmartPointer<vtkRenderer>::New();
        vtkSmartPointer<vtkRenderWindow> renWin=vtkSmartPointer<vtkRenderWindow>::New();
        ren1->AddActor(anActor);
        ren1->ResetCamera();
        ren1->SetBackground(1,1,1);
        renWin->AddRenderer(ren1);
        renWin->SetSize(512,512);
    
    
        vtkSmartPointer<vtkRenderWindowInteractor> iren=vtkSmartPointer<vtkRenderWindowInteractor>::New();
        vtkSmartPointer<vtkInteractorStyleTrackballCamera> style=vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
        iren->SetRenderWindow(renWin);
        iren->SetInteractorStyle(style);
        iren->Start();
    }
    int main()
    {
        vtkSmartPointer<vtkImageData> image=vtkSmartPointer<vtkImageData>::New();
        image->SetDimensions(20,20,1);//头两个参数分别是沿x、y方向的取样点数,第三个参数是z方向的取样点数
        image->AllocateScalars(VTK_UNSIGNED_CHAR,1);
        int dims[3];
        image->GetDimensions(dims);
        for(double i=0;i<dims[0];i++)
        {
            for(double j=0;j<dims[1];j++)
            {
                unsigned char* pixel=static_cast<unsigned char*>(image->GetScalarPointer(i,j,0));
                pixel[0]=vtkMath::Round(vtkMath::Random(0,5));//在(i,j)位置上的“高”
            }
        }
        vtkSmartPointer<vtkGreedyTerrainDecimation>decimation=vtkSmartPointer<vtkGreedyTerrainDecimation>::New();
        decimation->SetInputData(image);
        decimation->Update();
        //可视化
        myShow(decimation);
        return 0;
    }
    
    
    
    
  • 相关阅读:
    JDBC-HikariCP
    11、JDBC-Druid
    JDBC-DBCP
    JDBC-C3P0
    第十七篇-使用RadioGroup实现单项选择
    第十六篇-使用CheckBox实现多项选择
    第一篇-ubuntu18.04访问共享文件夹
    第十五篇-EditText做简单的登录框
    第十四篇-ImageButton控制聚焦,单击,常态三种状态的显示背景
    第十三篇-通过Button设置文本背景颜色
  • 原文地址:https://www.cnblogs.com/phoenixdsg/p/6120493.html
Copyright © 2020-2023  润新知