python vtk_使用Python从vtk文件中的数据绘制轮廓图

我有一组存储在VTK文件中的数据,它代表一个带有数组中标量点数据的域的切割.我正在尝试生成所述标量的等高线图,使其看起来有点像使用ParaView制作的附图.我宁愿坚持使用vtk库而不是使用其他东西,比如Matplotlib,因为我认为它们会产生更好的可视化效果.

我在线查看了几个例子,但没有一个对我有效(没有错误被抛出,我最终得到的只是背景的空渲染),我所能做的只是一个表面图.数据(例如:here).

这是我所拥有的代码的当前版本(非常类似于成功生成曲面图的代码):

# import data

reader = vtk.vtkDataSetReader()

reader.SetFileName('inputDataFiles/k_zCut.vtk')

reader.ReadAllVectorsOn()

reader.ReadAllScalarsOn()

reader.Update()

# access data

data = reader.GetOutput()

d = data.GetPointData()

array=d.GetArray('k')

# create the filter

contours = vtk.vtkContourFilter()

contours.SetInput(reader.GetOutput())

contours.GenerateValues(5,1.,5.)

# create the mapper

mapper = vtk.vtkPolyDataMapper()

mapper.SetInput(contours.GetOutput())

mapper.ScalarVisibilityOff()

mapper.SetScalarRange(1., 5.)

# create the actor

actor = vtk.vtkActor()

actor.SetMapper(mapper)

# create a rendering window and renderer

ren = vtk.vtkRenderer()

ren.SetBackground( 0.329412, 0.34902, 0.427451 ) #Paraview blue

# Assign actor to the renderer

ren.AddActor(actor)

renWin = vtk.vtkRenderWindow()

renWin.AddRenderer(ren)

renWin.SetSize(750, 750)

# create a renderwindowinteractor

iren = vtk.vtkRenderWindowInteractor()

iren.SetRenderWindow(renWin)

# render

renWin.Render()

# screenshot

w2if = vtk.vtkWindowToImageFilter()

w2if.SetInput(renWin)

w2if.Update()

w2if.SetMagnification(5.)

writer = vtk.vtkPNGWriter()

writer.SetFileName("screenshot.png")

writer.SetInput(w2if.GetOutput())

writer.Write()

# Enable user interface interactor

iren.Initialize()

iren.Start()

下面你可以看到我的输入文件的缩短部分.任何帮助都感激不尽.

# vtk DataFile Version 2.0

sampleSurface

ASCII

DATASET POLYDATA

POINTS 34813 float

0 0 0

0 -0.000191589 0

0.000264399 0.000157061 0

0 0.000313389 0

0.000264347 -0.000191923 0

0 -0.000383178 0

-0.000395709 0 0

-0.000395709 0.000156695 0

3.60174e-05 0.000486922 0

0.000528387 0 0

POLYGONS 69284 277136

3 4105 4371 3861

3 4102 3861 4371

3 4656 4371 4373

3 4105 4373 4371

3 3624 3861 3390

3 3621 3390 3861

3 4105 3863 3861

3 3624 3861 3863

3 3188 3390 2990

3 3187 2990 3390

3 3624 3390 3391

3 3188 3391 3390

POINT_DATA 34813

FIELD attributes 1

k 1 34813 float

0.849464 0.391519 1.52947 1.05206 0.391519 0.253736 1.39481 1.39481 0.636517 1.21019

0.640193 0.114295 1.12557 0.644143 0.629569 0.114295 0.485032 0.477396 1.39961 0.0860201

1.66665 1.24058 1.45939 0.483719 1.01318 0.163198 0.317574 0.792821 0.317125 0.658835

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值