vtkXMLUnstructuredGridReaderまとめ(随時更新)


vtkXMLUnstructuredGridReaderについて

classリファレンス
https://vtk.org/doc/nightly/html/classvtkXMLUnstructuredGridReader.html
欲しい機能がない場合は親クラスであるvtkXMLUnstructuredDataReaderも調査するとよいでしょう。

vtkXMLUnstructuredGridReaderを用いることで、vtm形式のファイルをvtkライブラリで読みこむことができます

今回はOpenFOAMの結果を用いてvtuファイルを作成します

terminal
$ git clone https://github.com/matsubaraDaisuke/vtk-data-set.git
$ cd openfoam_case
$ foamTovkt -ascii

openfoam_caseの直下にVTKが作成され、OpenFOAMの出力時間ごとにフォルダが作成されます。vtmファイルは、そこフォルダ内にあります。

基本コード

import vtk

# reader
reader = vtk.vtkXMLUnstructuredGridReader () 
reader.SetFileName("VTK/src_283/internal.vtu"); # vtuファイルのパス
reader.Update()

# filter
filter = vtk.vtkGeometryFilter()
filter.SetInputConnection(reader.GetOutputPort())
filter.Update()

# mapper
mapper = vtk.vtkCompositePolyDataMapper2()
mapper.SetInputConnection(filter.GetOutputPort()) #mapperにfilterを設定

# actor
actor = vtk.vtkActor()
actor.SetMapper(mapper)             #actorにmapperを設定
actor.GetProperty().EdgeVisibilityOn()

# renderer
renderer = vtk.vtkRenderer()
renderer.AddActor(actor)            #rendererにactorを設定

##背景色の設定
renderer.GradientBackgroundOn()      #グラデーション背景を設定
renderer.SetBackground2(0.2,0.4,0.6) #上面の色
renderer.SetBackground(1,1,1)        #下面の色

#Window
renWin = vtk.vtkRenderWindow()
renWin.AddRenderer(renderer)         #Windowにrendererを設定
iren = vtk.vtkRenderWindowInteractor();
iren.SetRenderWindow(renWin);
renWin.SetSize(850, 850)
renWin.Render()
iren.Start();

printで情報を見ることができます

print(reader)
>>
vtkXMLUnstructuredGridReader (0x7ff031cf9b50)
  Debug: Off
  Modified Time: 9623
  Reference Count: 2
  Registered Events: (none)
  Executive: 0x7ff031cf3c90
  ErrorCode: Undefined error: 0
  Information: 0x7ff031ce3700
  AbortExecute: Off
  Progress: 1
  Progress Text: (None)
  FileName: VTK/src_283/internal.vtu
  CellDataArraySelection: 0x7ff031ce3b20
  PointDataArraySelection: 0x7ff031cef0e0
  ColumnArraySelection: 0x7ff031cef0e0
  Stream: (none)
  TimeStep:0
  NumberOfTimeSteps:0
  TimeStepRange:(0,0)

メソッド

実際にはvtkXMLUnstructuredDataReaderに実装されています。

GetNumberOfPoints

部品数?の取得

reader.GetNumberOfPoints() 
>> 1

GetNumberOfCells

セル数の取得

reader.GetNumberOfCells () 
>> 12225

GetNumberOfPoints

節点数の取得

GetNumberOfPoints 
>> 25012