PythonとVTKを使用して非構造化グリッド(VTU)ファイルを読み込む方法を紹介します。この記事では、VTKのvtkXMLUnstructuredGridReaderクラスを使用して非構造化グリッドを読み込むPythonスクリプトを作成します。
まず、必要なモジュールをインポートします。
import vtkmodules.all as vtk
次に、ファイル名を取得する関数を定義します。
def get_program_parameters():
import argparse
description = 'Read an unstructured grid file.'
parser = argparse.ArgumentParser(description=description)
parser.add_argument('filename', help='tetra.vtu.')
args = parser.parse_args()
return args.filename
この関数は、コマンドライン引数として渡されたファイル名を返します。
次に、メイン関数を定義します。
def main():
colors = vtk.vtkNamedColors()
file_name = get_program_parameters()
# Read the source file.
reader = vtk.vtkXMLUnstructuredGridReader()
reader.SetFileName(file_name)
reader.Update()
output = reader.GetOutput()
# Create the mapper that corresponds the objects of the vtk.vtk file
# into graphics elements
mapper = vtk.vtkDataSetMapper()
mapper.SetInputData(output)
mapper.ScalarVisibilityOff()
# Create the Actor
actor = vtk.vtkActor()
actor.SetMapper(mapper)
actor.GetProperty().EdgeVisibilityOn()
actor.GetProperty().SetLineWidth(2.0)
actor.GetProperty().SetColor(colors.GetColor3d("MistyRose"))
backface = vtk.vtkProperty()
backface.SetColor(colors.GetColor3d('Tomato'))
actor.SetBackfaceProperty(backface)
# Create the Renderer
renderer = vtk.vtkRenderer()
renderer.AddActor(actor)
renderer.SetBackground(colors.GetColor3d('Wheat'))
# Create the RendererWindow
renderer_window = vtk.vtkRenderWindow()
renderer_window.SetSize(640, 480)
renderer_window.AddRenderer(renderer)
renderer_window.SetWindowName('ReadUnstructuredGrid')
# Create the RendererWindowInteractor and display the vtk_file
interactor = vtk.vtkRenderWindowInteractor()
interactor.SetRenderWindow(renderer_window)
interactor.Initialize()
interactor.Start()
この関数は、非構造化グリッドを読み込み、それを視覚化します。
最後に、メイン関数を呼び出します。
if __name__ == '__main__':
main()
以上がPythonとVTKを使用して非構造化グリッドを読み込む方法です。このスクリプトを実行すると、非構造化グリッドが視覚化されます。