カスタム Fx オペレータは、エフェクトのセットアップおよびレンダリングを定義する、一連の事前定義ユーザ関数として記述されます。 これらの関数は、次の 3 つの主要領域のどれかに該当します。
-
プロセスの定義および初期化
-
プロセスの識別
-
入力、出力、およびパラメータの定義
-
プロセスおよびパラメータの初期化
-
プロセスのレンダリング
-
プリ/ポストレンダリング
-
定義済み出力および必要入力領域の計算
-
レンダリング
-
外部ユーザ インターフェイス
-
エディタ画面での描画
-
エディタ画面でのインタラクション
これらのユーザ関数は、サポート関数のインターフェイス ライブラリを介してコードのメイン ボディとやり取りします。 UFO コードのコンパイルおよびリンクによって Dynamic Shared Object(.so)または Dynamically
Linked Library(.dll)が生成されます。この生成内容は、実行時に Softimage にロードされます。
事前定義関数のシンボルは、カスタム Fx オペレータ内で検索され、アドレスは今後の呼び出しのために表にされます。 オペレータが実行された場合、最終的な様相は、あたかも関数が製品に直接リンクされているかのようなものになります。
インターフェイス ライブラリは、C のバインドで書かれます。この目的のために提供されているヘッダ ファイルには、次のものがあります。
-
ufoProcess.h: プロセス インターフェイスおよび汎用インターフェイス。 プラグイン プロパティの設定および取得のために、ホストがプラグインに提供する関数を含んでいます。これらの関数は、プラグイン定義時およびレンダリング時に呼び出されます。
-
ufoRaster.h: ラスター アクセス インターフェイス、ピクセル構造、および定数。
-
ufoTypes.h: 汎用インターフェイス定数の定義。
-
ufoEditor.h: エディタ インターフェイス。 OpenGL インターフェイス ツールの実装を助けるために、ホストが提供する関数を含んでいます。
-
ufoFunctions.h: ユーザ関数の完全なセットは、ヘッダ ファイル内に宣言されます。 これを UFO ソース コード ファイルに含めておかないと、UFO プラグインが実装できる関数に応じた適正な関数プロトタイプが実装されません。
-
ufoUnixCompat.h: Defines rint()、drand48、random、および M_PI を定義することにより、Linux と Windows 間でのプラグインの移行を容易にします。 random は、分布を適正化し両方のプラットフォーム上で同じ結果が得られるように保証されているため、コンパイラ提供の乱数ジェネレータではなく Windows で使用する必要があります。
以下はユーザ関数の説明です。
機能
|
説明
|
ufoProcessDefine
|
プロセスの定義および初期化
|
ufoProcessCopyUserData
|
ユーザ データのコピー
|
ufoProcessDeleteUserData
|
ユーザ データの削除
|
ufoProcessPreSequenceRender
|
プリレンダリング シーケンス
|
ufoProcessPostSequenceRender
|
ポストレンダリング シーケンス
|
ufoProcessCanAvoidRendering
|
レンダリングが回避可能かどうかを判断するプリフレーム レンダ関数
|
ufoProcessPreRender
|
プリレンダリング
|
ufoProcessPostRender
|
ポストレンダリング
|
ufoProcessPreRenderPass
|
プリレンダリング パス
|
ufoProcessPostRenderPass
|
ポストレンダリング パス
|
ufoProcessRenderPixel
|
ピクセル レンダ
|
ufoProcessRenderLine
|
ライン レンダ
|
ufoProcessRenderRectangle
|
矩形レンダ
|
ufoProcessCalcDefinedRectangle
|
出力にレンダリングできる矩形を計算します。
|
ufoProcessCalcNeedRectangles
|
入力から必要な矩形を計算します。
|
ufoProcessCalcDefinedPixelType
|
指定された入力ピクセル タイプを基に最適なピクセル タイプを計算します。
|
ufoProcessSpecifyConvertPixelTypes
|
入力/出力ピクセル タイプの変換を指定します。
|
ufoProcessParamsEdited
|
パラメータ編集のコールバック ルーチン。変更対象となるその他のパラメータも設定できます。
|
ufoEditorBeginViewerEditing
|
ビューアでプロセスが編集されると呼び出され、再描画コールバックおよびマウス コールバックが呼び出されることを予期できます。
|
UfoEditorEndViewerEditing
|
ビューアでプロセスが編集されなくなると呼び出されます。
|
ufoEditorRGBDraw
|
画面の RGB 平面に描画します。
|
ufoEditorOverlayDraw
|
画面のオーバーレイ平面に描画します。
|
ufoEditorMouseDown
|
画面上のマウス ボタン ダウン イベントを処理します。
|
ufoEditorMouseUp
|
画面上のマウス ボタン アップ イベントを処理します。
|
ufoEditorMouseDrag
|
画面上のマウス ドラッグを処理します。
|
ufoEditorMousePosition
|
画面上のマウス移動(ボタン ダウンなし)イベントを処理します。
|
ufoEditorKeyEvent
|
画面上のキー イベントを処理します。
|
ufoEditorSetParamGroup
|
パラメータ グループを GUI に描画または表示されるように設定および変更します。
|
最小要件は、ufoProcessDefine とともに、ufoProcessRenderPixel、ufoProcessRenderLine または ufoProcessRender-Rectangle がオペレータによって定義されることです。 この要件が満たされないと、オペレータ プロセスは使用できないため、Fx Tree に表示されません。
画面インタラクションの最小要件は、ufoEditorCreate と、ufoEditorRGBDraw、ufoEditorOverlayDraw、ufoEditorMouseDown、ufoEditorMouseUp、ufoEditorMouseDrag、ufoEditorMousePosition、または ufoEditorKeyEvent のいずれかがオペレータによって定義されることです。
ユーザ定義 X Motif GUI の最小要件は、ufoEditorCreate と ufoEditorUpdateGui の両方がオペレータによって定義されることです。