#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;
}