複雑な幾何学計算を必要とするデータを扱う場合, レンダリング効率をあげる制御データ。 | |
ボリュームレンダリング効率をあげる制御データ。 |
Interfaceに関する記述は、別になくてもレンダリングできますが、細かい設定(影やPUSの数など)を行いたいときに指定するもののようです。 radiosityに関する指定(※)は、ほとんどここでしかできません。 ● "radiosity-depth", int diffuse, int specular ・・・・radiosityレイトレースの深さ ● "radiosity-sampling", string type ・・・・サンプリングのタイプ ● "radiosity-samples", int samples ・・・・ステップ数 ● "radiosity-threshold", float threshold ・・・・精度誤差 詳細はClassドキュメント&Exampleを御参照ください。 |
Lightflowのレンダリングは、基本がRay-tracingです。Radiosityも可能で、光子量や精度誤差なども設定できます。 ※光の収差を表現する場合は、スクリプト内に s.radiosity() の記述を入れ、interfaceで設定を行います。詳細はEXampleデータを参照の事。 soft系のライトは、影が柔らかく(zbuffershadow)、比較的レンダリング速度は速くなります(・・・とclassドキュメントには書いてありますが、遅くなってるような?)。ただし透過光などは苦手。 |
※補足・・・・soft系のlightの記述について、hyonさんから「soft系のlightのレンダリングが比較的速いというのは、ソフトシャドウを作りたいならpatchより速い、という意味では?(patchは正確なソフトシャドウを作りますが、レンダリングにえらく時間がかかるようなので)」という御指摘を頂きました。 |
球や箱などのプリミティブな形状以外のものは、必要に応じて適宜、他のCGソフトでモデリングしたオブジェクト(ポリゴンメッシュモデル、b-splineパッチモデル、NURBSパッチモデル)などを読み込んで使います。 ちなみにLightflowには、ポリゴンメッシュのみに限り、外部ファイル(.lfm形式)から読み込む機能があるので、スクリプトの記述に関しては、ポリゴンメッシュが、一番スマートではあると思います。 またb-spline、NURBSなどのオブジェを取り込む場はsurface-engineを適用する事で、レンダリング効率をあげることができます。 ※ボリューメトリックエフェクトや、displacement関係でも有効。 |
(displacementとbumpでのみ設定可能) | |
Material name | generic | standard | physical | diffuse | matte |
環境光 | ka | ka | ka | ka | kc |
拡散反射光 | kdr | kc×kd | kr×kd | kr | - |
拡散透過光 | kdt×kt | kt×kd | kt×kd | - | - |
スペキュラー反射光 | ksr | kc×(1-kd) | kr×(1-kd) | - | - |
スペキュラー透過光 | kst×kt | kt×(1-kd) | kt×(1-kd) | - | - |
レイトレース反射光 | kr | kr | kr×(1-kd) | - | - |
レイトレース透過光 | kt | kt×(1-kd) | kt×(1-kd) | - | - |
スペキュラーの滑らかさ | ○ | ○ | ○ | - | - |
スペキュラーの強さ | ○ | ○ | - | - | - |
曇り(blur) | ○ | ○ | ○ | - | - |
屈折率 | ○ | ○ | ○ | - | - |
フレスネルの効果 | ○ | ○ | ○ | - | - |
輝き(shinyness) | ○ | ○ | ○ | - | - |
ラジオシティのon/off | ○ | ○ | ○ | - | - |
擬似コースティクス | ○ | ○ | ○ | - | - |
コースティクス | ○ | ○ | ○ | - | - |
影の濃さ(transmission) | ○ | ○ | ○ | ○ | ○ |
visibilityの設定 | ○ | ○ | ○ | ○ | ○ |
trace-depthの設定 | ○ | - | - | - | - |
glitterの効果 | ○ | ○ | ○ | - | ○ |
ボリューメトリックのcloudに関する設定項目は、色・密度・放出量・減少量などです。 設定項目の多く(密度など)には、他のマテリアルやインテリア同様、数値以外にも、任意でパターンを割り当て&組み合わせができます。 また放出エリア指定は、boxや球以外にもポリゴンメッシュとかも可能なので、全体的には、かなり細かく設定を行う事ができます。 もちろん、ライトの影響もちゃんと受けます(^^) ※上の画像は、付属のcloud.pyを少し変更したものです。 2つのパターン(graniteとradial)を組み合わせ(compose)インテリアのcloudに適用し、放出エリア指定をboxにして、マットなマテリアルの球(半径1000)の中に入れてレンダリング・・・という感じです。 |
減少の要因(度合い)。この値が大きいと、薄くなります。 粒子の放出量。この値が大きいと、濃くなります。 反射率を指定します。 密度を指定します。 ここがデフォルトだと、非常に均等でプリミティブな感じになってしまうので、雲を表現する場合は、なんらかのパターンを組み合わせたものを指定するのが望ましいと思います。
|
サンプリングの正確さを指定します。
影の計算時に使う、キャッシュの量を指定・・だと思います(^^;) 各環境に応じて、適正な値を設定すれば、レンダリング時間の短縮を測れるようですが、メモリ関連の項目はまだよくわかりません。 密度の計算の時に使う、キャッシュの量を指定・・だと思います(^^;) う〜む? デフォルトで、レンダリング速度に不都合を感じて無ければ、設定する必要はないと思います。 |
放出エリア指定に使えるオブジェクトは、boxや球などオーソドックスな形のもの以外にも、ポリゴンメッシュモデルなども可能です。 試していませんが、たぶんB-splineモデルとかでもできると思います。 「空に漂う雲」などでなく、ある程度、任意の範囲に雲を配置したい場合は、使えそうですね。
※cloud自体の設定値より、オブジェクトが小さい場合は、当然、境界ははっきりします。 また、オブジェクトの大きさに応じてcloudの密度も変わるようなので(?)、cloud自体の設定以外にもオブジェクトの設定も大切なようです。 このへんは難しいですね。 |
煙の値を指定します。数値に比例して粒子の量が増えます。 デフォルト(省略時の)値は1,0。 煙の色を指定する(だと思います) 。 デフォルトの値は(1,1,1)。 ※SMOKE.PYのように、Interiorのcloudに割り付けている場合は、Interiorでの色情報が適用され るので、ここは設定する必要はないです。 煙の深さを指定します。 デフォルトの値は0,1。 煙のソース(発生源)の位置を指定します。 省略時の値は(0,0,0)。 煙のコラムの散らばりの要因を指定 します。デフォルトの値は0,05。 |
<実験例> 左から ●"value",5.0 ●"value",5.0、& "depth",5.5 ●"dispersion",1.5 ●kr(1.5,0.5,0.5) |
煙のコラムの縦方向(上昇する)の速度を指定します 。 デフォルト(省略時)の値は3,0。
煙の螺旋形の詳細を指定します。 radiusは螺旋体の半径, r-speedは回転速度を指定し, v-speedは縦の速度 を指定します。 ディフォルト値は 0,18,2*PI,1,。 |
煙がソースから排出され始まるフレームを指定します。 startが開始の瞬間 、endがピークに達した瞬間(だと思います)。 デフォルトの値はそろぞれ0.0、0.3。 煙がソースから排出され終わるフレームを指定します。 startがピークの瞬間(排出ストップし始める瞬間) 、endが排出され終わる瞬間を指定。 だからendから後、数フレーム間(最後に排出された粒子が大気中に拡散するまでの間)は、まだ煙が見える事になります。 デフォルトの値はそろぞれ0.7、1.0。 |
レンダリングされるフレーム。現在の時間ですね。 デフォルトの値は0.5。 ここの経過時間を変えるだけでも、こんな感じ(※)で簡単なアニメーションを作成する事ができます。 ※010から111までのフレームを指定し、手動でレンダリング、30フレーム/秒でムービーにしています。 本当に煙らしくするには、他の項目(ゆらぎやスピードなど)も細かく変化させる必要があるので、フォースや重力の概念がないLightflowの場合は(エリアの指定はできます)、手動で設定する事になり・・・ かなりしんどいかも(^^;) |
煙のコラムの形を指定します。 ちなみにコラムは、筒(empy tube?)状の形をしています。 radiusは筒の半径、thicknessは密度の最も高い部分の範囲、borderは境界(煙のある部分とない部分の)の範囲・・ だと思います。 下の図を参照ください(^^;) デフォルトの値はそれぞれ、0.11, 0.03, 0.0。
|
乱れの量を指定します。 デフォルトの値は0,1。 乱れのフラクタル次元を指定します(?)。 デフォルトの値は0,5。 乱れの各スケール間の周波数の 変更を指定します(?)。 乱れは別の頻度の騒音の層の総計に よって得られます。 この値は次の1つを得なるために各層に適用なされる頻度のスケールを表現します(?)。 デフォルトの値は2,0。 (1.0以上の値を設定すること) |
ちなみに、ボリュームオブジェクト(この場合は煙の部分ですね)は、αマップとして描かれません。一番上の画像のαチャンネルだけを取り出すと、こんな感じになります。 |
出力像を保存する。 |
┏━━━━━━━━━━━━━━━━━━━━━━━━━┓ おおまかに分けると レンダリング時における視覚的処理(dof,film,gitter,halo)と 出力に関する設定項目(saver.tga-saver)に分かれます。 ※αチャンネルつき画像で出力する時は、以下を記述。 "alpha", int switch <例>saver = s.newimage("tga-saver",["file","name.tga"),"alpha,1"]) 1だとあり、0だとなし。 省略時(デフォルト)の値は1なので、 ふつうは、αチャンネルつきのTGA画像が出力されます。 ※デプスバッファつき画像で出力する時は、以下を記述。 string "depth", int switch, string filename ┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛ |
┏━━━━━━━━━━━━━━━━━━━━━━━━━┓ 基本は、パターンを設定しそれをマテリアルに内包して、 オブジェクトに割り当てる・・・ という 感じで使います。"map"で行います。 サポートしているテクスチャの形式は「.lft形式」と 「.tga形式(24bit)」の2種類。 マッピングについてはこちらへ。 ┗━━━━━━━━━━━━━━━━━━━━━━━━━━┛ |
パターンの働きは「オブジェクトの見た目をどう装飾するか?」という事なわけですが、大きく分けて3つタイプがあるようです。 ●surfaceパターン(実際の形状は変化しない。bumpなど) ●displacementパターン(実際の形状も変化する) ●volumetricパターン(実際の形状も変化する) ※「複数のパターンの合成」タイプのうち、mod,mul,not,subの違いはフォトショップのレイヤーの合成(乗算とか差の絶対値)の違いみたいなものだと思います。 |
-displacement |
|
-ellipse |
|
-3d |
(displacementのみ)。 |
-RGB |
|