Softimage でフィルタを使えるようにするには、目的のフィルタを XSILoadPlugin で登録します。この XSILoadPlugin は、Softimage で自己インストール プラグインがロードされると呼び出されます。 XSILoadPlugin は、PluginRegistrar オブジェクトを Softimage から取得し、PluginRegistrar.RegisterFilter メソッドを使用してカスタム フィルタを登録します。
function XSILoadPlugin( oPluginRegistrar ) { // Give the plug-in a name oPluginRegistrar.Name = "MyFilters"; // Register a filter named "My3DObjectFilter" for 3D objects var oPluginItem = oPluginRegistrar.RegisterFilter( "My3DObjectFilter", siFilter3DObject ); oPluginItem.Categories = "Custom,Filter,3D Objects"; // Register another filter oPluginRegistrar.RegisterFilter( "MyPointFilter", siFilterSubComponentPoint ); }
RegisterFilter の第 1 パラメータは、フィルタ名です。 これは Softimage ユーザ インタフェースに表示される名前であり、スクリプティング内または C++ コード内でフィルタの参照に使われる名前でもあります。 また、この名前は、フィルタ コールバック関数の名前付けにも使用されます(たとえば、"My3DObjectFilter_Match" は、"My3DObjectFilter" という名前のフィルタ用の Match コールバックです)。
フィルタ名の先頭文字には英字を使用します。 先頭文字以外には、英字、数字、アンダースコア(_)、またはスペースを指定できます。 "My 3D Object Filter" のようにフィルタ名にスペースが含まれている場合は、コールバック関数名に含まれるスペースを除去して、"My3DObjectFilter_Match" や "MyFilter_Subset" のようにしてください。
フィルタ名にスペースが含まれている場合は、スペースをアンダースコアで置換してからでないと、スクリプティング コマンドまたはオブジェクト モデルにフィルタを使用できません。
var cloList = SIFilter(Application.Selection, "My_3D_Object_Filter", true, true); var oFilter = Application.Filters.Item( "My_3D_Object_Filter" );
2 番目のパラメータには、フィルタ タイプを指定します。 上記の例で、定数 siFilter3DObject は、ユーザが 3D オブジェクト フィルタを登録するという指定です。 使用可能なフィルタ タイプ定数は、次のとおりです。