On this page |
vector photonmap(string mapname, vector position, vector normal, ...)
void photonmap(string mapname, vector position, vector normal, vector &color, float &area, ...)
可変長引数 ¶
キーワードと値のペアを追加で指定することで、評価の動作を設定することができます。 これらの引数は、読み込み時に定義されていなければなりません(リテラルまたはパラメータ)。
追加する引数のどれかを指定するには、キーワードとその値を文字列として渡します。
例えば、..., "wrap", "clamp", "border", {.1,1,1})
。
キーワード |
タイプ |
値 |
---|---|---|
|
|
最終的なカラーを生成するためにフィルタリングされるフォトンの最大数。
デフォルトは |
|
|
フォトンを解釈する方法。
各フォトンがランバートの余弦法則でスケールします。
フィルタリングを使わずに各フォトンのそのままのエネルギーを使用します。 |
|
|
評価の許容誤差量。
値を大きくすれば、精度が悪くなり(つまり、スキャンするマップの領域が小さくなります)、値を小さくすれば、スキャンするマップの領域が大きくなります。
デフォルトは |
|
|
フォトンからirradiance(グローバルイルミネーション)を計算するための“filter”を指定します。 フォトンの寄与度を評価する時、入射する放射輝度(radiance)は、フォトンを網羅した領域で分割されます(流量を決めるため)。 領域は、3つの異なる方法で計算することができます:
すべてのフォトンの最小境界球を使って領域を評価します。この評価方法は、やわらかいブロッブのような見た目のフォトン評価になります。 プリミティブのエッジ近くの精度が悪くなる可能性があります。
すべてのフォトンの凸状のハルを使って、領域を評価します。この評価方法は、フォトン評価内で少し“シャープな”エッジになり、プリミティブのエッジ近くの精度が良くなる可能性があります。 しかし、シャープなエッジが存在することが原因で、この評価方法は非常にノイズのある評価を生成する可能性があります。
このフィルターは事前にフィルタリングしたフォトンマップ(例えば、pcfilterユーティリティで既にフィルタリングしたマップ)に対して使ってください。 フォトンのエネルギーは領域評価を使わずに平均化されます。 |
Examples ¶
Cf = photonmap(map, P, normalize(frontface(N, I)), "nphotons", 100, "type", "diffuse", "error", 0.05, "filter", "convex);
vector clr; float area; photonmap(map, P, normalize(frontface(N, I)), clr, area, "nphotons", 100, "type", "diffuse", "error", 0.05, "filter", "convex); Cf = clr;
photon | |
ptcloud |
|
texture |