Softimage オブジェクトモデルと C++ API の違いについて

 
 
 

C++ API は Softimage オブジェクト モデル(OM)より新しく実装された機能です。スクリプトで使用できるオブジェクトや、C++ API が提供するクラスにも、いくつかの違いがあります。 また、対応する C++ API クラスが存在する場合でも、同等のオブジェクト モデルが提供する範囲をすべて網羅していない場合もあります。

さらに、C++ API クラスの中には同等のオブジェクト モデルが存在しないものもあります。これは純粋な C++ と ActiveX (Automation)との違いが原因です。たとえば、オブジェクト メモリを管理し、変換サービスを提供する CRef クラスなどがあります。この他にも、一部の C++ API クラスがオブジェクト モデルに実装されていません(今後も実装されない可能性あり)。たとえば、Graphic SequencerCustom Display Host などです。

また、どのスクリプト言語でも使用されず、C# 言語のみに実装されている OM オブジェクト(PPGEventContext)もあります。

このセクションでは、これら 2 つの API 間の主な相違点について基本概念のみを紹介します。 C++ API クラスの対象(メンバ)が同等のオブジェクト モデルより少ない場合については、ここでは詳しく説明していません。 詳細については、「C++ リファレンスC++ API リファレンス」を参照してください。

ヒント:

両方の API で実装されている大部分のクラスに同じ名前が使用されています。 たとえば、Softimage の基本 3D オブジェクトを表すクラスです。このクラスは、オブジェクト モデルと C++ API の両方で X3DObject または X3DObject という名前になります。以下の表にクラスが掲載されていない場合、両方の API が同じ名前を使用しているケースに該当すると思われます。

次の表は、C++ API とオブジェクト モデルで使用可能なクラスの違いを簡単にまとめたものです。

C++ API

Softimage オブジェクト モデル

コメント

--

Addon

Softimage でスクリプトを作成する際に主に役立ちます。

--

AlignedAxisConstraint(スクリプトのみ)

AxisAligned コンストレイント(方向コンストレイント、位置コンストレイントなど)を表します。

注:

このインターフェイスは、C# 言語では使用できません。

Application

XSIApplication

Application

Application のみが C++ API で提供されます。ここでは、オブジェクトモデルの 2 つのクラスの全部ではなく一部の機能が提供されます。

CBase

--

このクラスは C++ API の全 API クラスの基本であり、抽象クラスです(つまり、API クラスにアクセスすることはできますが、直接使用することはできません)。

CBitArray

--

ブールで表されるバイナリ値の配列をカプセル化します(ブール値からなる大きな配列をコンパクトな形で取り扱います)。

CBoolArray

CDoubleArray

CLongArray

CStringArray

--

標準データ タイプの配列を管理する C++ API の便利なクラスです。

注:

C++ API ではこれらの特定のタイプの配列が使用されますが、C#(もう 1 つの強く型指定された言語)では System.Object 配列がサポートされます。 ネイティブの C# オブジェクト クラスは汎用データ タイプ(Variant に類似)なので、実際には配列に C# の異なるタイプの項目を含めることができます。 JScript、Python、および VBScript は厳密に型指定しない言語であるため、特別の配列クラスは必要ありません。

CClusterElementArray

CClusterPropertyElementArray

ClusterElementCollection

これらの 2 つの API には多少の違いがあります。C++ API は Clusterクラスと ClusterProperty クラスのエレメントを処理するために2つの個別のクラスを実装し、オブジェクトモデルは両方のエレメントを処理するために 1 つのクラスを実装します。

CClusterPropertyBuilder

--

ジオメトリに新規クラスタ プロパティを作成するプロセスをすばやく行えるサービスを提供します。

CColor

CColorArray

CVertexColor

CVertexColorArray

カラー

RGBA カラーを表します。 C++ API は Triangle クラスと TriangleVertex クラスのカラーを表すために特別な構造を使用します。

CColor4f

CMatrix3f

CMatrix4f

CQuaternionf

CRotationf

CVector2f

CVector3f

CVector4f

--

ICE データ タイプをサポートする特殊な MATH クラスです。

CComAPIHandler

--

オートメーション オブジェクト(Softimage オブジェクト モデルを使用して実装されたオブジェクトなど)を呼び出すための C++ ラッパーを実装します。

CGeometryAccessor

--

ジオメトリ メッシュ オブジェクトのデータ値およびクラスタ プロパティ値への最適なアクセスを提供します。

CDataArray

CDataArray2D

CDataArray2D::Accessor

CDataArray2D< bool >::Accessor

CDataArray2DBool

CDataArrayBool

CIndexSet

CIndexSet::Iterator

CICEAttributeDataArray

CICEAttributeDataArray2D

CICEAttributeDataArrayBool

--

カスタム ICENode プラグインのデータ アクセスをサポートします。

CGraphicSequencer

--

OpenGL ビューポートのカスタム レンダリング パスを有効化するさまざまなサービスを提供します。

--

チャンネル(Channel)

デバイス ドライバのチャンネルを表します。

--

Cluster_V1

ClusterProperty_V1(スクリプトのみ)

スクリプト用の Cluster オブジェクトおよび ClusterProperty オブジェクトのオリジナル バージョンです(v1.5 で廃止されました)。

注:

これらのインターフェイスは、C# 言語では使用できません。

CMeshBuilder

CMeshBuilder::CErrorDescriptor

--

頂点座標値とポリゴン接続(ポリゴンまたは頂点)で構成される順序付けされた配列からポリゴン メッシュを作成できます。

CNurbsCurveData

CNurbsCurveDataArray

CNurbsSurfaceData

CNurbsSurfaceDataArray

CTrimCurveData

CTrimCurveDataArray

--

NurbsCurve クラスと NurbsSurface クラスの Get()メソッドと GetTrim()メソッドを使って取得した NURBS データを保持する C++ API の特別な構造です。 オブジェクト モデルの場合、これらのデータは出力引数または配列によって処理されます。

--

CollectionItem

XSICollection のエレメントを表すために頻繁に使用されるスクリプト用の汎用ディスパッチ オブジェクトです。

--

ConstructionHistory

Primitiveオブジェクトのオペレータスタックを表します。

コンテキスト

ViewContext

GraphicSequencerContext

コンテキスト

オブジェクトモデルではすべてのプラグインタイプで同じ Context オブジェクトが使用されますが、C++ API では特殊化されたクラスが使用されます。

CRef

(特定のオブジェクトへのポインタ)

C++ API ではオブジェクト リファレンスの管理に CRef クラスが使用されますが、オブジェクト モデルでは特定のオブジェクトへの明示的なポインタが使用されるため、これら 2 つの API は完全に同じではありません。

CRefArray

XSICollection(コレクションオブジェクトへのポインタ)

C++ API では CRef オブジェクトの特殊な配列ですが、オブジェクトモデルでは特定のコレクションオブジェクトへの明示的なポインタです。

CSelectionChangeNotification

CTimeChangeNotification

CValueChangeNotification

CWindowNotification

CXSIEventSelectionData

CXSIEventTimeData

CXSIEventValueSetData

CXSIWindowChangeData

CXSIEventSelectionImpl

CXSIEventTimeImpl

CXSIEventSetValueImpl

CXSIWindowChangeImpl

--

カスタム データのホスト イベントに関する読み取り専用の情報を保持します。

CStatus

(VBScript Err オブジェクト)(JScript Error オブジェクト)(Python stderr パイプ)(C# System.Exception クラス)

エラー処理を目的にステータス データ タイプをカプセル化します。 また、クラスはエラー コードを照会、確定するためにメソッドを公開します。 これらのエラー コードは Windows の標準エラー コード HRESULT と同じ値を使用します。

CString

(スクリプトの場合は Variant 型として String、C# の場合は System.String)

ワイド文字型の文字列から構成される可変長のシーケンスです(unicode 対応を目的としています)。 C++ API で文字列を指定する場合は、ワイド文字型の定数(L"mystring")を使用する必要があります。

CTime

CTimeArray

--

時間を操作するためのユーティリティ クラス。

CUserDataArray

--

CUserDataArray::Value 構造タイプで表すユーザ データ値の配列。

CUV

CUVArray

UV

UV 座標を表します。 C++ API では構造として実装されます。

CValue

ValueField

CValueArray

--

C++ のように強く型指定された言語の内部で、弱く型指定された変数を扱える便利で特殊なクラスです。

注:

C# も強く型指定された言語ですが、System.Object クラスを使用して ActiveX Variant に似た弱く型指定された変数を表します。

CVector3

CVector3Array

CVector4

CVector4Array

CMatrix3

CMatrix4

CMatrix4

CQuaternion

CRotation

CTransformation

SIVector3

--

--

--

SIMatrix3

SIMatrix4

SIQuaternion

SIRotation

SITransformation

Softimage Math オブジェクト。

--

DataRepository

内部オブジェクト データベースに関する情報にアクセスできます。

--

デバイス

DeviceCollection

チャンネル

Softimage のデバイスドライバを管理するオブジェクト。

Directed(方向性)

DirectedObject

Camera オブジェクトと Light オブジェクトの基本クラス。

--

Environment

Softimageの環境変数を管理します(スクリプトを介してのみ使用可能)。

Factory

XSIFactory

シーン グラフとヘルパー オブジェクトの外部に存在するオブジェクトを作成できます。

--

FCurveEditor

Softimage の FCurve Editor のコンテキスト情報を提供します。この情報を使用すると、FCurve Editor 上のユーザ操作に反応する F カーブ編集用のカスタム スクリプトやプラグインを記述できます。

--

FileBrowser

Softimage ブラウザを表示するサービスを提供します(スクリプトを介してのみ使用可能)。

--

FxTree FxOperator

FxTree(FxOperator のネットワーク)およびその FxOperator を管理するオブジェクト。

--

Geometry_V1

Geometry0D

Geometry1D

Geometry2D

(スクリプトのみ)

オブジェクトとサブコンポーネント ジオメトリを表すスクリプト用オブジェクトのオリジナル バージョンです(v1.5 で廃止されました)。

注:

これらのインターフェイスは、C# 言語では使用できません。

HardwareSurface

HardwareShaderContext

CHardwareAttributeArray

GraphicDriver

--

ハードウェア レンダリング(リアルタイム シェーダ)に使用されます。

ImageClip2

ImageClip

C++ API では、ImageClip クラスのオリジナル バージョンは ImageClip2 に置き換えられています。

--

Linktab

Unix と NT 環境間のパス変換を、Linktab.ini ファイルを使って管理します。

MATH

XSIMath

オブジェクトモデルではネイティブオブジェクトとして、C++ API では数学関数を含んでいるネームスペースとして、3D 数学の基本的な機能を提供します。

ICENodeContext

ICENodeDef

--

カスタム ICENode または ICENode プラグイン オブジェクト。

--

ParamDef

パラメータの定義を表し、パラメータの作成に使用されます。

--

PointCloudGeometry

ポイント クラウドのジオメトリを表します(パーティクル シミュレーションの場合のみ)

--

PPG(スクリプトの場合のみ)

スクリプトでプロパティ ページのインスタンスを表します。

注:

このインターフェイスは、C# 言語では使用できません。

PPGEventContext

PPGEventContext(C#の場合のみ)

カスタム プロパティのイベント トリガーへのアクセスを提供します。

注:

このインターフェイスは、スクリプトでは使用できません。

プロジェクト

XSIProject

プロジェクト

Project のみが C++ API で提供されます。ここでは、オブジェクトモデルの 2 つのクラスの全部ではなく一部の機能が提供されます。

RendererContext

RenderImageFragment

RendererArchiveInfo

カスタムレンダラプラグインのサポートオブジェクト。

リグ

--

CameraRig オブジェクトと LightRig オブジェクトの基本クラス。

--

ShaderComment

ShaderCompound

ShaderCompoundParameter

RenderTreeNode

カスタム シェーダ API をサポートするオブジェクト モデル専用インターフェイス

--

シェイプ

パーティクル レンダリングのプリミティブ タイプを表します。

--

SpotLight(スクリプトのみ)

スポット ライト オブジェクトを表します(固有のメソッドやプロパティは実装していません)。

注:

このインターフェイスは、C# 言語では使用できません。

TriangleVertex

TrianglePoint

Triangle オブジェクトのポイントを表します。

UIToolkit

XSIUIToolkit

両方の API で、FileBrowser や MsgBox などの特別なユーザインターフェイスのユーティリティにアクセスできます。ただし、オブジェクト モデルの場合は ProgressBar ユーティリティにもアクセスできます。

--

UserDataItem

オブジェクト モデルの場合は、UserDataMap の個別のコンポーネントを取得できる便利なオブジェクトです。 C++ API の場合は、UserDataMap.GetItemValue および UserDataMap.PutItemValue によって処理されます。

--

XSIDialog(スクリプトのみ)

文字列から構成されるドロップダウン リストを持つ簡単なモーダル ダイアログ ボックスにアクセスできます。 この機能は、両方の API の PPGLayout クラスで使用可能な siControlCombo(ドロップダウン リスト)コントロールを使用してもキャプチャできます。

注:

このインタフェースは、C# 言語では使用できません。

--

XSIFileService(スクリプトのみ)

変換スクリプト ツール(ImportDotXSI および ExportDotXSI)にアクセスできます。

注:

このインタフェースは、C# 言語では使用できません。

XSILightAttributesUD

--

Light 設定のための mental ray 用 UserData 構造です。

CUtils

XSIUtils

汎用的なユーティリティメソッドを提供するネイティブオブジェクト。

CRigidBodyAccessor

CRigidConstraintAccessor

--

リジッド ボディ ダイナミクスまたはコンストレイント オブジェクトのデータ値およびプロパティ値への最適なアクセスを提供します。

注:

オブジェクト モデルと C++ API では、平坦化されたコントロール ポイントの配列で使用される UV の順序に違いがあります。 詳細については、「UV 順序」を参照してください。

OM コレクションと C++ API の配列

ほとんどの場合、オブジェクト モデルでコレクション オブジェクトを使用する箇所に、C++ API では CRefArray が使用されます。ただし、C++ API が特別な配列を使用するケースもあります。 次の表は、これに類似するケースが発生する場合を示します。

重要:

これらの特殊な C++ API 配列は、さまざまな C++関数によって戻されるもので、ユーザ定義の関数によって作成または変更されるものではありません。コレクションに対して任意のアイテムの追加および削除を行う場合は、これらの特殊な配列の代わりに、CRefArray を使用する必要があります。たとえば、パラメータのリストを構築する場合は、Parameter オブジェクト(CParameterRefArray ではない)へのリファレンスを含む CRefArray を使用します。