vtk怎么迁移编译库
❶ 怎么把vtk的window转到qt中的qgraphicsview
qt
可以通过QGLWidget运行opengl。QGLWidget继承QWidget,能够直接在里面调用opengl的接口。这个在qt文档里有具体说
明,也有相关例子,所以不赘述了。但是无法在正式软件里面执行,为什么?因为正式软件是用QGraphicsScene这个场景类操作和操作一切
item,而用QGraphicsView将其显示出来,而每一个item都是QGraphicsItem的子类。QGLWidget并不是QGraphicsItem类,我曾经尝试用普通的QWidget类那样,通过proxy来加进QGraphicsItem,但是没有成功。或许有方法,但是没有找到。
于是我放弃了用QGLWidget来操作opengl的打算,寻找直接在QGraphicsItem中操作opengl的方法。通过查看文档和示例代码,找到了这个方法:
1 往qt工程文件里添加opengl以及对应的lib。
2
对QGraphicsView进行一个三维对话框的指定,代码如下:
QGLWidget *widget = new
QGLWidget(QGLFormat(QGL::SampleBuffers));
widget->makeCurrent();
QGraphicsView
view;
view.setViewport(widget);
上述代码告诉了 QGraphicsView 类当前绘制的对象是支持opengl的。于是所有的场景中的item都将绘制到widget 上。
3
写一个QGraphicsItem的继承类,特别要重写paint函数。代码如下:
void XXX::paint(QPainter
*painter, const QStyleOptionGraphicsItem *option, QWidget
*widget)
{
painter->beginNativePainting();
glColor3f(0.5,1.0,0.2);
glBegin(GL_TRIANGLES);
glVertex3f(100.0,100.0,-100.0);
glVertex3f(150.0, 100.0,
-100.0);
glVertex3f(100.0, 150.0,
-100.0);
glEnd();
painter->endNativePainting();
}
上面这个函数主要是用opengl接口绘制了一个三角形。记住,在opengl绘制之前一定要执行painter->beginNativePainting()以及painter->endNativePainting()这两个语句。
QGraphicsScene、
QGraphicsView和QGraphicsItem的关系可以查阅相关文档,也不赘述了。
不过我按照这个方式画的三角形,怎么也在窗口上显示不出来,找了半天才发现问题在这个函数上QGraphicsItem::boundingRect()。这个函数是
干什么用的呢?主要用来返回该item的初始化大小,这个大小不会轻易改变,后续的改变都可以通过矩阵来完成,但是初始大小是不变的。QGraphicsView通过这个矩形来判断当前item是不是需要重绘,如果在重绘区外,则不调用重绘函数了。同时碰撞检测之类,也可以用这个矩形来判断。原来,item本身的矩阵外包框不对,所以才导致了重回不出来,改过来就正确了。
上面说的很潦草,具体怎么改的步骤就不说了。要想正确的绘制,必须得弄清楚坐标系的关系,QGraphicsScene、QGraphicsView以及QGraphicsItem这三个坐标系到底是什么关系。我看了文档,也自己进行了测试,但是感觉文档和测试的结果有些出入。具体出入不说了。说一下自己得心的吧。
先说明:涉及到一切大小和长度,都是像素大小,至少我测试的结果是这样的。
在建立QGraphicsScene
对象的时候,有一个构造函数是矩形,这个矩形是什么含义呢?经过测试,发现这个矩形并没有指定弹出窗口的位置,比如,我把矩形的左上角点指定为
-1000,-1000,显示的位置和1000,1000是一样的,而长度则正确指定了(当然,可能会有滚动条)。所以,这个矩形的左上角点并不是显示的
窗口的位置,而是它在逻辑上的左上角点。我们显示一切item,都是以这个逻辑上的坐标系为准来绘制的。比如,左上角点是-1000,-1000,而
item的位置在-500,-500,则这个-500,-500相当于在显示窗口的左上角往下各加500个像素的坐标的位置。
那么 QGraphicsItem的boundingRect是什么意思呢?返回的是什么大小?是以什么坐标系显示的大小?首先,这个大小肯定是以像素为单位的,其次,这个矩形的坐标是以QGraphicsScene的逻辑坐标为准的。当然这个大小是没有任何矩阵叠加的大小。有了矩阵叠加后,实际的矩形可能会发生变化。假如在boundingRect中指定矩形的左上角为100,100,那么最终体现的位置则是QGraphicsScene逻辑坐标100,100的位置,如果QGraphicsScene的左上角点已经指定为-1000,-1000,那么这个位置实际上就是离窗口左上角点1100,1100的位置(由于有滚动条,所以也不一定是这个长度。)
那么在QGraphicsItem的paint函数中进行了opengl绘制用的是什么坐标呢?其实用的也是QGraphicsScene
的逻辑坐标。如上面的例子,绘制的直角三角形直角顶点是0,0,那么显示的位置就是距离显示窗口左上角点1000,1000的位置。不过opengl的所
有绘制都是没有矩阵叠加的基础上,如果用矩阵叠加,则显示的位置肯定和指定的有区别了。比如,我用setPos强制指定一个位置,这个位置将和opengl绘图坐标相叠加,最后显示到窗口上。我推测setPos其实是改变了矩阵,是一个平移矩阵。
❷ vtk for python该怎样用
直接下载安装vtkpython-7.1.1-Windows-64bit.exe就可以了
才60M不到
不用像C++一样还要编译VTK,python大法好
具体步骤如下:
1)安装Python,(此处省略)
2)安装VTK,从网站http://www.vtk.org/VTK/resources/software.html下载最新版本,此文安装的是:vtkpython-7.1.1-Windows-64bit.exe
3)配置VTK环境变量:
A:把VTK中的bin文件加入系统变量中:如:PATH:C:Program FilesVTK 6.1.0in
B:设置python路径,在系统变量中创建PYTHONPATH :如:PYTHONPATH :
D:ProgramVTK_Pythonin; D:ProgramVTK_PythoninLibsite-packages
4)测试,打开python IDEL界面,输入:import vtk
>>> import vtk
没提示错误就是对的
❸ vtk vs2013编译 可以再vs2015中使用吗
解压下载的vtk源文件于文件夹D:\VTK\VTK-6.1.0下,新建文件夹D:\VTK\VTKBuild用于放置编译文件,在解压源文件的同时解压下载的数据文件vtkdata,解压路径选择在D:\VTK\VTK-6.1.0下,会自动解压到D:\VTK\VTK-6.1.0下的.ExternalData文件夹内。
❹ unity怎么用vtk
VTK是开放源码的,可以自由地从VTK网站上免费获取到VTK的源代码。
Unity是一款由UnityTechnologies研发的跨平台2D/3D游戏引擎。它以交互的图型化开发环境为首要方式,编译器运行在Windows和MacOSX下,可发布游戏至Windows、Wii、OSX、iOS或HTML5等众多平台。
❺ vtkguisupportqt 库怎么安装
1、下载
VTk官方下载页面:http://www.vtk.org/VTK/resources/software.html#latest
我下载的是vtk-6.0.0.zip(源码)、vtkdata-6.0.0.zip(数据)、vtkDocHtml-6.0.0.tar.gz.(帮助文档)。
既然下载了源码, 就不需要下载win32的安装exe程序了,我们自己手动编译。
2、编译
2.1下载cmake-2.8.11.2-win32-x86.exe,并安装。用它来完成VTK的编译。
2.2解压vtk-6.0.0.zip至D:\VTK6.0\vtk,
解压vtkdata-6.0.0.zip至D:\VTK6.0\vtkdata
解压vtkDocHtml-6.0.0.tar.gz 至D:\VTK6.0\vtkDocHtml
2.3 运行安装后的,CMake程序。
选择source code目录为 D:\VTK6.0\vtk
选择build后的bin目录为 D:\VTK6.0\bin
点击Configure按钮,会提示你选择编译器,我们选择visual studio 9 2008.然后Cmake会扫描一下它需要的文件,等它停下来后,我们就可以修改CMake的参数选项了。
❻ vtk6.1版本中,vtkImageData这个类怎么用
尝试如下代码,我用的是vtk6.3,vs2013,编译成功。
autoimg=vtkSmartPointer<vtkImageData>::New();
autoinfo=vtkSmartPointer<vtkInformation>::New();
//autoinfo3=img->GetInformation();//此处也可以从img里面获取information,如
//果information为空,则会创建一个新的,相当于调用New之后再SetInformation
img->SetDimensions(10,10,10);
img->SetScalarType(VTK_UNSIGNED_CHAR,info);
img->SetNumberOfScalarComponents(1,info);
img->AllocateScalars(info);
❼ 如何编译vtk,itk源代码,形成静态链接库
做thesis,想用VTK,ITK做医学图像三维重建,就是读取DICOM格式的CT扫描件,然后用ITK获取某一区域,处理后再用VTK显示出来,能用鼠标拖着看三维图像,大概就是这么个思路。结果在软件安装的过程中就出错。。实在是郁闷。。以下是具体情况,各位大侠看后发表下
❽ 怎么样将vtk转化为别的格式(见图),最好有软件可以实现,谢谢!
paraview和visit支持vtk的格式,你只需关心这些软件支持哪些输出既可。
如果一个软件转不了,转成一种更能用的中间格式
❾ 如何使用已经编译安装好的vtk
1.下载VTK6,可以上官网自行下载
2.解压到当前目录
3.进入目录创建build文件夹,存放编译文件。
4.进入build文件夹进行配置,进行配置ccmake .. (注意ccmake与..之间有空格,".."代表上一级目录)
5.运行步骤4进行安装就可以的
❿ 如何安装VTK6.2.0
1、首先从VTK官网上下载vtk6.2.0和CMake3.2.3.
http://www.vtk.org/download/
http://www.cmake.org/download/
默认已经装好了vs2010啦,
最后是环境配置,请在系统path中添加.../vtk;,然后把vtk/bin中的dll文件拷进system32中。