MRが楽しい

MRやVRについて学習したことを書き残す

ParaViewで可視化したデータを3Dデータに出力してBlenderに取り込む

本日は ParaView の学習枠です。
ParaView で作成したデータを hololens で確認するため、ParaView の可視化データを x3d 形式のジオメトリデータで出力します。
f:id:bluebirdofoz:20170820144558j:plain

サンプルデータの取得

今回は以下のSimScaleからサンプルデータを取得しました。
bluebirdofoz.hatenablog.com

また、以下の手順と同様にカラーマップや流線の設定を行いました。
bluebirdofoz.hatenablog.com

3Dデータファイルの出力

出力を行うプロジェクトを ParaView で開きます。
f:id:bluebirdofoz:20191118161843j:plain

可視化データを3Dデータファイルとして出力するには[Export Scene]の機能を利用します。
メニューから File -> Export Scene.. をクリックします。
f:id:bluebirdofoz:20191118161851j:plain

ファイル出力ダイアログが表示されます。
出力先ディレクトリとファイル名を指定し、[Files of type:]には[X3D Files (*.x3d)]を選択します。
[OK]ボタンをクリックすると、3Dデータファイル(*.x3d)が出力されます。
f:id:bluebirdofoz:20191118161901j:plain

[X3D Files (*.x3d)]形式で出力すると、カラーマップの色情報は頂点カラーとして出力されます。
このため、出力した3Dデータにはシミュレーションデータの数値情報は保持されていません。
3Dデータで確認できるのは、可視化データの形状と、出力時に表示していたカラーマップの色情報のみになります。
f:id:bluebirdofoz:20170820144633j:plain

複数ファイルの自動出力

[Export Scene]の機能で出力される3Dデータは現在表示中の Step 位置の3Dデータです。
時系列に沿ったアニメーションを出力する場合は、各 Step の3Dデータを別々に出力する必要があります。
スクリプトを用いると、Step 毎の複数ファイルの出力を自動で行うこともできます。

メニューから Tools -> PythonShell をクリックします。
f:id:bluebirdofoz:20170820144607j:plain

ウィンドウが表示されるので、RunScript を選択して実行する Python スクリプトを指定します。
f:id:bluebirdofoz:20170820144616j:plain

今回は後述の参考ページを元に以下のスクリプトを実行しました。

Start = 0
End = 2
savedir = 'D:\Paraview\Output\WingTest\WingGeo'
animationScene1 = GetAnimationScene()
renderView1 = GetActiveViewOrCreate('RenderView')
animationScene1.PlayMode = 'Snap To TimeSteps'
animationScene1.AnimationTime=Start
for time in range(Start, End):
	timeStr = '%04d' % time
	ExportView(savedir+timeStr+'.x3d', view=renderView1)
	animationScene1.GoToNext()

結果、以下の通りファイルが出力されました。成功です。
f:id:bluebirdofoz:20170820144623j:plain

Blenderへの取り込み

出力した3Dデータファイル(*.x3d)を Blender で取り込んでみます。
Blender の場合はメニューから ファイル -> インポート -> X3D Extensible 3D(.x3d / .wrl) で読み込み可能です。
f:id:bluebirdofoz:20191118162022j:plain

これで ParaView で可視化したデータを3Dデータとして Blender に取り込むことに成功しました。

参考ページ

qiita.com