| On this page | 
概要 ¶
IFDはHoudiniで生成されるシーン記述フォーマットであり、レンダリング画像やアニメーションシーケンスを生成するためにMantraで使用します。IFDファイルにはシーンの完全な記述とレンダリングの設定が含まれています。
IFDの構造 ¶
- 
        ヘッダ情報 通常は、コメントとray_versionコマンド 
- 
        保持するオブジェクトの定義 
- 
        レンダリングの設定 
- 
        カメラの設定 
- 
        ローカルオブジェクトの定義(ジオメトリ、空間、ライト、大気、インスタンス) 
- 
        レンダリングコマンド 
- 
        オプション: 追加フレーム 
ジオメトリを参照よりも前に宣言する限りは、IFDのどこにでも宣言することができます。
MantraはHScript言語のサブセットを使ってIFDを処理します。そのため、変数展開のような構成、ifステートメント、ループ構成、エクスプレッション評価がIDFで利用可能です。
コマンド ¶
ray_loadotl ‹path›
        
パスに指定したOTLを読み込みます。これにより、OTL内のアセットを適切にMantraで参照することができます。
ray_start ‹object_type›
        
オブジェクトの定義を開始します。‹object_type›は次のどれかを指定します:
material
        
shop_materialpathアトリビュートを使って、バインド可能なプロパティを保存します。
geo
        
レンダリングに使うジオメトリを定義します。
light
        
光源を定義します。
fog
        
霧/大気オブジェクトを定義します。
object/instance
        
ジオメトリオブジェクトのインスタンスを定義します。
plane
        
画像内に平面を定義します。
Houdini9.1の新機能です。以前のバージョンではray_defplaneコマンドを使用していました。
各オブジェクトには、レンダリングの動作に関係するプロパティがあります。
ray_detail
        
Mantraでジオメトリを指定する方法が2通りあります。
ray_detail [-T] ‹name› ‹filename›
        
geometry:nameプロパティに、指定した名前を設定して、指定したファイル名からジオメトリを読み込みます。ファイル名には、インラインでジオメトリを指定できるstdinがよく使われます。
‹filename›に一時ファイルを指定するには-Tオプションを使用します。
        Mantraはジオメトリを読み込んだ後に、その一時ファイルを削除します。stdinから読み込む時は、このオプションを使用することができず、ネットワークレンダリングで適切に動作させることができません。
ray_detail [-v ‹postblur›| -V ‹preblur› ‹postblur›] ‹name› ‹sourcename›
        
ファイルからジオメトリを読み込むのではなく、既存のジオメトリを使って(ソース名で指定)、v(Velocity)アトリビュートに基づいて位置をオフセットします。
        Mantraは、geometry:nameプロパティを‹name›に設定します。
ray_end
        
オブジェクトの終わりの宣言。
ray_property ‹style› ‹token› ‹value›...
        
グローバルまたはオブジェクトプロパティを設定します。各オブジェクトには、このコマンドを使って設定できる別々のプロパティがあります。
ray_image ‹image› [optional settings]
        
単一フレームのレンダリングで出力する画像を定義します。画像平面は、ray_defplaneとray_planepropertyのコマンドを使って定義します。特別な画像名のnull:はフレームをレンダリングしますが、なにも画像に保存されません。これはマップ(ディープシャドウマップ、フォトンマップ、Irradianceキャッシュ)をレンダリングする時にたまに役に立ちます。
ray_defplane ‹plane_name› ‹vex_variable› ‹vex_type›
        
このコマンドはHoudini 9.1からray_start planeに置き換わりました。ray_defplaneの引数は今では画像平面の設定に使います:
| 
                 | 
 | 
| 
                 | 
 | 
| 
                 | 
 | 
Hodini9.1以前のバージョンでは、ray_defplaneコマンドは ray_imageで定義した画像用の出力画像平面を定義します。任意の数の平面を設定します。出力フォーマットが複数平面をサポートしていないなら、各平面は個々のファイルに書き出されます(ファイル名にplane_nameを使用)。 
任意のグローバルまたはエクスポートしたVEX変数は、vex_variableタイプとして使うことができます。また、特別な2つの変数を使うことができます:
- 
        
        Cf+Af(vector4) –CfとAfの変数の組み合わで、RGBA画像を出力します。
- 
        
        Z-Far(float) –Pz変数は単一チャンネルの画像を出力します。
ray_planeproperty ‹token› ‹value›
        
Note
このコマンドはHoudini 9.1からray_property planeに置き換わりました。例:
ray_property plane pfilter "sinc 3 3" ray_property plane gamma 1.7
Houdini9.1以前のバージョンでは、ray_defplaneで定義される画像平面の値を設定します。知られている平面のプロパティは以下を参照してください。
ray_transform ‹matrix4›
        
変換行列を指定します。
このステートメントの後に、任意の数のray_mtransformが続きます。各ray_mtransformステートメントでは追加モーションセグメントのトランスフォームを指定します。
ray_geometry ‹geometry_object›
        
インスタンスオブジェクトのジオメトリを指定します。これはインスタンスでレンダリングするジオメトリのことです。geometry_objectパラメータはIFDで既に定義されているはずのジオメトリオブジェクトを参照します。
ray_geometryやray_proceduralのどれか1つのみをインスタンスの定義で指定するべきです。
ray_procedural (-m xmin ymin zmin -M xmax ymax zmax) procedural (arguments)
        
ジオメトリの生成に使うプロシージャル関数を定義します。-m/-Mオプションはプロシージャルジオメトリの境界ボックスを定義するのに使い、レンダリングを最適化するために使う場合もあります(境界ボックスをレンダリングしないならば、Mantraはまったくプロシージャルジオメトリを生成する必要はありません)。プロシージャルはHDKを使ってユーザが記述することができます。
ray_declare (-v ‹array_size›) style type name value...
        
ユーザ定義プロパティを宣言します。
style引数はプロパティのタイプを定義し、object、global、light、geometry、planeのどれかにします。
typeはfloat、bool、int、vector2、vector3、vector4、matrix3、matrix4、stringのどれかにします。
nameはプロパティの名前です。この名前を使って値を照会することができます。
例:
ray_declare object int my_property 42
my_propertyはrenderstate()VEX関数またはPythonフィルタリングで照会することができます。
ray_time ‹value›
        
このフレームの時間を秒で指定します。これはimage:samplelockがfalseの時、乱数のシードに使います。
ray_raytrace
        
レンダリングを実行します。
ray_reset [-l] [-o] [-f]
        
オブジェクト定義をクリアします。現在では、:
- 
        
        -l– ライト
- 
        
        -o– インスタンスオブジェクト
- 
        
        -f– フォグオブジェクト
のみがクリアされます。フレームをレンダリングした後は、ray_resetは通常は全オプショをコールするべきです。
ray_deviceoption type name value
        
平面設定で出力デバイスのオプションを設定します。
ray_deviceoption int JPEG.quality 75
このコマンドは、事前定義済のimage output propertiesを使った時の出力結果です。またIFDの中にこのコマンドを使えば、カスタムデバイス上のオプションのように任意のオプションを設定することができます:
ray_deviceoption float MYFORMAT.Option value
コマンドラインからiconvertユーティリティを実行すると、TIFFとJPEGのような組み込みフォーマットデバイスで利用可能なオプションのリストを見ることができます。
画像平面コマンド ¶
Note
Houdini 9.1では、これらのコマンドはもはや画像平面設定を定義するのに好ましいメソッドではありません。好ましいメソッドは、今ではray_property planeコマンドを使ってプロパティを設定することです。プロパティのドキュメントの画像平面のプロパティを参照してください。
これらのコマンドは上位互換のためにサポートしています。
gamma ‹value›
        
画像のガンマ補正を指定します(デフォルトが1)。
gain ‹value›
        
量子化する前に各カラーの値がゲインによって乗算されます。
dither ‹fraction_of_quantization›
        
適用されるディザ量。ディザは量子化ステップの割合として指定します(例えば、0.5は量子化ステップの半分になります)。オプションは、浮動小数点出力では無視されます。
whitepoint ‹value›
        
量子化中に使われる画像のホワイトポイント。
quantize ‹value›
        
出力する保存タイプ。値は以下のどれかです:
byte
        
8ビット符号なし整数。
short
        
16ビット符号なし整数。
int
        
32ビット符号なし整数。
half
        
16ビット浮動小数点。
float
        
32ビット浮動小数点。
Half
        
16ビット浮動小数点(非正規化)。
Float
        
32ビット浮動小数点(非正規化)。
浮動小数点を非正規化すると、0.4999999や0.5000001のような浮動小数点の最小値を丸めることができます。
sfilter ‹type› [‹arguments›]
        
サブピクセルサンプルを合成するのに使うサンプリングフィルターを指定します。これは、どのような方法で個々のサーフェスサンプルを合成して単一のサブピクセルサンプルを生成するのか決めます。利用可能なタイプは以下の通り:
- 
        
        alpha– Ofを使って合成の不透明度を決めます。
- 
        
        closest– 近接サーフェスから値を取得します。
- 
        
        min– 任意のサンプルから最小値を取得します。
- 
        
        max– 任意のサンプルから最大値を取得します。
pfilter ‹type› [‹arguments›]
        
サブピクセルサンプルを合成して単一ピクセルの値を生成するのに使うピクセルフィルターを指定します。利用可能なピクセルフィルターがいくつかあります。
minmax ‹style›
        
point
        
ピクセルの中心に一番近いサブピクセルを選択してください。
box [‹width› ‹height›]
        
ボックスフィルターを使って指定した幅/高さのフィルターサイズでサブピクセルを結合します。
gauss [‹width› ‹height›]
        
Gaussianフィルターを使って指定した幅/高さのフィルターサイズでサブピクセルを結合します。
bartlett [‹width› ‹height›]
        
Bartlett(円錐)フィルターを使って指定した幅/高さのサイズ幅でサブピクセルを結合します。
blackman [‹width› ‹height›]
        
Blackmanフィルターを使って指定した幅/高さのフィルターサイズでサブピクセルを結合します。
catrom [‹width› ‹height›]
        
Catmull-Romフィルターを使って指定した幅/高さのサイズ幅でサブピクセルを結合します。
hanning [‹width› ‹height›]
        
Hanningフィルターを使って指定した幅/高さのフィルターサイズでサブピクセルを結合します。
mitchell [‹width› ‹height›]
        
Mitchellフィルターを使って指定した幅/高さのフィルターサイズでサブピクセルを結合します。
lightexport ‹light_name›
        
この出力変数の値は、指定したライトのilluminance Loopの評価中に生成されるはずです。これは、個々のライトで作成した特定の範囲のキャプチャーが可能です(これがサポートできるようにシェーダをセットアップしている場合)。
IFDのプロパティを指定する ¶
プロパティはIFDのどこかに設定します。オブジェクトプロパティをオブジェクトブロックの外側に設定すると、オブジェクトプロパティはその変更の後で宣言したオブジェクトすべてのデフォルト値を変更します。例:
ray_property object shadingrate 2 ray_start object # shadingrateが"2"になります。 ray_end ray_start object # shadingrateを1に変更します。 ray_property object shadingrate 1 ray_end
IFDプロパティへのマッピングは、Houdiniレンダリングプロパティのリストを参照してください。
カテゴリ vs. マスク ¶
カテゴリとマスクは、オブジェクトやライトをまとめて指定することができます。
マスク はオブジェクト名を使ってメンバーを決めますが、さらにHoudiniでは、オブジェクトを一括で指定できる構文が使えます。例えば、/obj/geo*,^/obj/geo1です。
Mantraでは各オブジェクトに任意でカテゴリメンバーを割り当てることができます。これらは任意のユーザトークンです。カテゴリ選択は、カテゴリ名と論理演算を使ってメンバーを決めることができます。カテゴリパターンは単純なエクスプレッションで定義します:
| 
                 | その名前を含むパターンにマッチします。 | 
| 
                 | その名前を含まないパターンにマッチします。 | 
| 
                 | 任意の数のエントリを持っているパターンにマッチします。 | 
| 
                 | 何も名前を持たないパターンにマッチします。 | 
| 
                 | すべてのパターンにマッチします( | 
| 
                 | 空っぽのセットにマッチします( | 
|(論理和)と&(論理積)を使って複数のエクスプレッションを結合します。論理和より論理積の方が優先順位が高く、左から右にエクスプレッションを処理します。なお、括弧はサポートされていません。
つまり:
a & b & c | d & e | f | g & h
これは以下のように解釈されます:
a & b & c |
d & e |
f |
g & h
    
    例えば、カテゴリパターン- | fooは、カテゴリ名がfooのオブジェクト または カテゴリが設定されていないオブジェクトにマッチします。
マスクとカテゴリの両方を指定する場合、Mantraは2つのセットの論理積を使います(つまり、両方のセットにあるオブジェクトのみ)。