C++ VTK Python包装器-导出曲面打印

C++ VTK Python包装器-导出曲面打印,c++,python-3.5,vtk,paraview,C++,Python 3.5,Vtk,Paraview,我使用的是VTK 8.0.1和python 3.5,我对VTK是全新的。我正在尝试使用vtkPlotSurface导出曲面打印 通过引用,我已经成功地创建了一个曲面图,并且能够用python渲染它(尽管它实际上看起来不像曲面图) 导入vtk 导入数学为m 将numpy作为np导入 ##安排 chart=vtk.vtkChartXYZ() view=vtk.vtkContextView() view.GetRenderWindow().SetSize(800800) view.GetScene()

我使用的是VTK 8.0.1和python 3.5,我对VTK是全新的。我正在尝试使用vtkPlotSurface导出曲面打印

通过引用,我已经成功地创建了一个曲面图,并且能够用python渲染它(尽管它实际上看起来不像曲面图)

导入vtk
导入数学为m
将numpy作为np导入
##安排
chart=vtk.vtkChartXYZ()
view=vtk.vtkContextView()
view.GetRenderWindow().SetSize(800800)
view.GetScene().AddItem(图表)
##创建曲面
table=vtk.vtkTable()
numPoints=70;
inc=9.424778/(整数-1);
对于范围内的i(0,numPoints):
arr=vtk.vtkFloatArray()
表.添加列(arr)
表.SetNumberOfRows(numPoints)
对于范围内的i(0,numPoints):
x=i*inc;
对于范围内的j(0,numPoints):
y=j*inc;
表.设定值(i,j,m.sin(m.sqrt(x*x+y*y)))
#使用表格创建曲面打印
test=vtk.vtkPlotSurface()
测试设定范围(0,9.424778)
测试设置范围(0,9.424778)
test.SetInputData(表)
#开始可视化曲面打印
图表.添加图(测试)
view.GetRenderWindow().SetMultiSamples(0)
view.GetInteractor().Initialize()
view.GetRenderWindow().Render()
out=vtk.vtkOBJExporter()
out.SetFilePrefix(“测试”)
out.SetInput(图表)
写出
view.GetInteractor().Start()
为了更好地可视化我所做的,我想尝试导出它,然后使用Paraview/Visit进行可视化。然而,我正在努力寻找任何具体的例子,在那里导出这种类型的vtk对象

我尝试添加以下内容:

out = vtk.vtkOBJExporter()
out.SetFilePrefix("test")
out.SetInput(chart)
out.Write()
但最终会出现以下类型错误:

TypeError: SetInput argument 1: method requires a vtkRenderWindow, a vtkContextView was provided.

有人能提供帮助吗?提前感谢。

您可能会从使用中受益,因为它使创建这些类型的空间参考数据集和渲染更加用户友好。我会避免像上面那样使用
vtkTable
,而转向实际表示网格/曲面的VTK数据对象

将pyvista导入为pv
将numpy作为np导入
#创建空间参照
numPoints=70
inc=9.424778/(整数-1)
x=np.arange(0,numPoints)*inc
y=np.arange(0,numPoints)*inc
xx,yy,u=np.meshgrid(x,y,[0])
zz=np.sin(np.sqrt(xx*xx+yy*yy))
#制作PyVista/VTK网格
表面=pv.StructuredGrid(xx,yy,zz)
#策划它!
绘图(显示边=真,显示网格=真,笔记本=假)
#或者将其保存以在ParaView中打开
surface.save(“my_surface.vtk”)

您可能会从使用中受益,因为它使创建这些类型的空间参考数据集和渲染更加用户友好。我会避免像上面那样使用
vtkTable
,而转向实际表示网格/曲面的VTK数据对象

将pyvista导入为pv
将numpy作为np导入
#创建空间参照
numPoints=70
inc=9.424778/(整数-1)
x=np.arange(0,numPoints)*inc
y=np.arange(0,numPoints)*inc
xx,yy,u=np.meshgrid(x,y,[0])
zz=np.sin(np.sqrt(xx*xx+yy*yy))
#制作PyVista/VTK网格
表面=pv.StructuredGrid(xx,yy,zz)
#策划它!
绘图(显示边=真,显示网格=真,笔记本=假)
#或者将其保存以在ParaView中打开
surface.save(“my_surface.vtk”)

您要导入的数据是什么?积分?它们是否在X和Y方向的规则网格上,并且只有Z维度变化?从数据中计算曲面有不同的方法,我有一个想法,但需要更多关于底层数据的信息。我想如果可能的话,您会更乐意生成一个可以导出到OBJ的多边形几何体,而不是使用VTK图表功能,因为就转换数据而言,VTK图表功能是一条死胡同。@CoryQuammen我正在处理的数据是与时间相关的X,规则网格上的Y点——想想一个数学函数,它在时间上输出X,Y数据——例如f(X,Y,t)=t sin(X)sin(Y),所以我的思想过程是通过一个曲面图——或者说一系列曲面图——来表示这个与时间相关的X,Y数据。但我绝对愿意接受关于如何更好地可视化数据的其他建议。这种数据很容易转化为曲面图。输入文件是否包含X和Y坐标值以及f(X,Y,t)?到目前为止,没有。但我没有理由不能这样做。我只需要知道VTK读取数据的最佳格式。如果将x和y坐标列添加到CSV文件,则可以将CSV文件作为表格导入,并运行“表格到结构化网格”过滤器,将其转换为二维结构化网格。将X列设置为导入的X列,类似地将Y列设置为导入的X列,将Z列设置为导入的数据列。这将为您提供函数的高度曲面。您要导入的数据是什么?积分?它们是否在X和Y方向的规则网格上,并且只有Z维度变化?从数据中计算曲面有不同的方法,我有一个想法,但需要更多关于底层数据的信息。我想如果可能的话,您会更乐意生成一个可以导出到OBJ的多边形几何体,而不是使用VTK图表功能,因为就转换数据而言,VTK图表功能是一条死胡同。@CoryQuammen我正在处理的数据是与时间相关的X,规则网格上的Y点——想想一个数学函数,它在时间上输出X,Y数据——例如f(X,Y,t)=t sin(X)sin(Y),所以我的思想过程是通过一个曲面图——或者说一系列曲面图——来表示这个与时间相关的X,Y数据。但我绝对愿意接受关于如何更好地可视化数据的其他建议。这种数据很容易转化为曲面图。输入文件是否包含X和Y坐标值以及f(X,Y,t)?到目前为止,没有。但我没有理由不能这样做。我只需要知道VTK读取数据的最佳格式。如果将x和y坐标列添加到CSV文件,则可以将CSV文件作为表格导入,并运行“表格到结构化网格”过滤器以转换数据