FFIsoVis

FFIsoVis-RD2

FreeFem++ で出力される XXX.mesh, XXX.sol から3次元等値面を可視化する.

  • ffmedit と違い,回転角度や等値面の値等を指定した描画が可能

使用方法:

  1. 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

    1. -f XXX

      • XXX.mesh と XXX.sol を読み込む

    2. -c "0.5,0.5,0.5"

      • 回転中心を (0,0,0) から (0.5,0.5,0.5) へ移動する

    3. -r "30.0,20.0"

      • x,y軸に対してそれぞれ 30度,20度回転させる

    4. -t 0.4

      • u=0.4 の等値面を描画

    5. -T

      • 透過モードで描画

    6. -b

      • 境界ボックスを描画

仕様:

  • 環境 : unix + OpenGL + GLUT (freeglut)

  • 利用条件 : GNU GPL

プログラムに関して:

  1. 起動時に視点,回転角度,等値面の値等を指定できるので,(画像ファイル保存コマンドを付け加えれば)データ作成が容易

    • スクリプト等で動画用の画像データを自動作成することができる

  2. Isosurface, mesh wire, boundary box に分けて GLList を作成

    • 通常の描画時にはGLListからコマンドを呼び出して描画するので,回転等が多少スムーズになった

    • 等値面を変更する際には isosurface の GLList だけ作り直すので,マシンへの負荷が低い

  3. プログラムの変更により複数のデータファイルの読み込み,描画が可能となる(各自でどうぞ)

Processing-iso_draw_move

Processing 版(ボタン,スライドバー付き)ただ今開発中 [2014-05-11]

その他:

  1. コマンドラインオプション

    • -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」で教えて頂きました

参考文献