C++ API は Softimage オブジェクト モデル(OM)より新しく実装された機能です。スクリプトで使用できるオブジェクトや、C++ API が提供するクラスにも、いくつかの違いがあります。 また、対応する C++ API クラスが存在する場合でも、同等のオブジェクト モデルが提供する範囲をすべて網羅していない場合もあります。
さらに、C++ API クラスの中には同等のオブジェクト モデルが存在しないものもあります。これは純粋な C++ と ActiveX (Automation)との違いが原因です。たとえば、オブジェクト メモリを管理し、変換サービスを提供する CRef クラスなどがあります。このほかにも、C++ API クラスの一部はオブジェクト モデルで実装されていません(今後も実装されない可能性があります)。たとえば、GraphicSequencer や カスタム ディスプレイ ホスト などがあります。
また、どのスクリプト言語でも使用されず、C# 言語のみに実装されている OM オブジェクト(PPGEventContext)もあります。
このセクションでは、これら 2 つの API 間の主な相違点について基本概念のみを紹介します。 C++ API クラスの対象(メンバ)が同等のオブジェクト モデルより少ない場合については、ここでは詳しく説明していません。 詳細については、「C++ リファレンスC++ API リファレンス」を参照してください。
次の表は、C++ API とオブジェクト モデルで使用可能なクラスの違いを簡単にまとめたものです。
C++ API |
Softimage オブジェクト モデル |
コメント |
---|---|---|
-- |
Softimage でスクリプトを作成する際に主に役立ちます。 |
|
-- |
AlignedAxisConstraint(スクリプトのみ) |
AxisAligned コンストレイント(方向コンストレイント、位置コンストレイントなど)を表します。 |
Application のみが C++ API で提供されます。ここでは、オブジェクトモデルの 2 つのクラスの全部ではなく一部の機能が提供されます。 |
||
-- |
このクラスは C++ API の全 API クラスの基本であり、抽象クラスです(つまり、API クラスにアクセスすることはできますが、直接使用することはできません)。 |
|
-- |
ブールで表されるバイナリ値の配列をカプセル化します(ブール値からなる大きな配列をコンパクトな形で取り扱います)。 |
|
-- |
標準データ タイプの配列を管理する C++ API の便利なクラスです。 |
|
これらの 2 つの API には多少の違いがあります。C++ API は Clusterクラスと ClusterProperty クラスのエレメントを処理するために2つの個別のクラスを実装し、オブジェクトモデルは両方のエレメントを処理するために 1 つのクラスを実装します。 |
||
-- |
ジオメトリに新規クラスタ プロパティを作成するプロセスをすばやく行えるサービスを提供します。 |
|
RGBA カラーを表します。 C++ API は Triangle クラスと TriangleVertex クラスのカラーを表すために特別な構造を使用します。 |
||
-- |
ICE データ タイプをサポートする特殊な MATH クラスです。 |
|
-- |
オートメーション オブジェクト(Softimage オブジェクト モデルを使用して実装されたオブジェクトなど)を呼び出すための C++ ラッパーを実装します。 |
|
-- |
ジオメトリ メッシュ オブジェクトのデータ値およびクラスタ プロパティ値への最適なアクセスを提供します。 |
|
CDataArray2D< bool >::Accessor |
-- |
カスタム ICENode プラグインのデータ アクセスをサポートします。 |
-- |
OpenGL ビューポートのカスタム レンダリング パスを有効化するさまざまなサービスを提供します。 |
|
-- |
デバイス ドライバのチャンネルを表します。 |
|
-- |
ClusterProperty_V1(スクリプトのみ) |
スクリプト用の Cluster オブジェクトおよび ClusterProperty オブジェクトのオリジナル バージョンです(v1.5 で廃止されました)。 |
-- |
頂点座標値とポリゴン接続(ポリゴンまたは頂点)で構成される順序付けされた配列からポリゴン メッシュを作成できます。 |
|
-- |
NurbsCurve クラスと NurbsSurface クラスの Get()メソッドと GetTrim()メソッドを使って取得した NURBS データを保持する C++ API の特別な構造です。 オブジェクト モデルの場合、これらのデータは出力引数または配列によって処理されます。 |
|
-- |
XSICollection のエレメントを表すために頻繁に使用されるスクリプト用の汎用ディスパッチ オブジェクトです。 |
|
-- |
Primitiveオブジェクトのオペレータスタックを表します。 |
|
オブジェクトモデルではすべてのプラグインタイプで同じ Context オブジェクトが使用されますが、C++ API では特殊化されたクラスが使用されます。 |
||
(特定のオブジェクトへのポインタ) |
C++ API ではオブジェクト リファレンスの管理に CRef クラスが使用されますが、オブジェクト モデルでは特定のオブジェクトへの明示的なポインタが使用されるため、これら 2 つの API は完全に同じではありません。 |
|
XSICollection(コレクションオブジェクトへのポインタ) |
C++ API では CRef オブジェクトの特殊な配列ですが、オブジェクトモデルでは特定のコレクションオブジェクトへの明示的なポインタです。 |
|
-- |
カスタム データのホスト イベントに関する読み取り専用の情報を保持します。 |
|
(VBScript Err オブジェクト)(JScript Error オブジェクト)(Python および Perl stderr パイプ)(C# System.Exception クラス) |
エラー処理を目的にステータス データ タイプをカプセル化します。 また、クラスはエラー コードを照会、確定するためにメソッドを公開します。 これらのエラー コードは Windows の標準エラー コード HRESULT と同じ値を使用します。 |
|
(スクリプトの場合は Variant 型として String、C# の場合は System.String) |
ワイド文字型の文字列から構成される可変長のシーケンスです(unicode 対応を目的としています)。 C++ API で文字列を指定する場合は、ワイド文字型の定数(L"mystring")を使用する必要があります。 |
|
-- |
時間を操作するためのユーティリティ クラス。 |
|
-- |
CUserDataArray::Value 構造タイプで表すユーザ データ値の配列。 |
|
UV 座標を表します。 C++ API では構造として実装されます。 |
||
-- |
C++ のように強く型指定された言語の内部で、弱く型指定された変数を扱える便利で特殊なクラスです。 注:
C# も強く型指定された言語ですが、System.Object クラスを使用して ActiveX Variant に似た弱く型指定された変数を表します。 |
|
-- -- -- |
Softimage Math オブジェクト。 |
|
-- |
内部オブジェクト データベースに関する情報にアクセスできます。 |
|
-- |
Softimage のデバイスドライバを管理するオブジェクト。 |
|
Camera オブジェクトと Light オブジェクトの基本クラス。 |
||
-- |
Softimageの環境変数を管理します(スクリプトを介してのみ使用可能)。 |
|
シーン グラフとヘルパー オブジェクトの外部に存在するオブジェクトを作成できます。 |
||
-- |
Softimage の FCurve Editor のコンテキスト情報を提供します。この情報を使用すると、FCurve Editor 上のユーザ操作に反応する F カーブ編集用のカスタム スクリプトやプラグインを記述できます。 |
|
-- |
Softimage ブラウザを表示するサービスを提供します(スクリプトを介してのみ使用可能)。 |
|
-- |
FxTree(FxOperator のネットワーク)およびその FxOperator を管理するオブジェクト。 |
|
-- |
(スクリプトのみ) |
オブジェクトとサブコンポーネント ジオメトリを表すスクリプト用オブジェクトのオリジナル バージョンです(v1.5 で廃止されました)。 |
-- |
ハードウェア レンダリング(リアルタイム シェーダ)に使用されます。 |
|
C++ API では、ImageClip クラスのオリジナル バージョンは ImageClip2 に置き換えられています。 |
||
-- |
Unix と NT 環境間のパス変換を、Linktab.ini ファイルを使って管理します。 |
|
オブジェクトモデルではネイティブオブジェクトとして、C++ API では数学関数を含んでいるネームスペースとして、3D 数学の基本的な機能を提供します。 |
||
-- |
||
-- |
パラメータの定義を表し、パラメータの作成に使用されます。 |
|
-- |
ポイント クラウドのジオメトリを表します(パーティクル シミュレーションの場合のみ) |
|
-- |
PPG(スクリプトの場合のみ) |
スクリプトでプロパティ ページのインスタンスを表します。 |
PPGEventContext(C#の場合のみ) |
カスタム プロパティのイベント トリガーへのアクセスを提供します。 |
|
Project のみが C++ API で提供されます。ここでは、オブジェクトモデルの 2 つのクラスの全部ではなく一部の機能が提供されます。 |
||
カスタムレンダラプラグインのサポートオブジェクト。 |
||
-- |
CameraRig オブジェクトと LightRig オブジェクトの基本クラス。 |
|
-- |
ShaderComment ShaderCompound ShaderCompoundParameter RenderTreeNode |
カスタム シェーダ API をサポートするオブジェクト モデル専用インターフェイス |
-- |
パーティクル レンダリングのプリミティブ タイプを表します。 |
|
-- |
SpotLight(スクリプトのみ) |
スポット ライト オブジェクトを表します(固有のメソッドやプロパティは実装していません)。 |
Triangle オブジェクトのポイントを表します。 |
||
両方の API で、FileBrowser や MsgBox などの特別なユーザインターフェイスのユーティリティにアクセスできます。ただし、オブジェクト モデルの場合は ProgressBar ユーティリティにもアクセスできます。 |
||
-- |
オブジェクト モデルの場合は、UserDataMap の個別のコンポーネントを取得できる便利なオブジェクトです。 C++ API の場合は、UserDataMap.GetItemValue および UserDataMap.PutItemValue によって処理されます。 |
|
-- |
XSIDialog(スクリプトのみ) |
文字列から構成されるドロップダウン リストを持つ簡単なモーダル ダイアログ ボックスにアクセスできます。 この機能は、両方の API の PPGLayout クラスで使用可能な siControlCombo(ドロップダウン リスト)コントロールを使用してもキャプチャできます。 |
-- |
XSIFileService(スクリプトのみ) |
変換スクリプト ツール(ImportDotXSI および ExportDotXSI)にアクセスできます。 |
-- |
Light 設定のための mental ray 用 UserData 構造です。 |
|
汎用的なユーティリティメソッドを提供するネイティブオブジェクト。 |
||
-- |
リジッド ボディ ダイナミクスまたはコンストレイント オブジェクトのデータ値およびプロパティ値への最適なアクセスを提供します。 |
オブジェクト モデルと C++ API では、平坦化されたコントロール ポイントの配列で使用される UV の順序に違いがあります。 詳細については、「UV 順序」を参照してください。
ほとんどの場合、オブジェクト モデルでコレクション オブジェクトを使用する箇所に、C++ API では CRefArray が使用されます。ただし、C++ API が特別な配列を使用するケースもあります。 次の表は、これに類似するケースが発生する場合を示します。
これらの特殊な C++ API 配列は、さまざまな C++関数によって戻されるもので、ユーザ定義の関数によって作成または変更されるものではありません。コレクションに対して任意のアイテムの追加および削除を行う場合は、これらの特殊な配列の代わりに、CRefArray を使用する必要があります。たとえば、パラメータのリストを構築する場合は、Parameter オブジェクト(CParameterRefArray ではない)へのリファレンスを含む CRefArray を使用します。