VTK ( 002) 基础 创建一个DEMO

VTK ( 002) 基础

创建实例

1. vtkNew<vtkClass-name> var-name;
2. vtkSmartPointer<vtkClass-name> var-name;
3. vtkClass-name *var-name;
4. vtkClass-name var-name;

创建一个窗口显示点集

#include <vtkActor.h>
#include <vtkPoints.h>
#include <vtkPolyData.h>
#include <vtkPolyDataMapper.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkSmartPointer.h>
#include <vtkVertexGlyphFilter.h>

void SetActorProperties(vtkSmartPointer<vtkActor> actor, double pointSize)
{
    actor->GetProperty()->SetPointSize(pointSize);  // 设置点的大小
}

int main(int argc, char* argv[])
{
    // 创建点数据
    vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
    points->InsertNextPoint(0.0, 0.0, 0.0);  // x, y, z
    points->InsertNextPoint(1.0, 0.0, 0.0);
    points->InsertNextPoint(0.0, 1.0, 0.0);

    // 创建 vtkPolyData
    vtkSmartPointer<vtkPolyData> polyData = vtkSmartPointer<vtkPolyData>::New();
    polyData->SetPoints(points);

    // 使用 vtkVertexGlyphFilter 转换点数据
    vtkSmartPointer<vtkVertexGlyphFilter> vertexGlyphFilter = vtkSmartPointer<vtkVertexGlyphFilter>::New();
    vertexGlyphFilter->SetInputData(polyData);
    vertexGlyphFilter->Update();

    // 创建 vtkPolyDataMapper 和 vtkActor
    vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
    mapper->SetInputConnection(vertexGlyphFilter->GetOutputPort());

    vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
    actor->SetMapper(mapper);

    // 设置点的大小
    SetActorProperties(actor, 10.0);

    // 创建渲染器、渲染窗口和交互器
    vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
    vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
    renderWindow->AddRenderer(renderer);

    vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
    renderWindowInteractor->SetRenderWindow(renderWindow);

    // 添加演员到渲染器并渲染
    renderer->AddActor(actor);
    renderer->SetBackground(0.1, 0.2, 0.3);  // 设置背景颜色

    renderWindow->Render();
    renderWindowInteractor->Start();

    return EXIT_SUCCESS;
}
posted @ 2025-01-13 16:40  ReRound  阅读(63)  评论(0)    收藏  举报