3.使用VTK

#include <vtkSphereSource.h>
#include <vtkPolyDataMapper.h>
#include <vtkActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkSmartPointer.h>

int main(int argc, char* argv[])
{
    // 1. Source 数据源:生成球体几何数据
    vtkSmartPointer<vtkSphereSource> sphereSource = vtkSmartPointer<vtkSphereSource>::New();
    sphereSource->SetRadius(5.0);        // 设置球体半径
    sphereSource->SetThetaResolution(32); // 经度方向分段数,数值越大球体越圆滑
    sphereSource->SetPhiResolution(32);  // 纬度方向分段数
    sphereSource->Update();               // ⭐触发计算,真正生成球体网格数据

    // 2. Mapper映射器:把网格数据转为渲染可用图元
    vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
    mapper->SetInputData(sphereSource->GetOutput()); // 接入上一步球体输出数据

    // 3. Actor演员:场景中的物体,设置外观
    vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
    actor->SetMapper(mapper.Get());       // 将mapper给到actor
    actor->GetProperty()->SetColor(1.0, 0.2, 0.2); // RGB颜色:红色,范围0~1

    // 4. Renderer渲染器:相当于舞台,存放Actor、相机、灯光
    vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
    renderer->AddActor(actor);                     // 把球体物体放到舞台上
    renderer->SetBackground(0.1, 0.1, 0.2);       // 设置窗口背景色,深蓝黑色

    // 5. RenderWindow渲染窗口:操作系统窗口载体
    vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
    renderWindow->AddRenderer(renderer);          // 将舞台放进窗口
    renderWindow->SetSize(800, 600);              // 窗口宽高 800*600像素

    // 6. Interactor交互器:处理鼠标键盘事件
    vtkSmartPointer<vtkRenderWindowInteractor> interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
    interactor->SetRenderWindow(renderWindow);     // 绑定窗口

    interactor->Initialize();    // 初始化交互器
    interactor->Start();         // ⭐启动消息循环,窗口弹出来,等待鼠标操作

    return 0;
}
posted @ 2026-08-24 16:11  Drunker•L  阅读(16)  评论(0)    收藏  举报