...

等値面


■ フィルタ(&L)内の等値面を選ぶと、サイドパネルに等値面の設定が現れます。

PovRayでのレンダリング用の設定ファイルの出力のみ可能でしたが、Ver0.555から、プレビュー表示できるようになりました。

一ステップ分の等値面を一度計算するだけならともかく、時間進化を追うなどすると相当重い処理になるので、マルチスレッドで計算するように設定しておくのがお勧めです。




■ プレビューでの等値面の表示

等値面をガウス暈しや、レベル補正の下に配置をすると、それを適用済みのデータから等値面を計算します。



左)素の等値面 右)ガウス暈し後の等値面

注) 暈しフィルタなどデータ処理をするフィルタの効果の多くは、PovRayによる出力に反映されません。PovRayはファイルを読んでレンダリングをするので、レンダリングするにはガウス暈しを適用済みの.df3ファイルが必要になります。

一度エクスポートでガウス暈しなどのエフェクトを適用済みの.df3ファイルを出力して、それを読み込んで利用することで暈し済みのデータのレンダリングをします。
その際、エフェクトを適応済みのデータに再度エフェクトを適用してレンダリングしないように、気をつける必要があります。


■ また、エクスポート済みの等値面を、オブジェクトとして利用するという方法もあります。


■ PovRay による等値面の表示

等値面は複数設定でき、PovRayでのレンダリングの際には、半透明な等値面を複数配置することができます。
(プレビューではまだ半透明を実装して無いので、実質的に最外殻のみの表示です)



等値面は、表面を持ったオブジェクトなので、光源が無いと見えません。(環境光を設定すれば、薄ぼんやりとは見える)

一方、ボリュームデータは光源があると、光の散乱の計算をするので、非常に計算が重くなります。
レンダリング速度を上げるには、光源の設定を影無しにしたり、ボリュームデータの散乱を切るなどのチューニングが必要になります。

不透明度不透明度です。1以下の半透明にすると、計算量は増えるので計算は遅くなります。
しきい値等値面の閾値です。この値よりも濃い部分を等値面が取り囲みます。
反転チェックすると、しきい値よりも薄い部分を等値面が取り囲むようになります。

複雑な形状の場合に不透明なものを表示すると、互いの隠蔽関係を多く計算するために重くなります。max_trace_levelの値を(出力が破綻しない程度に)低くすることで、事態はましになります。



■ 等値面の中身

不透明な等値面にした際には等値面の中身が見えます。

内部を「空洞」にすると、自分自身の他に表示されているボリュームデータが、等値面の内部に入り込んで表示されます。

「詰まっている」を選択すると、他のデータは等値面の内部に入り込んできません。(他のデータを排斥するという意味で「詰まっている」と表記していますが、「フォグ」フィルターなどで内部を設定しない場合は、見た目としてはむしろこちらの方が空洞に近いです。)

また、ボリュームデータを内部に詰めて不透明度を 0 にすることで、ある閾値よりも大きいボリュームデータのみを表示するといったことも出来ます。



■ テクスチャ設定

■ 等値面などの物体は、テクスチャ設定で色や反射の設定や、バンプマップの設定を行います。

テクスチャ設定の詳細->


■ 等値面はそのままだとつるんとした表示で、メッシュの境界も目立ってしまうので、バンプマップ(凹凸)の設定をしても良いかもしれません。



バンプマップ有りと無しの比較(GIFアニメーション)。使うマップの種類に依存しますが、1メッシュぐらいの構造を隠すという意味で、スケールの値はかなり小さい値を入れるべきでしょう。

■ メッシュの境界はデータの解像度の情報があるので残すべきである、という考え方と、メッシュは単なるアーティファクトな嘘情報なので、目立たないべきである、という2つの考え方がありますが…



■ advanced 設定 (!現在ここの設定はPovRayのレンダリング設定に移動しています。書き直さねば…)

以下の設定は、全ての等値面で共通になります。

max_trace 通常は2など少ない数字でいいはずです(現在2を最低値にしています)。ボリュームと組み合わせたり、半透明を使い出すと、何枚分半透明な面を計算するかに応じて大きめの数字が必要になってきます。多くすると遅くなるので、画面が崩れない程度に少ない数字を探します。(詳細はPovRayのIsosurface機能参照)
max_gradientstaticな値かdynamicな値かを使います。
基本的に値を小さくすると、速くなりますが不正確になる可能性があります。
勾配の大きいデータには大きな値が必要になります。
精度値を大きくすると、速くなりますが、不正確になる可能性があります。

基本的に、なだらかに変化するデータは計算が速いですが、急激に変化するデータは、パラメータを変えて高精度な(つまり重い)計算をしないと不正確になります。

デルタ関数的な飛びのあるデータを扱っている場合や、スキャンデータのノイズなど、本来は無いはずのアーティファクトな高周波成分があるときには、データ全体にぼかしをいれるなどして、データの勾配をゆるくした方がいいかもしれません。

■ max_gradientの値は固定設定(static)のほかに、Pov-Ray内部で計算中に必要に応じて変更して高速化するオプションがあります。

動的に変化させる場合の 3つのパラメータ(P0, P1, P2) はそれぞれ基本のmax_gradientと、値を変化させるときの倍率です。
P0は 変化するmax_gradientの最小値で、max_gradientの値より小さめの値を入れておきます。。P1、P2はそれぞれ1以上、1以下の値になります。通常1.3から0.7程度の値を入れます。

不具合が起きなければ、動的なmax_gradientを使ったほうが速いでしょう。

...