On this page | |
Context(s) | displace fog light shadow surface |
float rayhittest(vector P, vector D, float bias, ...)
float rayhittest(vector P, vector D, vector &pHit, vector &nHit, float bias, ...)
ポジションPから方向Dに沿って光線を送信します。 Dベクトルの長さは、オクルージョンのチェック時に考慮される一番遠い距離を意味します。
交差したオブジェクトまでの距離を返します。オブジェクトが当たらなかった場合は0より小さい値が返されます。
pHitとnHitを指定すれば、それらの引数はヒットサーフェスのポジションと法線を取得します。
ほとんどの場合では、エリアサンプリング機能は、rayhittest()
関数を使って使用可能な結果を生成しません。
Tip
ポリゴンのヒットテストをすると、ヒットしないたくさんの光線を取得する場合があります。 それらの場合にジオメトリを三角形化すれば、改善することができます。
領域サンプリングオプション ¶
領域サンプリングをするには、角度とサンプルの可変パラメータの両方を指定しなければなりません。例:
surface blurry_mirror(float angle = 3; int samples = 16; float bias=0.05) { Cf = reflectlight(bias, 1, "angle", angle, "samples", samples); }
光線オプション ¶
Tip
テクスチャを指定する時に例えばenvironment
キーワードと同様に、
画像フィルタリングキーワード引数を使用することもできます。
画像フィルタキーワード引数のリストは、environmentを参照してください。
"scope
",
string
光線に当たることができるオブジェクトのリスト。これを指定すると、scope
は、指定したraystyle
が選択されるようになっていたデフォルトのスコープを上書きします。
scope:default
値は、scope
引数が現在のコンテキストのデフォルトのスコープを使用するようにします。つまり、この引数を指定しなかった時の挙動になります。
光線の交差に対してスコープの上書きが可能になります。
特別なスコープ引数のscope:self
は、現在シェーディングされているオブジェクトにマッチします。
"currentobject
",
material
現行シェーディングオブジェクトがどれなのかを指定するために使用します。例えば、scope引数を使ったscope:self
は、この引数によって渡されたオブジェクトと同じ意味になります。
"maxdist
",
float
=-1
オブジェクトを検索する最大距離。これは、オブジェクトの検索を、その近くにあるオブジェクトだけに制限するために使います。指定したmaxdist
がマイナスなら、最大距離が指定されていないと見なされます。
交差をテストする時に光線が移動できる最大距離を上書きすることができます。 いくつかの関数(例えばfastshadow)には、(光線の長さによって)暗黙的に最大距離が定義されているものがあり、おそらくこのオプションを使用することができません。 しかし、反射、グローバルイルミネーション、屈折などの計算をする時には、このオプションを効果的に使用することができます。
"variancevar
",
string
分散アンチエイリアスで使用するVEXエクスポート変数の名前。レンダラーは、マイクロポリゴンレンダリングでこの値と隣接するマイクロポリゴンを比較し、さらにサンプルを必要とするシェーディングポイントを判断します(閾値としてvm_variance
propertyを使用)。もっとサンプルが必要なら、アルゴリズムは指定した最大光線サンプル数までサンプルを引き上げます。
この変数は、ヒットサーフェスからインポートされなければならないので、この変数はインポートする名前のリストになければなりません(以下の“光線から情報をインポートする”を参照)。名前を付けた変数がインポートされなければ、このオプションは無視されます。
分散アンチエイリアスは、高い分散値を持つ画像の領域内(例えば、シャープなシャドウエッジ)により多くのサンプルを配置します。これはvm_dorayvariance
が有効な時だけに使われます。そうでない場合は、最小光線サンプル(または明示的に指定したsamples
の値)のみがgatherループのアンチエイリアスで使われます。
グローバルのVarianceコントロール(Mantraの-vオプション)を上書きします。 このコントロールは、レイトレーシングのアンチエイリアス品質の決定に使用されます。 詳細は、Mantraのドキュメントを参照してください。
"angle
",
float
=0
分布角度(ラジアンで指定)。gather()に関しては、光線はこのアングル内で分布します。trace()に関しては、この角度は、交差距離が長くなるにつれてフィルタ幅が広がる速さを示すために使用されます。 角度が大きいほど、より遠くにあるヒットサーフェスほど、より大きい微分を使用するので、テクスチャリングとディスプレイスメントのパフォーマンスが良くなります。
効果を出すには、samplesパラメータも指定してください。
"samples
",
int|float
=1
フィルタ光線に送信されるサンプル数。イラディアンスとオクルージョンの関数に関しては、samplesパラメータを指定することで、デフォルトのイラディアンスサンプリングが上書きされます。
"environment
",
string
シーンに送信された光線がどこにも当たらなかった場合に評価される環境マップを指定することができます。
光線の方向を使用すると、指定した環境マップが評価されて、その結果のカラーが返されます。 ほとんどの場合、環境マップを評価するには、トランスフォーム空間を指定する必要があります。
refractlightとtraceの場合では、指定した背景カラーに関係なくOfとAfの変数に0が設定されます。
環境マップを指定する時、texture()のフィルタオプションにも対応しています。
環境/反射マップを作成する方法を参照してください。
"envobject
",
string
環境マップが使用されている場合、光線をシーン内の他のオブジェクト、ライトオブジェクト、フォグオブジェクトの空間に変換することで、その環境マップの向きを指定することができます。 Houdiniでは、Nullオブジェクトを使用して、その向きを指定することができます。例:
Cf = R*reflectlight(bias, max(R), "environment", "map.rat", "envobject", "null_object_name");
"envlight
",
string
環境マップが使用されている場合、光線をシーン内のライトの空間に変換することで、その環境マップの向きを指定することができます。
"envtint
",
vector
環境マップが使用されている場合、このカラーを使って環境マップに色味を付けます。
"background
",
vector
光線がどのオブジェクトにも当たらなかった場合、これをシーンの背景カラーとして使用します。 refractlightとtraceの場合では、指定した背景カラーに関係なくOfとAfの変数に0が設定されます。
"distribution
",
string
関数: irradiance, occlusion
イラディアンスの計算をするための分布。デフォルトでは、コサイン分布(ディフューズ照明)を使用します。
スタイルに指定可能な値は、均一なサンプリングをするnonweighted
、コサインウェイトのサンプリングをするcosine
です。
See also | |
shading |
|