DF3 Viewer Oosawa (ver.0.778)


English

ボリュームデータを軽量なプレビューで表示して、カメラパスなどをGUIで設定をして、Pov-Rayで時間をかけてレンダリングをするという目論見のソフトです。
当初の目論見はそうでしたが、PovRayを使わないプレビュー状態でもある程度綺麗な出力ができます)

プレビューはテクスチャにデータを貼り付けて、表示しています。グラフィックボードが充分高性能であれば、高速に表示されます。
(とはいえ、512x512x512とかむやみに大きいと実はそうでもない…)

時系列データに対して、タイムライン上でのカメラパス設定などをすることができます。

ちょっとしたデータ処理やら何やらが実装されています。

開発のブログ

粒子データの可視化はこちら

Zindaiji4(開発中)

テストムービーギャラリーダウンロード詳しい履歴

■スクリーンショット

-その他のスクリーンショット



■左)中断していたベクトル場の矢印表示を進めた。もうちょっと機能つけたい。

■右)Windows版も64bit化しました。



スキャンライン方式のステレオ立体に対応しました。立体テレビを利用して立体で見ることも出来ます。また、アナグリフにも対応しました)。


■ Blender上で毛を生やしてレンダリング。

■ Wavefront (.obj) 形式で等値面の出力が可能になりました。
時間進化しないデータなどは、一般的な3DCGソフトに持っていってそこで作業することも可能になったので、ジェフの頭に毛も生やせます。
ここで重要なのはふさふさになったことではなくて等値面を他のソフトを利用してレンダリングできるようになったということです。
このように明示して書かないと理解できない人がいたことにびっくりしたので強調しました。

Pov-Rayでのレンダリング




左)箱の表面で屈折率を定義してガラスのオブジェのように。
右)セルフシャドウ付きでレンダリング。綺麗だが重い
(グレアはBlenderでコンポジット)



左)Subsurface Scattering の設定を追加しました。RC5 以降の文法で記述するのでそれ以前のバージョンでは使うとエラーになります。
右)エンボス的陰。当然正確な陰影の処理ではないが、まともな光線のレイトレースよりはずっと速い。

■ PovRay 3.7

2013年11月にPovRay 3.7がリリースされました。PovRay 3.6 と僅かに文法に違いがありますが、コードの整理のためにPovRay 3.6への対応は打ち切りました。

2016.03.25ver 0.778一部GUIの改善。バグフィックス
2015.07.17ver 0.776プログレスバーの追加。ホイールでのスクロール。バグフィックス
2015.05.26ver 0.774バグフィックス
2015.04.27ver 0.772焦点ぼかし。バグフィックス
2015.04.06ver 0.770ディザ合成とアンサンブル平均。一部GLSL導入。バグフィックス
2015.01.21ver 0.768メモウィンドウ。テキスト表示強化。バグフィックス
2015.01.06ver 0.766画像のクリップボードへのコピー。
2014.08.11ver 0.764Wavefront objファイル読み込み強化。
2014.05.26ver 0.762等値面の出力を高速化。バグフィックス。
2014.05.12ver 0.760慣性付旋回。バグフィックス。
2014.04.07ver 0.758ショートカットエディタ。バグフィックス。
2014.02.10ver 0.756ヘルプファイル。バグフィックス。
2014.01.10ver 0.754テクスチャ模様の一部再実装。バグフィックス。
2013.11.12ver 0.752魚眼を僅かに高速化。XPへの再対応。PovRay 3.7のみ対応。バグフィックス。
2013.08.11ver 0.750連番等値面のエキスポート。オブジェクトのインポート強化。バグフィックス。
2013.07.08ver 0.747等値面周り強化。バグフィックス。
2013.06.21ver 0.746魚眼周り強化。バグフィックス。
2013.06.13ver 0.745Extra パネルの表示。バグフィックス。
2012.11.07ver 0.742ボタンの一部アイコン化。コードの一部整理。バグフィックス。
2012.07.02ver 0.740パノラマ(円筒投影)。コードの一部整理。バグフィックス。
2012.06.13ver 0.737aPovRay用ファイル出力部に混入したバグをフィックス。
2012.06.10ver 0.737コンパイル環境をVC++2010に。等値面作成を少し高速化。バグフィックス。
...ver0.**
2008.08.15ver 0.28とりあえず多分動く版

動作環境

Windows XP以降。

基本的に適当な場所において実行ファイルを実行するだけですが、実行ファイルがあるフォルダに設定ファイルを書き込むので、Vista以降は書き込み権限関係で c:\Program Files 以下に置くかどうかは考慮する必要があります。レジストリは弄らないので、アンインストールは単に削除すればO.K.です。

GTK版のwxWidgetを利用しているので、wxWidget-gtkが動く環境が必要です。また、OpenGL のドライバーなどが適切にインストールされている必要があります。

操作マニュアル

0. df3 フォーマット

1. ファイル
データ開く データを名前で開く
エクスポート (連番)画像保存


2. データスロット

3. メインパネルとサイドパネル
プレビュー設定 ステレオグラム 詳細設定 サイドパネル

4. 時系列(タイムライン)
パラメータ編集

5. カメラパス
ビューとカメラ

6. カラーリング
カスタムカラー詳細

7. フィルタ
フィルタ詳細 モルフォロジフィルタ 速度場フィルタ

8. PovRayとの連携
レンダリング 光源設定 等値面詳細 テクスチャ インクルードファイル

9. ツリー構造
ツリー構造 ツリー構造の表示

ファイル

現時点でLinux版は日本語を含むパス名(デスクトップなど)のファイルは読み込めません。(Windows版も動かなくなる機能があります。極力日本語がらみは避けたほうが無難です)

プロジェクトを開く、プロジェクトの保存

レンダリングのパラメータやカメラパスなどはプロジェクトファイル(.osp)として保存できます。

データを開く、データを追加で開く

ボリュームデータを読み込みます。
PovRay用のボリュームデータ.DF3、または連番pngをボリュームデータとして読み込めます。
データスロットは現時点で4つ用意してあり、アクティブなスロットへの読み込みを行います。
詳細⇒

データを名前で開く、データを名前で追加

「名前で開く」は時間の連番をファイル名でなくてフォルダ名で管理するような場合などの為に、(命名ルールも含めて)読み込むファイルの設定をします。詳細⇒

インポート

プロジェクトファイルから表示に関する情報、カメラパスに関連する情報を別々に読み込む機能です。
(レンダリングパラメーターの違う2つの動画を作る時など用の機能です)

エクスポート

データ処理の適用済みの.DF3ファイルを作成する場合などに使います。
アクティブなデータスロットで、現在保持している処理済のデータを.DF3として出力します。
エクスポート詳細⇒

スナップショットを保存とコピー、連番画像保存

プレビューの画像を保存します。複数のパネルを使っている時は、左上のパネルの画像を保存します。詳細⇒
「スナップショットをコピー」はクリップボード上に出力画像をコピーします。

データスロット

複数のデータを読み込んで表示することができます。
ボリュームデータは、アクティブなデータスロットに読み込まれ、スロットごとに表示の設定をすることが出来ます。
タブ選択によってアクティブなデータスロットを選びます。

メインパネルとサイドパネル

メインパネル

パネル分割メニューから設定して、最大4つのビューが使えます。パネルの境界はマウスで移動することが出来ます。


各ビューにある[I][W][B][G][D]のボタンは、それぞれ、[アイテム各種][ワイヤーフレーム][ボックス][グリッド][データそのもの]の表示非表示のボタンになっています。

高品質バッファの設定を入れると、画面に直接描画するのではなく、16bit深度のバッファに描画を行い、その結果を画面に表示します。マッハバンドなどの発生を抑えることができます。

各ビュー左上の選択肢から、自由移動、軸に沿った表示、カメラパスに沿った表示を選択します。

特殊な表示モードとして、メモ書き画面を表示できます。使用しているデータのメモ用途などに自由に使えます。

アイテムのマウス操作


カメラパスや、光源などの編集をマウスで操作が出来るようになりました。(デフォルトではShift+マウス左ボタン)
キーフレームを選択している場合は、そのキーの位置を。そうでない場合にはキーフレームを自動的に配置して動かします。

操作するアイテムの選択は、Shift+右クリック(実装途中で光源やカメラ等のみ可能)か、タイムライン上から行うことになります。

移動可能なアイテムを選択しているときには、矢印のガイドが表示されます。矢印をクリックすることで、X,Y,Z方向に限定して操作ができます。

切り取りフィルタの操作では、中心の移動の他に壁面の移動ができます。


パン移動は、ピボット位置を移動させます。

モード選択ボタン

ショートカットの[G][S][R]で、移動、回転、スケール設定モードになります。
設定ダイヤログ(ダイヤログ->プレビューの設定)で、OpenGLによる画面表示の画質やパフォーマンスの設定をすることができます。

プレビューの設定詳細⇒

ステレオグラム詳細⇒

そのほかの設定詳細⇒


パネル分割メニューから、Extra Panel を選ぶと、もう一つ表示用のウィンドウを表示できます。

独立にカメラの操作もできますが、表示設定を Copy of View0 とすることで、Extra パネルとメインのパネルの表示を連動させることができます。
この機能を用いて、別のモニターやプロジェクター出力に移動させて、プレゼンテーションに使うことができます。
Extra パネルは Alt+Enter で最大化ができます。

サイドパネル


画面右側にあるパネルで基本的な設定を行ないます。
また、フィルタの設定もサイドパネルに追加されます。

サイドパネル詳細⇒

■ フィルタなどは、データスロットごとに適用されます。データスロットは4つまで用意されており、タブセレクタで選択します。

□データ処理用のフィルタは上から順に適応する仕組みになっています。
ボリューム表示や等値面といった表示用のフィルタの下にレベル補正やガウス暈しといったデータ処理のフィルタを配置しても、表示は変化しないので注意してください。
処理後のデータを受け取るには、表示用のフィルタを下に配置する必要があります。


時系列(タイムライン)




時間進化するパラメータ(変化するカメラ位置や、移動する光源の位置など)の編集ができます。

一番上は、時間に関してのズームを決めるスライダーになっています。
その下は、連番データのメモリへの読み込み状態の表示、その下に各種パラメーターに関するタイムラインが表示されています。

パラメータ編集詳細⇒

画面下のスライダーやボタンで表示する現在の連番データの番号を設定します。

また、再生ボタンによって、メモリに載っている範囲のデータの再生をすることができます。

のチェックが入っていると、操作していない時間に前後のフレームを予め先読みするようになります。大きく時間を飛んだ時に一度onにして、周囲のデータをある程度読み込んだらoffにして操作するというのが多分一番使い勝手がいいと思います。
(その分反応が鈍くなるので)操作性に関しては一長一短です。状況に応じてチェックを入れたりはずしたりしてください。

重めのデータを扱っているときに、カメラワークだけチェックしたいので、そんなにデータを読みに行かなくても良いよ、という場合にチェックをしておくと、新規にデータの読み込みをせずに、現時点で保持しているデータだけを使って表示をします。

カメラパスと操作

表示用の視点は、マウスでぐりぐり操作できます。

デフォルトは以下のようになっています。

□ 旋回: マウス左ボタン
□ 旋回し続ける(慣性付旋回): Ctrl + マウス左ボタン
□ ズームイン、ズームアウト:Alt + 左ボタン 又は 中ボタン
□ 視点の中心を移動: Ctrl+Alt + 左ボタン。(見たい場所が原点じゃないときに)
□ アイテム選択: Shift + 右ボタン。(一部アイテムのみ実装)
□ 選択アイテムの移動 : Shift + 左ボタン

マウスボタンの割り当ては、設定ダイヤログから変更ができるます。

カメラワークの操作

カメラワークの設定は、キーフレームごとにカメラ自身の位置(POS)と、カメラの向く方向を決める「アンカー(ANC)」の位置を決めることで設定する仕組みです。

時間を合わせて、「キー配置[POS]」や「キー配置[ANC]」ボタンを押すと、表示している位置にキーが配置され、アニメーション出力の時に、キーを結ぶ曲線に沿ってカメラが移動するようになります。

ビューとカメラ⇒

カラーリング

密度に対する配色の設定は、予め用意されたデフォルト配色に加えてカスタム設定の配色を設定できます。

カスタムカラー詳細⇒



下の図のように、形状と色を別々のデータを反映させることができます。
ボリューム表示フィルタの設定で、「着色の方法」として「Slot n のデータに応じて」とすることで、元のデータとして濃さの情報を使い、別スロットのデータに応じて色を使うようになります。


(色情報として使われた側のデータスロットではボリューム表示を切っておきます。
現状ではそうしないとPovRay用の設定ファイルで同じタグの設定を2度書きしてしまうのでおかしくなります。)


プレビューとレンダリングの見た目は、ある程度ずれが生じます。
プレビューでは色に関係なく背後の光を遮るので陰影が強くでますが、PovRayによるレンダリングでは、成分ごとに光を遮るので、明るめになる傾向があります。
吸収を強めに入れたほうがプレビューに近い見た目になるようです。

フィルタ

Pov-Rayでレンダリングするためのボリュームや等値面の設定、複製の配置、フォグといったような機能はフィルタとしてまとめています。

フィルタはメニューから任意の数追加できます。最低1つのボリュームか等値面が無いとデータが表示されません。

複数のボリュームや等値面もPovRayでレンダリングできますが、(その分どんどん重くなるので)パラメータ調整などは大変になってゆきます。

フィルタ詳細⇒

モルフォロジフィルタは、画像処理の手法を3次元データに拡張したものです。名前は物々しいですが、基本的には選択範囲の拡大と縮小を使って、ゴミ取りをしたり、線をつなげたりという、フォトショップ使いの日曜絵師にはおなじみの操作の3次元拡張版です。

モルフォロジフィルタ詳細⇒

速度場フィルタは複数のデータをx,y,z成分と解釈して、速度場を表示するフィルタです。

速度場関係フィルタ詳細⇒


PovRay との連携

■ Oosawa上でセッティングした情報を Pov-Ray 用の出力ファイルとしてエクスポートして、レイトレーシングでレンダリングすることができます。

PovRay用の設定はメニューから「レンダリング設定」で呼び出せます。

レンダリング設定詳細⇒

光源あり(左)と無し(右)

■ PovRayでのレイトレース用に任意個の光源が置けます。
(プレビュー上では、最初の光源に対してのみエンボス的な擬似陰影を付けることができます。)

ボリュームデータは、Scatteringと光源を入れると、自分への影が計算されますが…
置いたとたんに劇遅!になるので、レンダリングパラメータとの兼ね合いが大変です。
等値面の表示などには光源の配置が必要です。(無いと陰影のない表示になります)

光源設定詳細⇒
等値面の表示と、PovRayでレンダリングするための設定ファイルの出力できます。



等値面詳細⇒
等値面やオブジェクトにはテクスチャを張って質感などを調整することができます。幾つかのパターンはプレビューでも反映しますが、多くの設定はPovRayによるレンダリングでのみ反映されます。

テクスチャ設定詳細⇒


インクルードファイル


PovRayにはさまざまな人が作ったサードパーティのインクルードファイルがあります。
そのうちの幾つかに対応するようになりました。
PovRay用のインクルードパスの下、または作業ファイルの下に配置すると、レンダリング時に利用できます。
(PovRay3.7だと、Windows版はマイドキュメント/Pov-Ray/v3.7/include/ Linux版は /usr/local/share/povray-3.7/include がデフォルトです)。
ただし、本来は直下に置くのですが、整理のためにインクルードパス直下ではなくて、それぞれにフォルダを作りそこを読みに行くようにしてあります。

Rune Skovbo Johansen によって開発された、草のテクスチャを生成するインクルードファイルです。
http://runevision.com/3d/include/

YOUR_INCLUDE_PATH/grasstex/
以下に必要なファイルをコピーすることで利用できます。
基本的に地面に使うものなので、上(z方向)を向いた面にしか対応していません

Chris Colefax によって開発された、宇宙用の背景を生成するインクルードファイルです
http://povrayinclude.wytraven.com/
YOUR_INCLUDE_PATH/galaxy/
以下に必要なファイルをコピーすることで利用できます。

TOMTREE.inc

Tom Aust によって開発された木を生成するためのインクルードファイルです。
http://www.aust-manufaktur.de/austtx.html

YOUR_INCLUDE_PATH/TomTree/
以下に必要なファイルをコピーすることで利用できます。

但し、フォルダを作ってコピーするため、TOMTREE.inc, TOMLEAF.inc 内から画像ファイルなどを呼び出す箇所を書き換えてファイル名にTomTree/を付け加える必要があります。(数箇所存在します)

八分木ツリー構造、ネスティッドグリッドデータへの対応

現在、最も単純な八分木のツリー構造と、ネスティッドグリッドのデータに対応しています。

例えば全体が512x512x512のデータを一度にレンダリングするの大変なので、遠くから見るときにはもっと荒いデータを使って、カメラが近寄った時のみデータ全体を利用するようにします。

この場合は256x256x256のデータを2x2x2の8個に分割して用意しておき、その親データとして一段階荒い256x256x256のデータを用意しておきます。

こうすることにより、カメラの位置などに応じて(データ全体ではなく)必要なデータだけをレンダリング時に利用することができます。

ツリー構造詳細⇒

■ ツリー構造の表示

ツリー構造を有効にすると、右の図のようにカメラが近いところは子供のデータを使うようになります。
(Oosawaでの表示は変わりません。PovRayを使ってレンダリングするときに、子供のファイルを使うようにするだけです)

ツリー構造の表示詳細⇒

ダウンロード


Windows用実行ファイル


  
Oosawa7p66.zipVer0.766
  Oosawa7p68.zipVer0.768
  Oosawa7p70.zipVer0.770
  Oosawa7p72.zipVer0.772
  Oosawa7p74.zipVer0.774
  Oosawa7p76.zipVer0.776
  Oosawa7p78.zipVer0.778 最新

LINUX用実行ファイル

  OosawaGTK2_7p66.zip Ver0.766 GTK2版
  OosawaGTK2_7p66.tar.gz Ver0.766 GTK2版(tar.gz)
  OosawaGTK2_7p68.zip Ver0.768 GTK2版
  OosawaGTK2_7p68.tar.gz Ver0.768 GTK2版(tar.gz)
  OosawaGTK2_7p70.zip Ver0.770 GTK2版
  OosawaGTK2_7p70.tar.gz Ver0.770 GTK2版(tar.gz)
  OosawaGTK2_7p72.zip Ver0.772 GTK2版
  OosawaGTK2_7p72.tar.gz Ver0.772 GTK2版(tar.gz)
  OosawaGTK2_7p74.zip Ver0.774 GTK2版
  OosawaGTK2_7p74.tar.gz Ver0.774 GTK2版(tar.gz)
  OosawaGTK2_7p76.zip Ver0.776 GTK2版
  OosawaGTK2_7p76.tar.gz Ver0.776 GTK2版(tar.gz)
  OosawaGTK2_7p78.zip Ver0.778 GTK2版 最新
  OosawaGTK2_7p78.tar.gz Ver0.778 GTK2版(tar.gz) 最新

  □ GUI部分に wxWidget の 2.8.12(GTK版)を使っているので、
  apt-get install libwxgtk2.8-0
  (もしくは相当する他の手法でのパッケージのインストール)が必要なようです。
  apt-get でインストールすると、もう一つ必要なlibwxbase2.8-0は自動で入ってきます。
  後は当然OpenGLを動かす環境(freeglut3などを入れておく)が必要です。

  □ Ubuntu14.04(32bit) 14.04(64bit)上でコンパイルした実行ファイル2つが入っています。

ソース

  DF3ViewerSRC7p30.zip Ver0.730 ソース(VC++2010)
  DF3ViewerSRC7p45.zip Ver0.745 ソース(VC++2012)
  DF3ViewerSRC7p60.zip Ver0.760 ソース(VC++2013)

wxWidgets関係のインクルードやリンクのパスは自分の環境に合わせて変更してください。
wxWidgets(2.8)のコンパイル法は、Zindaiji3のマニュアルに記述したので、参考にしてください。

LINUX版は ./configure; make でコンパイルできますが、./configureが未完成なので
-lglut の有無などは調べますが、肝心のwxWidgetsの環境を調べてくれません。

既知の問題


等値面を作るときに適当に用意したバッファ上で作業しているけれども、予想外に複雑で、そこからあふれてしまったときに多分死亡する。

あれ、32bit Linux版で空きメモリ量の判定が…?

Linux版のファイル読み込み(std::wistream)が、日本語が入っていると機能しない…。むー、別の手段に書き換え?

ToDo


フィルタ処理済みのdf3ファイルを中間ファイルとして(エクスポート無しに)レンダリングを。

マッピングできるオブジェクトを増強

ボリューム切り取りのスロットごとの分離。
プレビューでのポリゴン表示は良いけど、
.povの変更が(可能そうだけど)構造を大きく変えないといけなさそうでちと面倒そう…

画像データのRGBチャンネルを複数のデータとして読み込めるように。

ファイル処理改善(日本語を含むパス。ドラッグ&ドロップ)

Windows用にavi出力。Linuxではそんなライブラリがあるか分からん…

PovRayでのレンダリングの時だけじゃなくて、実表示も深いデータを使えるようにするといいんじゃね?
(少なくとも切り替えボタン付きで。今まで念頭になかった…)
...
inserted by FC2 system