ActiViz(VTK的C#库)学习使用心得之四:第一个基于WinForm的VTK示例详细注解

 在搭建好C#的VTK开发环境下,成功编译运行第一个窗口应用示例程序“WindowsFormsHello”后,对主要程序进行了详细的注释,供大家学习参考。

       核心函数renderWindowControl1_Load:

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

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

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

            //      1.3 数据制图 -- "制图器Mapper"
            vtkPolyDataMapper mapper = vtkPolyDataMapper.New();  // 新建制图器
            mapper.SetInputConnection(shrink.GetOutputPort());   // 连接管道

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

            //      2.1 新建角色--“角色Actor”
            vtkActor actor = vtkActor.New();                    // 新建角色
            actor.SetMapper(mapper);                            // 传递制图器
            actor.GetProperty().SetColor(1, 0, 0);              // 设置“角色”颜色[RGB]

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

            //          (1)新建“渲染器Renderer”和“渲染窗口RenderWindow”
            //          renderWindowControl1控件提供“渲染窗口” 
            vtkRenderer ren1 = renderWindowControl1.RenderWindow.GetRenderers().GetFirstRenderer();
            vtkRenderWindow renWin = renderWindowControl1.RenderWindow;                            

            //         Add the actors to the renderer, set the window size
            //         (2)将“角色Actor”添加到“渲染器Renderer”并渲染
            ren1.AddViewProp(actor);                    // 渲染器添加角色
            renWin.SetSize(250, 250);                    // 设置渲染窗口大小[无效语句]
            renWin.Render();                                  // 渲染渲染窗口

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

        说明:英文为官方原注释,汉字注释为笔者添加。

        从结构上看,VTK程序段落主要包含两个部分。一是数据和管道部分,二是角色和渲染部分。其工作的基本流程是“数据源Souce”--“过滤器Filter”-- “制图器Mapper”-- “角色Actor”--“渲染器Renderer”。 从对象和语言上看,VTK的类和方法实现简介,程序清晰,可读性好,这也是C#的特点。VTK对OpenGL进行了面向对象的封装,并设置了大量简单易用的默认值,如“球体”的半径为5,球心位于(0,0,0), “摄像机camera”的默认视点在(0,0,0)等。有OpenGL编程经历的程序员都清楚,没有这些默认值的OpenG程序,一个参数设置不好,三维窗口里真不知道会看到啥!关键是根据画面,你还不知道该如何修正程序或参数,因为你根本就不知道问题出在哪。

        作为第一个上手的VTK示例,你可以试着简单调整语句中的相关参数,如球的边数,颜色等,并运行看看效果。如果有能力,还可以添加些语句,如球的半径等。或在此示例上的几簇号上进一步拓展VTK应用。

        如果看完这些注解你还是“丈二和尚摸不着头脑”,请补充阅读一些相关知识点吧。首先是OpenGL,什么是坐标系统,什么是空间变换,什么是“管道”,什么是纹理映射等等。其次,找点VTK的资料,补充理论知识后再动手操作。

        关于VTk的学习资料推荐如下:

        1.《VTK User's Guide》。注意:我指的是Kitware公司出版的英文书籍,详细介绍VTK的使用方法。ActiViz自带的用户手册相当粗略,用处有限。有条件的朋友(有钱,英文好),请登录Kitware公司网页,购买正版书。没条件的也不要急,CSDN上的“东灵工作室”(详址请咨询百娘)有系列博客,逐章翻译了《VTK User's Guide》,这真的是当代活雷锋!唯一遗憾的是,该书示例均为C++,Python,Java或Vcl编写,C#用户需自行转换和调试。

        2.官方离线帮助文档。请在https://www.vtk.org/download/中寻找帮助文档“vtkDocHtml-X.X.X.tar.gz"并下载。

      注意:开发的ActiViz版本对应的是VTK5,所以下载尽量接近版本的帮助文档。

       此处下载的是6.3版本,解压缩后有900多兆,找到"index.html"文件后运行效果如下(离线运行):

        你可以通过帮助文档查询到VTK所有类的详细资料,非常受用,学习工作必备!

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Activiz是一个用于VTK(Visualization Toolkit)的C#封装,它提供了一种更简单、更直观的方式来使用VTK进行数据可视化和图形渲染。 Activiz的主要特点之一是它提供了一个面向对象的编程风格,使得使用VTK更加容易和灵活。通过Activiz,我们可以方便地创建和操纵VTK中的各种对象,如点、线、面、体等,以及进行相应的属性设置和变换操作。同时,Activiz还提供了丰富的渲染和交互功能,例如窗口显示、相机控制、光照效果等,可以帮助用户快速构建出高质量的可视化效果。 使用Activiz进行VTK编程,首先需要引入Activiz,并创建一个VTK场景对象。然后,可以根据需求创建各种几何体,并设置它们的属性,如颜色、透明度、纹理等。接下来,可以将这些几何体添加到场景中,通过渲染窗口进行可视化展示。此外,Activiz还提供了许多其他的功能,如体积渲染、动画效果、剖面显示等,可以满足不同的可视化需求。 通过Activiz,我们可以更加方便地利用VTK进行科学可视化和图像处理,尤其适用于需要快速开发原型和迭代设计的情况。同时,Activiz还具有跨平台的特性,可以在Windows、Linux和Mac等操作系统上运行,使得代码的可移植性更高。 总之,Activiz是一个非常有用的工具,可以帮助用户更加高效地使用VTK进行数据可视化和图形渲染。无论是科学研究、工程分析还是教育培训,都可以从中受益。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值