On this page |
float filterstep(float edge, float x, ...)
float filterstep(float edge, float x0, float x1, ...)
ステップ関数のアンチエイリアスのウェイトを返します。
ステップ関数は、xがエッジより小さい時は0、エッジより大きい時は1を返します。
filterstep
はステップ関数下のフィルタリングされる面積を意味するfloatを返します。
フィルタリングは、シェーディングとCOPのコンテキストでゼロ以外のみの微分値のDu()
とDv()
を使って計算されます。
つまり、filterstep
は他のコンテキストではフィルタリングを実行しません。
画像フィルタリングオプション ¶
フィルタパラメータを指定する例:
colormap(map, u, v, "smode", "decal", "tmode", "repeat", "border", {.1,1,1}); colormap(map, u, v, "mode", "clamp", "width", 1.3); colormap(map, u, v, "filter", "gauss", "width", 1.3, "mode", "repeat");
テクスチャがdeep.rat
ファイルの場合、channel
キーワード引数を使用することで、そのファイル内のチャンネルを指定することができます:
string channelname = "N"; cf = colormap(map, u, v, "channel", channelname);
-
Houdiniネイティブフォーマットの
.pic
や.rat
以外のフォーマットでテクスチャを読み込むと、Houdiniは OpenImageIO を使用してファイルから画像データを読み込みます。その場合には、以下の一部の可変引数は何の効果もありません。 -
テクスチャ関数が非Houdiniフォーマットテクスチャを評価すると、Houdiniはそのテクスチャ評価にOpenImageIOを使用するように切り替えます。 多くの可変キーワードに値が呼応していますが、一部のキーワードはOpenImageIOには同等の関数がありません。
-
デフォルトでは、OIIOはマルチ解像度画像を持たない画像に対してMIPマップを生成 しません 。
OPENIMAGEIO_IMAGECACHE_OPTIONS
環境変数の内容にautomip=1
を追加することで、これを有効にすることができます。MIPマップがないと、ブラーとフィルタリングが期待通りに動作しない場合があります。
-
OPENIMAGEIO_IMAGECACHE_OPTIONS
を使用することで、OIIOがキャッシュで使用するメモリ使用量を上書きすることもできます。デフォルトでは、Houdiniはキャッシュメモリを物理コンピュータメモリの1/8に設定します。
OPENIMAGEIO_IMAGECACHE_OPTIONS
変数を設定すると、その計算されたキャッシュサイズが上書きされます。
-
"wrap
",
string
="repeat"
repeat
または periodic
画像マップが0から1の範囲外を繰り返します。 基本的には、テクスチャ座標の整数コンポーネントは無視されます。 これがデフォルトです。
clamp
または edge
または streak
テクスチャ座標が0から1の範囲に制限されます。 これによって、その範囲外では、その画像に最も近いエッジにおけるカラーが評価されます(境界のピクセルが範囲外に引き伸ばされます)。
black
または decal
または color
0から1の範囲外の座標では(画像内のカラーではなく)境界カラーが評価されます。 境界カラーはデフォルトでブラック(つまり0)です。
"uwrap
",
string
(通称swrap
)
u座標が0から1の範囲外の時の挙動を指定します。
この値はwrap
と同じです。
"vwrap
",
string
(通称twrap
)
v座標が0から1の範囲外の時の挙動を指定します。
この値はwrap
と同じです。
"border
",
float|vector|vector4
=0
Black/Decal/Colorのラップが使用されている時の境界カラーを指定します。 OpenImageIOフォーマットには何の効果もありません。
"default_color
",
float|vector|vector4
テクスチャマップが見つからなかった時に使用するカラーを指定します。 この引数を渡さなかった場合、そのカラーはHOUDINI_DEFAULT_TEXTURE_COLOR変数で設定されます。
"channel
",
複数カラー平面(例えば、diffuse_indirect
やN
)を持つテクスチャのカラーチャンネルを指定します。
ptex画像に関しては、ここには1番目のチャンネルのインデックス(例えば、0
や4
)を指定します。
"blur
",
float
xとyの方向にブラーします。ブラーには、画像サイズの比率を指定します。
つまり、0.1のブラーは画像幅の10%をブラーします。
方向別に異なるブラー量が必要であれば、xblur
とyblur
を使用します。
"xblur
",
(通称ublur
, sblur
)
x画像方向のブラー量。
"yblur
",
(通称vblur
, tblur
)
y画像方向のブラー量。
"pixelblur
",
float
浮動小数点の数のピクセルだけテクスチャをブラーします。 OpenImageIOフォーマットには何の効果もありません。
Cf = texture("map.rat", ss, tt, "pixelblur", 2.0);
"xpixelblur
",
float
X方向に浮動小数点の数のピクセルだけテクスチャをブラーします。
"ypixelblur
",
float
Y方向に浮動小数点の数のピクセルだけテクスチャをブラーします。
"filter
",
string
="box"
評価に使用するアンチエイリアスフィルタのタイプを指定します。
Houdiniネイティブフォーマット では、以下の値のどれかを文字列で指定することができます:
"point"
ポイントサンプリング(つまり、フィルタリングなし)
"box"
ボックスフィルタ(デフォルト)
"gauss"
ガウスフィルタ
"bartlett"
Bartlett/Triangularフィルタ
"sinc"
Sinc sharpeningフィルタ
"hanning"
Hanningフィルタ
"blackman"
Blackmanフィルタ
"catrom"
Catmull-Romフィルタ
(OpenImageIOで読み込まれた)他のすべてのフォーマット では、"point"
フィルタを指定すると、OIIOの補間モードが"closest"
に設定され、MIPマップを無効にします。他の値はOIIOのsmart-bicubic補間を使用します。
"filtermode"
可変引数(以下参照)を使用することで、もっと細かくコントロールすることができます。
"xfilter
",
string
(通称ufilter
, sfilter
)
X方向のフィルタを指定します。このフィルタはfilter
と同じです。
"yfilter
",
string
(通称vfilter
, tfilter
)
Y方向のフィルタを指定します。このフィルタはfilter
と同じです。
"filtermode
",
string
Houdiniネイティブフォーマット では、VEXはもっと単純なフィルタリングも対応しています。
filtermode
には以下のどれかを設定することができます:
filter
filter
キーワード引数で指定されたフィルタリングを使用します。
bilinear
単純なバイリニアフィルタリングを使用します。これが最も高速なフィルタリングモードですが、フィルタリングの品質が最も低いです。
biquadratic
単純な2次フィルタリングを使用します(階数3フィルタリング)。
bicubic
単純な3次フィルタリングを使用します。
filtermode
をbilinear
, biquadratic
, bicubic
に設定すると、
いくつかの引数(例えば、filter
やwidth
)が無視され、代わりに固定された補間フィルタが使用されます。
他の引数(特に、lerp
やblur
のキーワード)は有効です。
(OpenImageIOで読み込まれた)他のすべてのフォーマット では、filtermode
に"filter"
(上記の"filter"
を参照)、"bilinear"
、"biquadratic"
、"bicubic"
のどれかを設定することができます。
"width
",
float
=1.0
Houdiniネイティブフォーマット では、これはXとYの両方向のフィルタ幅を設定します。
(OpenImageIOで読み込まれた)他のすべてのフォーマット では、これはOIIOのswidth
とtwidth
のオプションを設定します。
"xwidth
",
float
(通称uwidth
, swidth
)
X方向のフィルタ幅。
"ywidth
",
float
(通称vwidth
, twidth
)
Y方向のフィルタ幅。
"zwidth
",
float
Z方向のフィルタ幅(シャドウマップ用)。 これは、他の幅の引数とは違って、ワールド空間の単位を指定します。
"extrapolate
",
int
アンチエイリアス情報を計算する時に、微分による外挿法を使用するかどうか指定します。微分による外挿法がデフォルトで有効になっています。引数は0か1を指定します。
"lerp
",
int
Houdiniネイティブフォーマット では、RATファイルを異なるMIPレベル間で補間するかどうか指定します。
デフォルトでは無効になっています。補間を有効にすれば、.rat
ファイルの異なるMIPレベルにアクセスした時の不連続性を取り除くのに役に立ちます。
しかし、テクスチャ評価の結果は、少しだけソフトになり(つまり、ぼやけます)、時間がかかります。
この引数には3つの値を指定することができます。
0
MIPマップ補間を無効にします(最高速)。
1
MIPマップ補間を近似します(高速)。
2
最高品質のMIPマップ補間(遅いですが最高品質です)。
(OpenImageIOで読み込まれた)他のすべてのフォーマット では、0の値は単一MIPレベルが指定され、それ以外の値はトリリニア補間が指定されます。
"depthinterp
",
string
ディープシャドウマップの深度補間モードを指定して、マップが2つのz-record間でサンプリングされる時に返す不透明度の値を制御します。
引数は、文字列でなければなりません。
discrete
(デフォルト)サンプルポイントの前の最初のz-recordを返します。
linear
サンプルポイント前と後のz-recordの不透明度を線形的に補間します。
2つのモードの違いは、ディープシャドウマップを参照してください。
"beerlambert
",
int
ボリュームディープシャドウマップを評価する時、これは、不透明度に対してBeer-Lambert補間を有効にします。 Beer-Lambertは正確ですが、処理が重い補間形式です。
引数には、0または1を指定します。
"srccolorspace
",
string
テクスチャを格納するカラー空間を指定します。 テクスチャの値にアクセスすると、それらの値は、必要に応じてレンダリングのために、この空間から線形空間に変換されます。
auto
(デフォルト) ファイルに基づいてソースのカラー空間を決めます。 現在のところ、これは8ビットテクスチャに対してはsRGBカラー空間とみなし、他のテクスチャすべてに対してはリニアカラー空間と見なします。
linear
リニアカラー空間に変換します。これは、現在のところ8ビットテクスチャにのみ影響を与えます。なぜなら、他のテクスチャすべてが既にリニアカラー空間とみなされているからです。 このオプションを使えば、バンプマップやディスプレイスメントマップで使用するテクスチャを強制的に線形補間します。
sRGB
テクスチャのビット深度もチャンネル数も関係なく、強制的にsRGBカラー空間からリニアカラー空間に変換します。
rec709
Rec709カラー空間からリニアカラー空間に変換します。
gamma22
Gamma2.2カラー空間からリニアカラー空間に変換します。
raw
変換されていないマップカラーを使用します。
srccolorspace
引数には、OpenColorIOが認識できるものならどんなカラー空間でも指定することができます。
"face
",
Ptexテクスチャマップを使用する時、face
引数を使用してPtextureルックアップでフェースを指定します。
OpenImageIOフォーマットには何の効果もありません。
"ptexorient
",
int
Ptexテクスチャを使用する時、ポリゴンの暗黙のテクスチャ座標が(face
と組み合わせて)テクスチャルックアップの補間に使用されます。
しかし、別のソフトウェアではポリゴンの周回方向と向きの定義が異なることがあります。
このキーワードの引数は、Houdiniのポリゴンの向きの解釈を制御することができます。
ptexorient
には、ビットフィールドで構成された整数の引数が必要です。
-
ビット 0×01:
s
座標の補数を取ります。 -
ビット 0×02:
t
座標の補数を取ります。 -
ビット 0×04:
s
とt
の座標を入れ替えます。
例えば、6 (0×4|0×2)の値は、texture(map, s, t)
ではなく、texture(map, 1-t, s)
をコールすることと等価です。
デフォルトのptexorient
は0です。これは、http://ptex.usにあるサンプルで正しく動作します。
OpenImageIOフォーマットには何の効果もありません。
"iesnormalization
",
string
="maxvalue"
environment()
関数を介してIESマップの出力値を照会する際にその値を正規化する方法を選択します。
none
ヘッダー内のカンデラ乗数でスケールされたRaw値を使用します。
maxvalue
(デフォルト)最大値で正規化されます。これは、Mantraのデフォルトライトシェーダで使用されている古い挙動です。
preserveenergy
写角の累積値で正規化されるので、IESプロファイルは全体のエネルギー出力を維持しつつライトの形状に影響を与えます。
Examples ¶
f = filterstep(0.5, s+t, "filter", "gauss", "width", 2);
The filterstep(float edge, x, ...)
form is roughly equivalent to:
f = filterstep(edge, x, x + abs(Du(x) + Dv(x)));
shading |
|