FFIsoVis
FreeFem++ で出力される XXX.mesh, XXX.sol から3次元等値面を可視化する.
ffmedit と違い,回転角度や等値面の値等を指定した描画が可能
使用方法:
FreeFem++ で savemesh(), savesol() を使ってメッシュデータと結果データのファイルを作成する.
使用方法:
1. FreeFem++ で savemesh(), savesol() を使ってメッシュデータと結果データのファイルを作成する.
mesh Th2=square(20,20);
mesh3 Th=buildlayers(Th2,20);
fespace Vh3(Th,P2); Vh3 u;
...
savemesh(Th,"XXX.mesh");
savesol("XXX.sol",Th,u);
2. FFIsoVis を実行する.
例:
$ ./FFIsoVis -f XXX -c "0.5,0.5,0.5" -r "30.0,20.0" -t 0.4 -T -b
-f XXX
XXX.mesh と XXX.sol を読み込む
-c "0.5,0.5,0.5"
回転中心を (0,0,0) から (0.5,0.5,0.5) へ移動する
-r "30.0,20.0"
x,y軸に対してそれぞれ 30度,20度回転させる
-t 0.4
u=0.4 の等値面を描画
-T
透過モードで描画
-b
境界ボックスを描画
仕様:
環境 : unix + OpenGL + GLUT (freeglut)
利用条件 : GNU GPL
プログラムに関して:
起動時に視点,回転角度,等値面の値等を指定できるので,(画像ファイル保存コマンドを付け加えれば)データ作成が容易
スクリプト等で動画用の画像データを自動作成することができる
Isosurface, mesh wire, boundary box に分けて GLList を作成
通常の描画時にはGLListからコマンドを呼び出して描画するので,回転等が多少スムーズになった
等値面を変更する際には isosurface の GLList だけ作り直すので,マシンへの負荷が低い
プログラムの変更により複数のデータファイルの読み込み,描画が可能となる(各自でどうぞ)
Processing 版(ボタン,スライドバー付き)ただ今開発中 [2014-05-11]
その他:
コマンドラインオプション
-b Value : draw boundary box (0:none, 1:draw)
-c "x,y,z" : change center position of rotation
-e "x,y,z" : shift camera (eye) position
-f FileName : data file name [*]
-r "x,y" : rotation angles for x and y axises
-s Value : draw iso-surface (0:none, 1:draw)
-S Value : stereo view (0:none, 1:SideBySide, 2:TopAndBotttom)
-t Value : threshold value of isosurface
-T Value : transparent mode (0:off, 1:on)
-u Value : remove uppeer-data node (0:off, 1:on)
-w Value : draw wired-mesh (0:none, 1:draw)
謝辞
OpenGL から bitmap 形式でのファイル保存については, sonson@Picture&Softwareさんの GLUTsaveBMP (MIT license です)を使用しています
Top-and-Bottom で立体視ができることについては, AUGMENT8 の展示会「A8D: 1」で教えて頂きました
参考文献