Paraview是一种强大的开源软件,可用于可视化大3D数据集。它提供了更多的选项,细节和比内置MATLAB 3D可视化模块更好的性能。此功能是将关于将3D数据导出到VTK格式的上述次函数的集成。该函数可以将多个向量和标量字段保存为在帕划线中查看的单个VTK格式的文件。它也可以导出行或多边形对象。为了最大限度地提高不同操作系统之间的兼容性,默认情况下,数值数据以ASCII格式保存,精度为小数点后面的3位数。用户可以指定精度,例如,vtkwrite('执行','结构_points','mri',d,'precision,5),而不是vtkwrite('执行','结构化_points','mri',d)。用户还可以选择以“浮动”数据类型保存数值数据(此选项不适用于PolyData DataSet类型)通过将“二进制”添加到命令,例如,vtkwrite('执行','结构_points','mri',d,二进制)。
以下是一些示例用法。只需输入以下代码。
示例1:导出3D阵列(典型的图像卷)
负载核磁共振
d =挤压(d);
vtkwrite('mri.vtk','structified_points','mri',d)
如果您已经设置了系统路径以包含包含段段二进制文件的文件夹,则可以直接调用PARAVIEW:
vtkwrite('执行','结构_points','mri',d)
在这种情况下,将保存名为“matlab_export.vtk”的文件并传递给paraview。
示例2:出口3D矢量和标量字段
风荷载
[cu,cv,cw] = x, y, z, u, v, w;
Div =散度(x, y, z, u, v, w);
vtkwrite('wind.vtk','structified_grid',x,y,z,...
'vectors', 'vector_field', u, v, w, 'vectors', '涡度',cu, cv, cw, '标量','散度',div);
用法与非结构化的3D数据非常相似。只需将“structiped_grid”更改为“Unstructured_grid”。例如:
vtkwrite('random_vector.vtk','unstructure_grid',x,y,z,'向量','random_vector',u,v,w,)
示例3:出口3D线
x = 1:100;
y = sin(x);
z = sqrt(x);
vtkwrite('执行','polydata','行',x,y,z);
用户还可以指定数据输出的精度(默认为3)。例如:
vtkwrite(‘line.vtk’,‘polydata’,‘行’,x, y, z,‘精确’,5);
示例4:导出三角形数据
[x, y, z] =峰(100);
z = .4 * z;
tri = delaunay(x,y);
vtkwrite('peaps.vtk','polydata','三角形',x,y,z,tri);
示例5:导出四面体数据
d = [-1 1];
[x,y,z] = meshgrid(d,d,d);
dt = delaunaytriangulation(x(:),y(:),z(:));
vtkwrite('execute', 'polydata','tetrahedron', x, y, z, DT.ConnectivityList);
向量和标量字段输入的使用与内置Quiviver3和散射3函数相同,其中x,y,z指定网格点和u,v,w的坐标。对于多个数据数组条目,它们必须具有相同数量的网格点。x,y,z只需要指定一次,然后是[关键字,标题,数据]的组合。您可以根据需要添加许多数据阵列。在上面的示例中,您将最终结束单个VTK文件,其中包含相同数量的网格点数的三个数据阵列。在样本屏幕截图中,箭头的颜色代表了分歧的大小。
在Paraview中,按“Ctrl + O”打开文件。然后在“管道浏览器下方的”属性“页面上,单击”应用“。对于行和多边形数据,您应该已经看到了正确的数据表示。对于3D矢量字段,您必须进一步单击公共工具栏中的“字形”,然后在管道浏览器中选择字形对象,然后单击“应用”。
有关使用的更多详细信息,请参阅文件。
CY Y(2021)。vtkwrite:以VTK文件格式导出各种2D/3D数据到ParaViewGitHub (https://github.com/joe-of-all-trades/vtkwrite)。检索.
嗨!
我有2D在Matlab中生成的有限元数据,我试图在帕划线中使用此代码进行处理。我有以下矩阵:CRD(节点数量,2),它给出了节点的2D坐标,节点(每个元素的节点数量,元素#的元素数),它提供节点之间的连接,u(节点的##########)给出每个节点的X&Y速度,P(节点的#1),它给出了节点上的压力。但是,我不太确定如何以适当的形式将所有这些放在那里,以便它们与代码兼容。我很感激你的帮助!
嗨乔,
谢谢你的代码,它工作得很好。我做了一些小修改,以便能够将数据集属性附加到POLYDATA案例,并使用POLYDATA案例以二进制格式保存vtk文件。
我通过ASCII和二进制选项成功测试了使用PolyData“三角形”的修改代码。请让我知道如何向您提交修改的代码。
问候,
亲爱的乔
我有一组数据点相同的“风”文件在Matlab (x, y和z 3D矩阵+ Vx, Vy,和Vz(速度))。
我使用了您的功能将此集数据点转换为* .vtk文件。但是当我运行榜首#2(如上所述)它不起作用,并且使用vtkwrite时出错(第83行)
预期1或4个数字输入!
Paraa中的错误(第12行)
vtkwrite('wind.vtk','structified_grid',x,y,z,..."
如果可能,请帮助我。如何纠正此错误?
问候
嗨乔,
当我在2017b运行例子2的非结构化网格,并读取到Mac上的paraview5.4,它似乎有一个文件格式问题,导致paraview崩溃。你能修好吗?
谢谢!
嗨乔,
您的脚本是否支持非统一网格?金宝app
我想在非统一网格上显示标量数据集。
[x,y,z] = meshgrid(x,y,z);%x,y,z是不均匀的
vtkwrite('file.vtk','结构_grid',x,y,z,'scalars','强度',强度);
然而,Paraview并没有显示任何东西。
我尝试使用:vtkwrite('file.vtk','structured_points','Intensity', Intensity);
然后paraview显示数据集。
我发现了一些错误。在第75行,“VIN”未定义变量。它应该被修改为“varargin”。这个代码很棒。
嘿Chaitanya !
在matlab中使用meshgrid来创建您的网格。
谢谢!!!!!
m p,也许你可以尝试:!/ usr / bin / paraview --data ='matlab_export.vtk'&
你好,谢谢你的剧本。我正在使用Linux和Octave。我在设置路径时收到错误,我正在使用它:
!CD / usr / bin / paraview --data ='matlab_export.vtk'&
^
如您所见,它表示数据错误。你有什么建议纠正这个吗?
谢谢和最好的问候,mahmoud
太好了!
我发现您在生成的.vtk文件中的“SCALAR (title) float”后漏掉了一个1。但其他一切都很完美!
你好乔,
我有一个大小(100,4)的矩阵。在这4列中,2列包含网格上所有点的“x”和'y'坐标,而其他2列包含该点上的解决方案“u”和'v'的值。“U”是“x”方向上的解决方案,而“v”是'y'方向的解决方案。矩阵如下所示:
x y u v
0 0 0.55 -0.03
1 0 0.04 0.34
....
....
100 0 -0.9 0.1
1 .单词conduct联想记忆:
1 1。.
我使用下面的命令来生成vtk,但是我在paraview中看不到任何东西。这里'out'是我的矩阵的名称。Z和w是零值向量。
x = out(:,1);Y = OUT(:,2);z = out(:,3);u = out(:,4);V = OUT(:,5);w = out(:,6);
vtkwrite('crg.vtk','structified_grid',x,y,z,'vectors','vector_field',u,v,w);
你能帮我解决这个问题吗?谢谢!
谢谢你的代码,但我有数千行转换,那些线将折叠帕隆。你能帮我吗?
这可能是一个天真的问题,但你可以使用vtkwrite在圆柱形坐标(i.,r,theta,z)中将我的解决方案导出为标量字段吗?假设我的解决方案是PSI,其标量场分布在具有R1和R2的同心圆柱体。请告诉我并提前感谢!
@mohammad,我刚刚添加了对这类数据集的支持。金宝app查看示例用法1。
@Leonie,我有类似的情况。我单独输出每个时间点的数据,并给出了串行文件名。然后我可以将它们加载为帕划的时间序列。它对我来说很好。
你好,
谢谢你这个提交。我想将4D数据导出到Paraview(3D +时间)。我的数据表示通过时间改变的卷中的每个点处的速度。有没有办法使用此功能来导出此类数据?
嗨,Joe,谢谢你的投稿
我有一个问题,我有一个用于海马的体素数据(让我们用.mat格式说出3d体形)。如何将其转换为vtk fromat,但仍然我vtk格式的体素数据?
谢谢
指定paraview.exe正确路径的另一种简单的方法:替换(例如)第176行
!CD C:\ Program Files \ Paraview-5.0.1-qt4-OpenGL2-Windows-64bit \ bin&paraview.exe --data ='c:\ users \ currentpath whesinyoureworking \ matlab_export.vtk'
&符号允许您仅在一行上执行多个命令。
伟大的剧本,真的很有用!
joe yeh,问题是在这个二进制vtk文件中保存的数据没有表示为曲面。它显示了一个卷在帕划线中没有渲染的卷。最终,我指定了一个x和y数组和z数组,它具有常量值。
对于Ricardo和Venkatesh,标量以二进制格式存储(使用fwrite函数),因此不能使用文本编辑器读取.vtk数据并理解它。这些文件是要被ParaView读取的。
我和里卡多·奥利维拉有同样的问题。请告知解决方案。
功能看起来很神奇,但我真的不会用。我想绘制一个温度场,我有4个数组(大小为81x1)带有X,Y,Z,T值。我正在尝试使用如下函数:
vtkwrite('pared.vtk','structified_grid',x,y,z,'scalar','pared_plana',t)
但输出文件充满了疯狂的字符,如:“=cž9=cž9=cž9> *ª«=cž9>ž8ä”在哪里应该是数字。我无法理解我做错了什么。有人可以帮助我吗?我的x,y,z,t arrays是什么不对的?
嗨,你,我不熟悉你说的这类数据。看看你是否找到了与你想要的相似的数据类型,http://www.vtk.org/wp-content/uploads/2015/04/file-formats.pdf如果有,也许我可以实现它。
对不起Sebastiano,我必须改变它。更改这两条线将导致错误显示。具体而言,我指的是fprintf(fid,'3%d%d%d \ n',(varargin {5} -1)');我必须改变它。但是,您将看到生成(0,0,0)的生成方式。这是因为减去了1。这部分代码来自另一个人的脚本,文件ID#22602
嗨,海巴斯提亚诺,谢谢你指出这一点。我想我解决了这个问题。它来自165行和169行。下载更新的版本,看看现在是否工作正常。
亲爱的乔,
非常感谢你的文件,它们对我很有帮助。
我有一个问题写vtk文件。我想写两个不同的文件,一个是表面,一个是网格的体积,就像这样:
vtkwrite (name_surf“polydata”、“三角形”,x, y, z, faces_0);vtkwrite (name_vol polydata,四面体,x, y, z, elem_0);
在两个文件中,在节点列表末尾的(0,0,0)右侧添加两个节点。这些节点不存在于输入x,y,z中。我真的不知道为什么这两点都是添加的。你有什么建议吗?
谢谢你!
嗨乔,
我想知道我如何使用这个脚本为一个四边形2D网格和颜色每个元素根据一定的值(为CFD目的)?
谢谢你所做的伟大工作!
@ Michael,谢谢你的评论。第81行中的维度分配主要用于第一维表示Y轴和第二维表示X轴的图像数据。当然,这可能对您的申请不同。
嗨乔,
我遇到了与非二次基地区域导出结构化网格的问题。在我看来,第81行中的尺寸宣言被混合起来。我改变了x和y方向来解决问题。
迈克尔,
PS:谢谢你的工作
嗨,谢谢你的辛勤工作。这可能是愚蠢的,但如何将2D标量和向量字段导出到Paraview?
迪米特里,你不是在找例子四吗?它输出三角数据。
Hi Ted, ParaView确实支持RG金宝appBA查找表,但我还没有实现它。我可能很快就会做的。
嗨Rob,这是如何将卷数据导出到段的示例。
负载核磁共振
d =挤压(d);
[x, y, z] = ndgrid(1:尺寸(D, 1), 1:尺寸(D, 2), 1:尺寸(3 D));
vtkwrite('mri.vtk','structified_grid',x,y,z,'scalars','强度',d);
是的,在渲染3D卷时似乎似乎很慢。您可能想要为此目的尝试imagej 3D查看器。
嗨乔,
首先,很好的剧本!!我试图将我的双矩阵(医学图像切片)放入VTK以及一些矢量数据。但是,当我加载Paraview中的双矩阵时,它只能用作点数据。当我在帕划线中选择卷时,它变得非常慢。我该怎么办才能获得批量数据?
最好的问候,
rob
这个工具可以写入标量RGB和alpha数据集到vtk文件吗?
谢谢乔,好工作!是否有可能在三角网格上与此功能导出标量字段?类似的东西
vtkwrite('tri.vtk','polydata','triangle',x,y,zeros(size(x)),tri,'unstructured_grid',x,y,z,'scalars','scalar_field',字段);
或者它是一种不同的方法,可以在帕划线中看到这样的领域?
对不起,我真的不明白“细胞明显”真正的意思。不连续,您是否意味着有没有价值的网格点?如果是这样,你可以使用非结构化网格?我觉得我可能无法正确回答你的问题,因为我不知道数据的结构。如果您可以向我提供一组数据(或示例),我可以更好地回合。
嗨Joe,谢谢你的快速回复:-)我认为在我的问题中可能尚不清楚。示例1转储节点字段,以及我正在寻找的是一种细胞 - 明智的磁场(这可能是强调,密度等),这通常是元件之间不连续的东西。这可能吗?
嗨,Niels,我相信你希望做的是在例子1中列出的(见上面)?可以在同一个网格点中包含多个标量和矢量数据集。
这很棒!快速,简单,它只是有效。您是否计划将单元格常数DataT(vectors和scalars)包含在内的可能性?
Jameson,您可以使用此卷图像,假设您在每个网格点处只有一个强度值:
vtkwrite('volume.vtk','结构_grid',x,y,z,'scalars','强度',int);
哎呀我错过了与'r'的第一个电话。
我可以用它来写一个卷图像吗?
也许使用meshgrid为x,y,z设置一个结构化网格,然后设置u=v=w为强度值?(或者可能只是一个和另外两个0)
郝,我刚刚为非结构化网格添加了支持。金宝app看看是否适合您。
非常感谢添加“导出Tetrahedron”选项。它按预期工作
Hao,目前该脚本不支持非结构化网格数据类型。金宝app如果你能给我提供一个样本数据集,我应该能够添加这个功能。
这是美妙的!
这可以用于非结构化网格三维速度数据吗?我有矢量分布在三维空间的随机位置。