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