| On this page |
vector environment(string texture_filename, vector reflect_dir, ...)
vector4 environment(string texture_filename, vector reflect_dir, ...)
vector environment(string texture_filename, vector reflect_dir0, vector reflect_dir1, vector reflect_dir2, vector reflect_dir3, ...)
vector4 environment(string texture_filename, vector reflect_dir0, vector reflect_dir1, vector reflect_dir2, vector reflect_dir3, ...)
vector environment(string texture_filename, vector reflect_dir, float filter_angle, ...)
vector4 environment(string texture_filename, vector reflect_dir, float filter_angle, ...)
reflect_dir引数で指定した方向で環境テクスチャのカラーを返します。4つのvectorを引数に持つ関数は、それらのvectorで定義した円錐内で見つかったマップピクセルをフィルタリングします。
円錐を使用する方法以外に、1個の反射方向とfilter_angle引数を使って、マップをフィルタリングする角度を定義することもできます。
環境関数を使って、IES測光マップ内の光の強度を、適用した正しい角度のマッピングで照会することもできます。
IESデータを正規化するには、iesnormalizationモードを以下に設定します:
-
preserveenergy: 光のエネルギー出力を維持します。 -
maxvalue: テーブル内の最大値を正規化に使用します。 -
none: 正規化しません。
Note
オブジェクト空間で環境マップのルックアップを実行するためには、vtransform()関数を使って方向ベクトルを最初にトランスフォームする必要があります。
画像フィルタリングオプション ¶
フィルタパラメータを指定する例:
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 ¶
vector dir = vtransform("space:current", "space:object", {0, 1, 0}); vector clr = environment("sky.rat", dir);
| See also | |
| color | |
| file | |
| map | |
| shading |
|
| texture |