はじめに
前回からの続き。
今回は,openFOAMの結果をBlenderで読み込める形式に出力して,可視化するまでを行う。
Blenderで読み込み可能なファイル形式
Blenderでは,下記で標準で読み込み可能なファイル形式は下記のとおりで,このうち,plyとx3dはParaviewで出力できるようになっている。
Paraviewでデータを出力する
x3d形式の場合
ただし,Export Sceneは表示されている状態のデータを出力するだけ。時刻ごとに出力することはできない。
pythonによる連続出力
pythonを使うと,連続出力行うことができる。
サンプルは下記のとおり。
下記では,C:\GithubData\OpenFOAM_Vis_Blender\cal_data\iobasin\PV_x3d
に,
ファイル名{time_step}_time={time_value}.{ext}
で出力するようになっている.
from pathlib import Path
import numpy as np
ext = ".x3d"
save_directory_path = r'C:\GithubData\OpenFOAM_Vis_Blender\cal_data\dambreak\PV_x3d'
savedir = Path(save_directory_path)
savedir.mkdir(exist_ok=True)
# time steps
tk = GetTimeKeeper()
timesteps = tk.TimestepValues
numTimesteps = len(timesteps)
animationScene1 = GetAnimationScene()
renderView1 = GetActiveViewOrCreate('RenderView')
animationScene1.PlayMode = 'Snap To TimeSteps'
animationScene1.GoToFirst()
for i, time in enumerate(timesteps):
animationScene1.AnimationTime=time
timeStr = f'{i:04d}_time={time:04.2f}'
ofn = savedir/ (timeStr + ext)
print(ofn)
ExportView(str(ofn), view=renderView1)
実行すると,PythonShellにログとして出力ファイル名が出力されていく。
blender で読み込んでみる。
とりあえず読み込むことができたが,クリップした後の形状データ以外のものもデータに含まれている・・・このあたりの処理は次回に回す。
以上。