Softimage API の構造について

 
 
 

C++ API および Softimage オブジェクト モデル(OM)は、どちらもオブジェクト指向のアプローチで実装されています。 つまり、子となるクラスは親クラスの関数を継承し、その後にさらに特定の関数を実装することでそのクラスを拡張します。 両方の API で階層表示を使用できます。

Softimage の SDK Explorer を使用することも可能です。SDK Explorer は、選択したオブジェクトの SDK 情報を表示するリレーショナル ビューです。 SDK Explorer を表示するには、Softimage のメイン メニューで[表示](View)[スクリプト](Scripting)[SDK Explorer]を選択します。

SDK Explorer は、スクリプト化されたオブジェクト モデルの情報と、スクリプト リファレンス ページへのリンクを表示します。 「コマンドおよびスクリプト リファレンス」ページには、対応する C++ リファレンス ページへのリンクが含まれているため、ミラー C++ 情報を容易に取得できます。

以下のセクションでは、スクリプト オブジェクト モデルと C++ クラス ライブラリを非常に高いレベルから捕らえた内容を提供します。

基本クラス

どちらの API でも、Softimage シーンの基本構成要素は SIObject または Name および FullnameTypeOrigin および OriginPath のような基本情報を実装する SIObject です。大部分のオブジェクトは SIObject から継承されます。

Application

アプリケーションまたはアプリケーションは、スクリプト化またはコンパイル化されたプラグインが動作するように Softimage に接続します。以下の構文を使用します。

  • Softimage 外部で実行できるスクリプト プラグイン(たとえば、NetView ページ)を記述する場合は、以下のように Application オブジェクトを使って Softimage に接続することができます。

    // JScript
    var xsi_app = new ActiveXObject( XSI.Application );
    var app = xsi_app.Application;
    app.LogMessage( "Initiating NetView session" );
  • C++ API でプラグインを記述する場合は、次のコードを使用します。

    Application app;
    app.LogMessage( L"Welcome to Softimage!" );
  • オブジェクト モデルで C# プラグインを記述する場合は、次のコードを使用します。

    CXSIApplicationClass app = new CXSIApplicationClass();
    app.LogMessage( "Custom Plug-in started", siSeverity.siInfo );

また、Application クラスは、コマンドの制作と実行、アドオンのインストール、Softimage 基本ユーティリティ(ディクショナリ、選択、デスクトップなど)へのアクセスなどの重要な多くのサービスを提供します。

ユーティリティ クラス

プロジェクトレベルの項目とシーンレベルの項目で基本クラスとして主に使用するクラスは 2 つあります。

3D シーン オブジェクト

3D シーン オブジェクトを管理する中心的なクラスは X3DObject または X3DObject です。このクラスは、子オブジェクトを作成するための関数を実装し、ジオメトリにアクセスできるとともに、そのジオメトリの下位階層内を移動する手段も提供します。

シーンオブジェクトのデータにアクセスする際に使用できる代表的な関数の一部を以下に紹介します。

  • SceneItem.Properties または SceneItem::GetProperties: SceneItem または SceneItem クラスから継承され、オブジェクトのプロパティ セットへのアクセスを提供します。ここから、ProjectItem.Parameters プロパティまたは ProjectItem::GetParameters メンバ関数を使用して個々のパラメータにアクセスできます。

  • X3DObject.ActivePrimitive プロパティまたは X3DObject::GetActivePrimitive メンバ関数: プリミティブまたはプリミティブを使用して、オブジェクトのジオメトリにアクセスできます。ジオメトリまたはジオメトリ オブジェクトから、オブジェクトのサブコンポーネントに対する下位レベルのアクセスが可能です。

  • X3DObject.Kinematics プロパティまたは X3DObject::GetKinematics メンバ関数: 位置、スケーリング、回転などをコントロールするデータを含む特別な種類のプロパティへのアクセスを提供します。

  • AddXXX: 特定のタイプのエレメントがシーン オブジェクト(X3Object または X3Object の一種である Scene_Root など)の下に子として追加されるいくつかの関数があります。これらの関数の代表的なものは、新しい立方体や球を追加できる AddGeometry 関数や AddGeometry 関数です。

  • FindChild または FindChild、FindChildren または FindChildren、X3DObject.Children プロパティまたは X3DObject::GetChildren メンバ関数: シーン オブジェクト(Scene_Root など)の下で特定のオブジェクト(またはオブジェクトの種類)を検索できるナビゲーション ツールを提供します。

コンテンツ クラス

特定の Softimage アイテムを表すオブジェクト モデルには、Shader または ShaderCamera または CameraVertex または VertexImageClip または ImageClipPort または Port のような多くのクラスが実装されています。

グローバル クラスとユーティリティ クラス

さらに機能を充実させるグローバル クラス(intrinsic)とユーティリティ クラスがいくつか用意されています。 使用できるものは次のとおりです。

  • Application または Application クラス: Softimage および基本サービスに接続します。

  • Math 関数: オブジェクト モデルの XSIMath オブジェクトおよび C++ API の XSI::MATH ネームスペース経由で実装されます。数学に関する便利なメソッドとインターフェイスを提供します。

  • UI ツールキットまたは UI ツールキット: ProgressBar または ProgressBar および MsgBox または MsgBox 機能などのユーザ インタフェースを構築するために使用できるツールにアクセスできます。

  • XSIUtils オブジェクト: オブジェクト モデルでのみ使用できます。 DataRepository および Linktab のような一般的なユーティリティにアクセスできます。