继续学习VTK

为了火车站的那个项目,学习VTK的进度停了两个多月,总算这些天空下来了,再次拾起VTK。

由于是第一次接触VTK,以前对OpenGL也不是很熟,所以到处寻找各种教程,没办法,官方提供的教程要好几十美元,电子版又怎么也找不到,只好到处找有没有关于VTK的论坛,可惜啊,国内似乎没有一个专门的VTK论坛,偶尔找到几篇关于VTK的帖子,也大多介绍一下什么是VTK,怎么安装云云。看来一切学习只能靠自己了。。

目前,将我找到的一些VTK的中文资料放到了论坛上,以后有什么好的资料,我也会放上去的:
http://www.tonixsoft.com/phpbb2/viewforum.php?f=11

VTK的学习,主要就在于它的PipeLine上,对于这个,目前有个比较好的软件:vtkDesigner,可以使用它以可视化的方式迅速建立PipeLine,并且立刻察看结果,网址是:
http://www.prashanthudupa.com/vtkdesigner/

这个软件是使用VTK+QT开发的开源软件,(I Love OpenSource!),但是很可惜,我在Windows下使用VC始终无法编译通过,也不愿多花精力去搞makefile的事,还是打算装了Linux再编译了。目前家里两台台式机硬盘几乎都满了,笔记本又在分区上遇到了障碍,就只能搁着了。

另外,这两天找到一个名为:vtkqt的小开发包,它将vtkWindow与QTwidget结合起来了,实现了vtkQtRenderWindow和vtkQtRenderWindowInteractor两个类,本来想直接include到我的项目中用的,结果却发现它实现的主要目的是现实一个独立的vtk窗口,而不是将vtk显示区嵌入到其它widget内,为此它连KeyPress事件都截获了,对我而言,显然很不爽,另外,我自己原先的实现方法也和它差不多,就是将qt的各种mouse事件转发给内部的vtkRenderWindow对象,在paint事件中调用vtkRenderWindow的Render函数,所以目前就不打算切换到这个类了,继续使用我自己的类,大不了以后需要改进时再参考它了。

昨天知道了一个新的类,vtkFollower,它继承自vtkActor,vtkActor用来实现一个对象在场景中的渲染,以及定义其属性,坐标等,在vtkRenderer中控制着一大堆Actor,当Renderer中的Camera转动或者伸缩时,所有的Actor中的对象会跟着变换视角。但是vtkFollower中的对象却有所不同,它会自动保持始终以正面面对Camera,在场景中显示文字标签时,就可以使用这个功能了。

我目前要制作的功能是,在屏幕的右上角显示一个参考图形,它会跟着主要对象的转动而转动,但是不会改变大小或者位置,原先打算参照vtkFollower来写一个新的类,并且重载GetMatrix函数,让其负责新坐标的计算的,但是试了很久,效果还是不对,看来还是必须先把基础打扎实了才能继续了。

好了,最后贴一张目前的软件效果图上来吧


你可能感兴趣的:(编程点滴)