Bootstrap

VTK知识学习(11)- 可视化管线Demo

1、代码

 private void RestWindow()
        {
            // 1.Create a simple sphere. A pipeline is created.
            // 1.新建球体,创建“管道pipeline”。

            //      1.1 新建数据--“数据源Source”
            //      (1)球体
            vtkSphereSource sphere = vtkSphereSource.New();      // 新建球
            sphere.SetThetaResolution(8);                        // 设置球纬度参数
            sphere.SetPhiResolution(16);                         // 设置球经度参数
            sphere.SetRadius(0.5);                               // 设置球的半径

            //      (2)柱体
            vtkCylinderSource cylinder = vtkCylinderSource.New();
            cylinder.SetHeight(3.0);
            cylinder.SetRadius(0.1);
            cylinder.SetResolution(10);

            //      1.2 数据加工 -- "过滤器Filter" -- 收缩
            vtkShrinkPolyData shrink = vtkShrinkPolyData.New();   // 新建数据收缩操作器
            shrink.SetInputConnection(cylinder.GetOutputPort());  // 连接管道
            shrink.SetShrinkFactor(1);                            // 收缩“面”操作

            //      1.3 数据制图 -- "制图器Mapper"
            //      (1)球体
            vtkPolyDataMapper sphereMapper = vtkPolyDataMapper.New();    // 新建制图器
            sphereMapper.SetInputConnection(sphere.GetOutputPort());      // 连接管道
            //      (2)柱体
            vtkPolyDataMapper cylinderMapper = vtkPolyDataMapper.New();   // 新建制图器
            cylinderMapper.SetInputConnection(shrink.GetOutputPort());     // 连接管道

            // 2.The actor links the data pipeline to the rendering subsystem
            // 2.创建“角色Actor”,连接“管道pipeline”和“渲染系统rendering subsystem”

            //      2.1 新建角色--“角色Actor”
            //     (1)球体
            vtkActor sphereActor = vtkActor.New();                 // 新建角色
            sphereActor.SetMapper(sphereMapper);                   // 传递制图器
            sphereActor.GetProperty().SetColor(1, 0, 0);           // 设置“角色”颜色[RGB]
            //     (2)柱体
            vtkActor cylinderActor = vtkActor.New();              // 新建角色
            cylinderActor.SetMapper(cylinderMapper);              // 传递制图器
            cylinderActor.GetProperty().SetColor(0, 1, 0);        // 设置“角色”颜色[RGB]

            //  2.2 Create components of the rendering subsystem
            //  2.2 创建渲染--“渲染系统rendering subsystem”

            //     (1)新建“渲染器Renderer”和“渲染窗口RenderWindow”
            //     renderWindowControl1控件提供“渲染窗口”
            vtkRenderer render1 = vtkRenderer.New();       // 新建渲染器
            vtkRenderer render2 = vtkRenderer.New();       // 新建渲染器
            vtkRenderWindow renWin = renderWindowControl.RenderWindow;
            renWin.AddRenderer(render1);                   // 添加渲染器
            renWin.AddRenderer(render2);                   // 添加渲染器

            // Add the actors to the renderer, set the window size
            // (2)将“角色Actor”添加到“渲染器Renderer”并渲染
            render1.AddActor(cylinderActor);
            render1.AddActor(sphereActor);
            render1.SetViewport(0.0, 0.0, 0.8, 0.5);       // 设置Viewport窗口
            render1.SetBackground(0.0, 0.0, 1.0);            // 设置背景色

            render2.AddActor(cylinderActor);
            render2.SetViewport(0.5, 0.5, 1.0, 1.0);       // 设置Viewport窗口
            render2.SetBackground(1.0, 1.0, 1.0);          // 设置背景色

            vtkTextActor textActor = new vtkTextActor();
            textActor.GetTextProperty().SetFontSize(30);                // 文字大小
            textActor.SetDisplayPosition(50, 50);                       // 文字位置(左下角)
            textActor.SetInput("ActiViz, C# VTK");                      // 文字内容
            textActor.GetTextProperty().SetColor(1.0, 0.0, 0.0);        // 文字颜色

            //textActor.GetTextProperty().SetFontFamily(0);         // 字体
            //textActor.GetTextProperty().SetJustification(1);      // 两端对其
            //textActor.GetTextProperty().SetBold(1);               // 加粗
            //textActor.GetTextProperty().SetItalic(1);             // 斜体
            //textActor.GetTextProperty().SetShadow(1);            // 阴影

            render1.AddActor(textActor);                            // 在renderer中调用

            //ren1.AddViewProp(sphereActor);               // 渲染器添加角色
            //renWin.SetSize(500, 500);                     // 设置渲染窗口大小[无效语句]
            renWin.Render();                               // 渲染渲染窗口

            //         (3)设置"相机Camera"
            //vtkCamera camera = render1.GetActiveCamera();   // 新建相机
            //camera.Zoom(1.0);                            // 相机缩放
        }

2、效果

;