C++ API について

 
 
 

C++ API(Application Programmer's Interface)は C++ クラスのライブラリであり、C++ 開発者が Softimage オブジェクト モデルにアクセスするために使用するものです。 ライブラリでは、特に以下の種類のクラスが使用されます。

ヒント:

利用できるクラスとその説明のリストは、「C++ API リファレンス」を参照してください。

C++ API の特長

C++ API には次のような特長があります。

自動オブジェクト メモリ管理

C++ API は、自動的にオブジェクトのライフタイムを管理するように設計されています。 シーン内のオブジェクトを参照するクラス(例: CRef または API クラス)は負荷がかからず、この章の例で示されるようにスタックで作成されます。 これらのオブジェクトのコンストラクタは自動的にオブジェクトのカウントを増やし、デストラクタは自動的にこのカウントを減らします。 これにより、AddRef() および Release() を呼び出してオブジェクトのライフタイムを明示的に制御する必要がある COM 開発が、より簡単に行えるようになります。

注:

シーンから削除されたオブジェクトのリファレンスは保持されないことに注意してください。 たとえば、プラグインによってヒープ内の球へのリファレンス オブジェクトが保持されている場合、球がシーンから削除されると(または別のシーンが開くと)、C++ API リファレンスには現在の Softimage コンテキストで使用可能なオブジェクトがなくなるので zombie オブジェクトをポイントします。

標準の C++ API プラグインでは、クラスはスタックに一時的に作成されるため、これは問題にはなりません。また、プラグインによってオブジェクトが明示的に削除された場合は(DeleteObj コマンドの呼び出しによって)、プラグインのコールバック実行中にのみオブジェクトが削除されます。

下位互換性

API クラスは、内部のオブジェクト メソッドを呼び出す仮想メソッドを持たないラッパー クラスです。 API 内部でポリモーフィズムが発生しているため、これらのクラスは基本的な API 関数セットのように動作します。 この追加のレイヤによって、バージョン間で下位互換性が確保されます。

注:

Softimage で .so ファイルをロードできない場合は、以下の手順を実行した後に未解決のシンボルを検索することをお勧めします。

ldd -r filename.so

mainwin_init が解決できないという警告は無視できる場合がありますが、その他のエラーは .so ファイルが Softimage の古いバージョンでコンパイルされているために発生します。 古い .so ファイルで実装された Softimage でカスタム コマンドを実行すると、エラー メッセージが表示されます。

重要:

カスタム ICE ノードの一部のクラスは、Softimage 2010 の時点で下位互換性が失われる可能性があります。 詳細については、「C++ API の下位互換性」を参照してください。

エラー処理

C++ API は、CStatus クラスをエラー処理機能とともに使用します。CStatus クラスは、ステータスのデータ型(Fail、Invalid Argument、Out of Memory、Access Denied など)をカプセル化し、照会、エラー コードの設定、拡張エラー記述の印刷を可能にします。