リファレンス モデルを使用する

 
 
 

リファレンス モデルは、Softimage で作成され書き出されていますが、実際のところシーン ファイルには組み込まれていないモデルです。名前が示すように、リファレンス モデルは、お使いのハードディスクやネットワークなどの別の場所から参照されます。書き出しモデルに対する変更は、次にシーンを開いたとき、または参照を更新したときに反映されます。

たとえば、さまざまなシーンで使用する車をモデリングしているとします。詳細が完成する前に、他のアニメータがその車を使って、別のコンピュータでアニメート作業を開始する必要があるとします。車を [porsche.emdl] として書き出すと、アニメータはこれを自分のシーンに読み込めて、それと平行してモデリング作業も継続できます。車のモデリングが終了したら、モデルを再度書き出すことができます。これで、アニメータがシーンを再ロードしたりリファレンス モデルを更新すると、モデリング作業での変更はすべて自動的にシーンの車に反映され、モデルに適用したアニメーションは保持されます。

リファレンス モデルを使用すると、異なる詳細レベルで作業することもできます。アニメートで速い反応を得るために低解像度のモデルを、より精密なプレビューのために中解像度のモデルを、そして最終結果のために高解像度のモデルを使用できます。

リファレンス モデルとは

リファレンス モデルは、外部ファイルへの 1 つまたは複数の参照から構成されています。.emdl ファイルに加えて、dotXSI(.xsi)ファイルおよび Collada(.dae または .xml)ファイルをリファレンス モデルとしてインポートできます。ソースをこれらのフォーマットで保持する場合は、この方法が便利です。

1 つのリファレンス モデルに、必要なだけの数の外部モデルへの参照を含めることができます。これによって、モデルに複数の解像度を定義することができます。

1 つのシーンのリファレンス モデル内のオブジェクトに加えた変更は、モデルのデルタに保存されます。同じデルタがすべての解像度によって共有されると、別の解像度にあるオブジェトおよびパラメータの名前が一致します。

リファレンス モデルの機能

リファレンス モデルは Explorer では白い人のアイコンで示されます。このノードの既定名は外部ファイルの名前によって異なりますが、必要に応じて変更できます。アクティブな解像度の名前は、モデル名の後ろに角括弧で囲まれて表示されます。デルタのターゲット モデル名は、デルタ名の後ろに表示されます。

リファレンス モデルを作成する

リファレンス モデルを作成するには、既存の外部ファイルを読み込むか、「所定の位置にある」ローカル モデルを変換します。

リファレンス モデルを読み込む

  1. バージョン 3.6 以前の .xsi ファイルを読み込む場合は、最初に .xsi 読み込みオプションを設定できます。

    オプションを設定するには、Explorer のスコープを[アプリケーション]に設定し、[データ]フォルダを展開して[.xsi Import Options]ノードをクリックします。特定のオプションの詳細については、「[dotXSI 読み込みオプション]ダイアログ ボックス」(「プロパティ リファレンス」)を参照してください。

  2. 次のいずれかの操作を実行します。

    • メイン メニューから[ファイル](File) [読み込み](Import) [リファレンス モデル](Referenced Model)を選択します。ブラウザを使用して目的の .emdl ファイルまたは .xsi ファイルを選択し、[OK]をクリックします。

    • [モデル]ツールバーから、[作成](Create) [モデル](Model) [新規リファレンス モデル](New Empty Referenced Model)を選択します。Explorer などを使用してプロパティ エディタを開き、最初の解像度(既定では [res1])の[ユーザ パス](User Path)列をクリックし、パスを入力するか、[選択されたパスをブラウズ](Browse Selected Path)をクリックして目的のファイルを指定します。

    • [Ctrl]キーを押しながら、.emdl ファイルを Softimage ブラウザまたは Netview ページ上のリンクから 3D ビューの背景へとドラッグします。Windows では、[Ctrl]キーを押しながら .emdl ファイルをフォルダ ウィンドウからドラッグすることもできます。

      重要:Softimage バージョン 3.0 以前のバージョンで作成したモデルを読み込むと、シーンのアンビエンスが変更される可能性があります。アンビエンスの詳細については、「[アンビエント ライティング]プロパティ エディタ」を参照してください。

ローカル モデルをリファレンス モデルへ変換する

ローカル モデルの変換は、ローカル モデルを .emdl ファイルに書き出し、シーンからモデルを削除して、そのファイルをリファレンス モデルとして再度シーンに読み込むプロセスと同じです。

  1. モデルのルート ノードを選択します。

  2. [修正](Modify) [モデル](Model) [リファレンスへ変換](Convert to Reference)を選択します。

  3. .emdl ファイルのパスおよびファイル名を指定し、[OK]をクリックします。

既存のシーン エレメントからリファレンス モデルを作成する

  1. リファレンス モデルを作成するシーン エレメントを選択します。

  2. [モデル]ツールバーから、[作成](Create) [モデル](Model) [新規リファレンス モデル](New Referenced Model)を選択します。

  3. モデル ファイルの名前と場所を指定します。

    選択したエレメントは、シーンから削除され、リファレンス モデルとして再度読み込まれます。

複数の解像度で操作する

1 つのモデルで、必要なだけの数の外部ファイル(「解像度」)を参照できます。たとえば、同じモデルの 3 つの解像度(低解像度、中解像度、高解像度)を設定し、作業中にこれらを切り替えることができます。一度にアクティブにできる解像度は 1 つだけです。

解像度を定義する

  1. モデルのプロパティ エディタを開きます。

  2. [解像度の追加](Add resolution)をクリックします。新しい行が[解像度]グリッドに追加されます。

  3. 新しい行の[ユーザ パス](User Path)列をクリックし、パスを入力するか、[選択されたパスをブラウズ](Browse Selected Path)をクリックして目的のファイルを指定します。

  4. 必要に応じて、[名前](Name)列をクリックし、解像度にわかりやすい名前を付けることもできます。

解像度を変更する

モデルの解像度を変更すると、次のようなことが発生します。

モデルで、選択された解像度に対応する .emdl ファイルが指定されていなければ、その解像度は変更されません。解像度を変更するための別の方法として、現在不要なモデルをオフロードすることもできます。「リファレンス モデルをオフロードする」を参照してください。解像度を変更するときに指定したパスでモデル ファイルが見つからない場合、モデルは自動的にオフロードされます。

注:リファレンス モデルの解像度を変更した場合、元に戻すことはできません。

リファレンス モデルの解像度を変更するには

  • 次のいずれかの操作を実行します。

    • 目的のモデルを選択し、[モデル]ツールバーの[修正](Modify) [モデル](Model) [解像度の設定](Set Resolution)サブメニューから、[第 1 解像度](First Resolution)[第 2 解像度](Second Resolution)、または[第 3 解像度](Third Resolution)を選択します。

      または

    • モデルのプロパティ ページで、目的の解像度の[アクティブ](Active)列をクリックします。

すべてのリファレンス モデルの解像度を変更するには

  • 何も選択していない状態で、[モデル]ツールバーの[修正](Modify) [モデル](Model) [解像度の設定](Set Resolution)サブメニューから項目を選択します。

リファレンス モデルをオフロードする

リファレンス モデルがオフロードされると、外部ファイル内のデータはシーンに表示されません。これはモデルに対して直接作業していない場合に、メモリの必要量を減らし、反応速度を上げ、シーンのビューを簡略化するのに役立ちます。再びそのモデルでの作業が必要となったときは、解像度を再変更するだけですみます。「解像度を変更する」を参照してください。オフロードされたモデルは、Explorer 内で白いシルエットの人型アイコンで表示されます。3D ビューにはモデルのルート ヌルは表示されません。

特定のリファレンス モデルをオフロードするには

  • 次のいずれかの操作を実行します。

    • 希望のモデルを選択し、[モデル]ツールバーから[修正](Modify) [モデル](Model) [解像度の設定](Set Resolution) [オフロード](Offloaded)を選択します。

      または

    • モデルのプロパティ ページで、目的の解像度の[アクティブ](Active)列をクリックします。

すべてのリファレンス モデルをオフロードするには

  • モデルが選択されていない状態で、[修正](Modify) [モデル](Model) [解像度の設定](Set Resolution) [オフロード](Offloaded)を選択します。

リファレンス モデルを変更およびアニメートする

リファレンス モデルに対して実行できない変更

リファレンス モデルのエレメントに対して実行できる操作には、いくつかの制限があります。リファレンス モデルが読み込まれると、そのエレメントはリファレンス モデル独自の方法に従ってロックされます。つまり、以下のような操作は行えません。

  • モデル階層からオブジェクトを追加または削除する。

  • 元のモデルに存在していたクラスタ内のコンポーネントを追加または削除する。

  • モデル内のオブジェクトのコンストラクション スタックにトポロジ モディファイアを追加する。

  • ジオメトリ スタック(デフォーメーション、トポロジ変更)、エンベロープ ウェイト スタック、テクスチャ投影スタックなど、オペレータ スタック内のオペレータを削除する。

  • 既存のプロパティを削除したり、共有プロパティをローカルにする。

  • モデルのライブラリにある既存のマテリアルでシェーダを接続または接続解除する。

  • [向きにデフォームをリンク]の適用などによって、新しいシェイプ ソースを作成する。もちろん、Animation Mixer 内の既存のシェイプ ソースのクリップを使用してアニメートすることも引き続き可能です。

  • モデル内のオブジェクトからカーブを複製または抽出したり、ポリゴンを抽出する。

  • リファレンス モデル内のライトにボリューミック プロパティをアタッチする。つまり、ライトをボリューミックにすることはできません。

  • リファレンス モデルのクラスタ、クラスタ プロパティ、またはカスタム プロパティの名前を変更する。

  • リファレンス モデル内の ICE ツリーのノードを接続または接続解除する。

シーンまたは別のモデル内のオブジェクトをリファレンス モデルのライブラリ内のマテリアルに適用する場合、マテリアルがシーンの既定ライブラリ内で複製され、オブジェクトは複製されたマテリアルに適用されます。

リファレンス モデルに対して実行できる変更

一方、それ以外は何でも変更できます。たとえば、次のことができます。

  • ルートを含む、モデル階層内の任意のオブジェクトの変換を変更およびアニメートする。

  • モデル階層内の任意のオブジェクトにある、既存のプロパティまたはオペレータ内の任意のパラメータを変更およびアニメートする。パラメータに白い開いたロック アイコンが表示されており、修正およびアニメートがまだ可能であることを示しています。しかし、モデル内のエレメントにユーザ ロックがある場合は、修正はできません。

    他のオブジェクトを含んでいるエクスプレッションおよびコンストレイントは、名前で解決されます。シーンの他のオブジェクトの名前を変更する場合、デルタではエクスプレッションおよびコンストレイントは自動的には更新されません。

    テーパ オペレータやバルジ オペレータなど、既存のオペレータのプロファイル カーブに対する変更は格納されず、モデルの更新時に失われることに注意してください。

  • モデル階層内の任意のオブジェクトに新しいプロパティ、たとえばカスタム パラメータ セットを適用する。

  • リファレンス モデル内のオブジェクトに新しいマテリアルを作成する。

  • 新しいクラスタを作成する。

  • テクスチャ UV 座標、頂点カラー、ウェイト マップ、エンベロープ ウェイト プロパティなど、新しいクラスタ プロパティを作成する。クラスタ プロパティは、新しいクラスタ、または元のモデルに存在していたクラスタに作成できます。

    リファレンス モデルに追加されたクラスタ プロパティをフリーズすると、オペレータが削除され、最終的な値がデルタに保存されます。

    リファレンス モデルに追加されたクラスタおよびクラスタ プロパティは、単一解像度でのみ動作するように設計されています。ジオメトリのトポロジが同じ場合に限り複数の外部モデル ファイルを使用することができます。「トポロジが同じ」とは、複製の場合などに、コンポーネントの数が同じで、インデックスが同じ順番で並んでいる状態を指します。異なるトポロジの解像度に切り替えた場合、クラスタ プロパティの接続が解除されますが、正しいトポロジの解像度に戻ると再接続されます。

  • コンストラクション スタックにデフォーメーション オペレータと ICE ツリーを追加する。これには、新しいクラスタや既存のクラスタに対するデフォーメーションや、他のオブジェクトにリンクされているデフォーメーション(ラティス、ウェーブ、クラスタ センターなど)が含まれます。

  • ウェイト マップおよびエンベロープ ウェイトのペイントやスムージング、テクスチャ UV 座標の修正など、クラスタ プロパティのスタックにオペレータを追加する。UV の修正は、モデルがオフロードされるとフリーズされることに注意してください(解像度を切り替える前やシーンを閉じる前など)。

  • リファレンス モデルに追加されたオペレータ、クラスタ、プロパティ、およびクラスタ プロパティを削除する。削除されたアイテムは、デルタから削除されます。

  • モデル内のオブジェクトをセレクティブ ライトと関連付ける、またはモデル内のライトを他のオブジェクトと関連付ける。

  • テクスチャで使用されているイメージなど、ソースとクリップのプロパティを変更する。

  • モデルのエレメントをグループ、レイヤ、およびパーティションへ追加する。

Softimage では、どのタイプのローカルな変更を保存するかを指定できます。リファレンス モデルが更新された後で、指定した変更がオーバーライドのように再適用されます。ある特定のタイプの変更を保存しないように選択した場合は、外部モデル ファイルのデータが使用され、シーンに加えた変更内容が失われます。

変更はモデルのデルタ内に保存されます。同じデルタが、すべての解像度で加えられた変更に使用されます。

変更はモデル内のオブジェクトの名前に基づいて再適用されます。つまり、元のモデル内のオブジェクト名を変更して再度書き出した場合、そのモデルを参照するシーンでは変更が再適用されません。同様に、解像度ごとにオブジェクトの名前が異なる場合も、変更は再適用されません。

注:モデル内部でオブジェクトの複写や複製はできません。さらに、ポリゴンの抽出のような、リファレンス モデル内部のオブジェクトにクラスタを作成する操作は実行できません。

保存するローカルの変更タイプを指定するには

  • [デルタ]プロパティ エディタ(モデル ルートの下にあります)の[一般]タブで、[記録される/適用される修正点](Recorded/Applied Modifications)の下にある項目を必要に応じて選択します。

    • [スタティック位置とその他パラメータ値](Static Pos and Other Parameter Values)は、変換を含む、アニメートされないパラメータ値に対するすべての変更を保存します。ボーンの移動は、IK でも FK でもないため、ポッピングを回避するためにデルタによって記録されることはありません。

    • [F カーブ](FCurves)は、新規のキー、変更されたキー、または削除されたキーを含む、ファンクション カーブに関する変更を保存します。

    • [エクスプレッション](Expressions)は、エクスプレッションおよび追加、変更または削除されたリンクされたパラメータを含むエクスプレッションに関連する、すべての変更を保存します。

      リファレンス モデル内のエレメントを含む一方で、シーン内のエレメントに適用されるエクスプレッションは、シーン自体に保存されることに注意してください。これらのエクスプレッションは、モデルの現在の解像度に適切な名前で存在するエレメントがある限り、有効です。

    • [コンストレイント](Constraints)は、モデル内部のオブジェクト上で追加、変更、または削除された、あらゆる制約を保存します。

      モデル外部にあるオブジェクトのモデル内部にあるオブジェクトへの制約は、常に保存されることに注意してください。これらの制約は、モデルの現在の解像度に適切な名前で存在するエレメントがある場合にアクティブになります。

    • [Animation Mixer] は、トラック上のクリップの配置やウェイト配分など、モデルの Animation Mixer の変更を保存します。このオプションがオンの場合は、保存する[ミキサ変更](Mixer Modifications)のタイプを、[アニメーション](Animation)[シェイプ](Shapes)、または[オーディオ](Audio)から選択できます? これらのサブオプションのいずれかをオンにして同じタイプの新しいソースを再度書き出す場合は、リファレンス モデルからは新しいソースを参照できなくなることに注意してください。

    • [グループ関係](Group Relations)は、グループ、レイヤ、パーティションのメンバーシップの変更内容を保存します。<hbreak/>

    • [モデルのインスタンス](Model Instances)は、モデルのインスタンスの変更内容を保存します。

    • [外部接続](External Connections)は、シーンやその他のモデル内のオブジェクトへの接続(エンベロープ、セレクティブ ライト、リジッド ボディ環境、シーン ライブラリ内のマテリアルへの割り当て)を保存します。リファレンス モデル内のライトへのシーンのオブジェクトの関連付けは変更できません。

    • [新規プロパティ](New Properties)は、カスタム パラメータ セットなど、モデル階層内のオブジェクトに追加されたすべての新しいプロパティを保存します。

    • [クラスタ](Clusters)は、新しいクラスタをすべて保存します。

      コンポーネントを追加または削除することによって、既存のクラスタを修正することはできません。

    • [クラスタ プロパティ](Cluster Properties)は、新しいテクスチャ UV 座標、頂点カラー、ウェイト マップ、およびエンベロープ ウェイト プロパティをすべて保存します。

      このオプションではペイント オペレータは保存されません。ペイント オペレータを保存するには、次の[オペレータ](Operators)オプションを使用してください。

    • [オペレータ](Operators)は、新しいオペレータを保存します。これには、デフォーメーションやスクリプト オペレータに加え、エンベロープ ウェイト、ウェイト マップ、および頂点カラー上のペイント オペレータが含まれます。

    重要:このオプションを非アクティブにすると、新しい変更はデルタに記録されません。既存の変更はそのまま格納され、モデルの更新時に再度適用されます。

リファレンス モデルを更新する

リファレンス モデルを更新する場合、Softimage は外部ファイル内のデータを再読み込みし、保存されたローカル修正をデルタから再適用して、指定されたイベントを実行します。

リファレンス モデルは以下の状況では自動的に更新されます。

  • シーンを開いたとき。

  • アクティブな解像度を変更したとき。「解像度を変更する」を参照してください。

  • アクティブな解像度で別のモデル ファイルを指定したとき。

また、リファレンス モデルを手動で更新することもできます。

リファレンス モデルを手動で更新する

リファレンス モデルを手動で更新すると、たとえば別のユーザがファイルを再度書き出したときに、新しいバージョンをすぐに使用する場合に便利です。

  • 次のいずれかの操作を実行します。

    • モデルのルートを選択し、[モデル]ツールバーから[修正](Create) [モデル](Model) [リファレンス モデルの更新](Update Referenced Model)を選択します。

      または

    • Explorer でモデルのルートを右クリックし、[モデル](Model) [リファレンス モデルの更新](Update Referenced Model)を選択します。

      または

    • [Alt]キーを押しながら、Schematic View または 3D ビューのモデルのルートを右クリックして(Linux では[Ctrl]+[Alt]キーを押しながら右クリック)、[リファレンス モデルの更新](Update Referenced Model)を選択します。

    注:リファレンス モデルを更新した場合、元に戻すことはできません。

デルタを操作する

デルタは、リファレンス モデルおよびその子として関連付けられたリファレンス モデルのすべての解像度の変更内容を保存します。デルタは、手動で書き出し、読み込み、および適用できます。まだ、デルタおよびデルタ内のアイテムを編集または削除することも、デルタのターゲット モデルを変更することもできます。デルタに保存されたアイテムは、オブジェクトおよびパラメータの名前によって解決されます。

外部デルタを使用する

外部デルタは、リファレンス モデルへの変更内容をバイナリ フォーマットで保存します。既定では、現在のプロジェクトの Deltas サブディレクトリに保存されます。

  1. [Delta]プロパティ エディタの[アドバンス]タブで、[ストレージ](Storage)[外部](External)に設定します。

  2. 必要に応じて、既定の[ファイル名](File Name)を変更します。

  3. シーンを保存します。

    その後モデルに加える変更内容は、シーンを保存するタイミングに関係なく、外部デルタ ファイルに保存されます。

    重要:外部デルタを使用するシーンを開いても、自動的には適用されません。[Delta]プロパティ エディタの[アドバンス]タブを表示すると、[ステータス](Status)[オフロード](Offloaded)に設定されています。デルタを再適用するには、[ステータス](Status)[ロード済み](Loaded)に変更し、[Delta の適用](Apply Delta)をクリックします。デルタがオフロードされている間にモデルに加えた変更内容は保存されず、モデルが再び更新されると失われます。

デルタを書き出す

内部デルタを書き出して、別のシーンに読み込むことができます。モデルで外部デルタを使用している場合は、書き出す必要はありません。単に別のシーンで外部デルタを読み込みます(ただし、複数のシーンのモデルが同じ外部デルタを共有している場合は、1 つのシーンに加えられた変更内容が他のシーンにも影響します)。

  1. 書き出すデルタを選択します。

  2. [モデル]ツールバーから[修正](Modify) [モデル](Model) [Delta の書き出し](Export Delta)を選択します。

  3. 場所とファイル名を指定し、[OK]をクリックします。

    元の内部デルタは、そのまま内部に残ります。その後モデルに変更を加えても、外部デルタ ファイルは影響を受けません。外部デルタ ファイルを更新するには、再度書き出す必要があります。

デルタを読み込む

デルタを読み込むと、リファレンス モデルに加えられた変更内容を、あるシーンから別のシーンに転送できます。

  1. リファレンス モデルを選択します。

  2. [モデル]ツールバーから[修正](Modify) [モデル](Model) [Delta の読み込み](Import Delta)を選択します。

  3. ブラウザを使用して前に書き出したデルタ ファイルを選択し、[OK]をクリックします。

    デルタが自動的に適用されます。既定では、デルタは内部に保存されます。デルタ ファイルに加えた変更内容は、外部ストレージを使用するようにデルタを変更しない限り、モデルには影響しません。

    選択したモデルに既にデルタがある場合は、新しいデルタを適用するかどうかを確認するメッセージが表示されます。適用する場合は、既存のモデルのターゲットの設定が解除されます。適用しない場合は、デルタが読み込まれますが、ターゲットは設定されません。

デルタ内のアイテムを編集する

モデルのデルタを直接編集するには、Explorer でデルタの下に保存されているいずれかのノードのプロパティ エディタを開き(たとえば、StoredPositions、StoredFCurves、マテリアル オーバーライドなど)、値を変更するか、各アイテムのアクティブ/非アクティブを切り替えるか、各アイテムを削除します。また、関連付けられている変更内容を保持しない場合は、これらのノードを削除することもできます。変更を加えたら、[Delta]プロパティ エディタの[アドバンス]タブで[Delta の適用](Apply Delta)をクリックするか、モデルを更新することによって、その影響を確認できます。

デルタのターゲットを変更する

デルタのターゲットは、デルタの影響を受けるモデルです。デルタが階層内のどの位置にあるかに関係なく、どのモデルもデルタのターゲットになることができます。ターゲットを変更するには、[Delta]プロパティ エディタの[一般]タブにある[ターゲット](Target)パラメータに別のモデル名を入力するだけです。デルタのターゲット モデル名は、Explorer でデルタ名の後ろに表示されます。

複数のデルタを使用する

複数のデルタは、プロパティ エディタの[アクティブ](Active)パラメータを使用して管理できます。モデルにアクティブなデルタがない状態で変更を加えると、新しいデルタが作成されます。または、[モデル]ツールバーで[修正](Modify) [モデル](Model) [空の Delta を追加](Add Empty Delta)を選択して、新しいデルタを作成することもできます。モデルに適用されるデルタをコントロールするには、[アクティブ]のオン/オフを切り替えます。デルタを非アクティブにした後で、モデルを更新し、モデルに含まれているアニメーションすべてのエフェクトを取り除く必要があることに注意してください。

イベントを使用する

イベントでは、リファレンス モデルの更新中の特定の時間に実行する操作を自動化することができます。モデルのプロパティ エディタで、実行するイベントを指定できます。

  • [RefModelModSave]: モデルの更新、モデルのオフロード、解像度の切り替え、またはシーンの保存が行われたときは常に、モデルがアンロードされてローカルの変更が保存される前に実行されます。

  • [BeginRefModelModLoad]: モデル ファイルが読み込まれた後、デルタが適用される前に実行されます。

  • [EndRefModelModLoad]: デルタが適用された後に実行されます。

システムにインストールされた使用可能なイベントを、ドロップダウン リストから選択できます。[編集](Edit)をクリックすると、対応するスクリプト ファイルを Script Editor で修正できます。[イベント ウィザード](Events wizard)をクリックすると、新しいイベントを定義するためのテンプレートを作成できます。

重要:PostLoad および PreModSave スクリプトを使用する、旧バージョンの Softimage から特定のシーンを初めて開くときに、これらのスクリプトが実行されます。その後、イベントを作成してこれらのスクリプトの機能を実行する必要があります。

リファレンス モデルをローカル モデルに変換する

リファレンス モデルをローカル モデルに変換できます。これによって外部ファイルとのリンクが切断され、シーンのローカル モデルは外部ファイルへの変更の影響を受けなくなります。

  • リファレンス モデルを選択し、[モデル]ツールバーで[修正](Modify) [モデル](Model) [リファレンス モデルをローカルにする](Make Referenced Model)を選択します。

    既にシーンに存在するマテリアルがリファレンス モデルに含まれていることが認識された場合、それをコピーするか共有するかを確認するプロンプトが表示されます。このため、マテリアル名が同じで、さらに同じ番号とシェーダ タイプが同じ順序で存在する場合は、同じマテリアルであると判断されます。パフォーマンス上の理由から、パラメータ値は確認されません。

    • [コピー](Copy)をクリックして、マテリアルのコピーを変換されたモデルに作成し、適用します。シェーダに異なるパラメータが設定されている場合は、常にマテリアルのコピーを作成してください。

    • [共有](Share)をクリックして、シーン内の既存のマテリアルを使用します。

    [すべての衝突するマテリアルに適用](Apply to all conflicting materials)をアクティブにして、モデル内の各マテリアルの異なるプロンプトを回避します。

リファレンス モデルに変更を適用する

リファレンス モデルに変更を適用すると、デルタに保存された変更内容が、外部モデル ファイルに再保存されます。これによって、リファンレス モデルに簡単に変更を追加できます。元のシーンから再度モデルを書き出す必要はありません。

  1. モデルのルート ノードを選択します。

  2. [モデル]ツールバーから[修正](Modify) [モデル](Model) [アドバンス](Advanced) [リファレンスに記録](Commit to Reference)を選択します。

    注:このコマンドは、.emdl ファイルとして保存されたモデルに対してのみ有効です。

リファレンス モデルの操作のヒントと注意点

ここで、特定の状況でリファレンス モデルを操作する場合のヒントと注意点をいくつか紹介します。

外部接続: エンベロープ、コンストレイントなど

デフォーマとエンベロープは、異なるモデルに設定できます。同じことが、他のタイプのデフォーマ(ラティス、ウェーブ)とデフォーメ、またコンストレイント オブジェクトと被コンストレイント オブジェクトについても言えます。

この場合、2 つの設定方法があります。

  • 最も簡単な方法は、2 つのモデル間にコンストレイント、エンベロープ、他のデフォーメーションなどを適用する前に、それらのモデルを書き出すことです。両方のリファレンス モデルをシーンに読み込み、オペレータを適用します。このようにして接続をデルタに保存すると、シーンをロードするたびに適切に再接続されるようになります。

    また、両方のモデルを別のモデル内に配置して、そのモデルを書き出すこともできます(「ネストされたリファレンス モデルを使用する」を参照)。これによって、同じシーン内に両方の子モデルの複数のコピーを置くことができます。最上位モデルの複数の解像度を設定することもできます。たとえば、異なるリグにエンベロープされた複数のジオメトリなどです。

  • デフォーメーション関係またはコンストレイントが書き出し前の元のローカル モデル間に存在していた場合は、最初にそのデフォーマまたはコンストレイント オブジェクトを含むモデルを新しいシーンに読み込む必要があります。この操作を行わない場合、もう一方のモデルが読み込まれたときに、接続先となるモデルが存在しなくなってしまいます。モデルが読み込まれる順序は保存され、シーンを再度開くときに再利用されます。

    ジオメトリ モデルの複数の解像度を使用している場合、これらを書き出す前にすべて、同じローカルのデフォーマ モデルにデフォームする必要があります。同様に、被コンストレイント オブジェクトを含むすべての解像度は、書き出す前に同じローカル モデル内のオブジェクトに拘束する必要があります。

    同一のシーンでモデルの複数のコピーを使用する場合(リグのコピーにそれぞれエンベロープされたジオメトリの 2 つのコピーを使用する場合など)は、ジオメトリ モデルの[モデル]プロパティにある[再接続するモデル](Models to Reconnect to)に適切なデフォーマのリグの名前を入力します。

    エンベロープのウェイト配分の変更など、エンベロープを修正する場合は、まずエンベロープとデフォーマを新しいシーンにローカル モデルとして読み込みます。その後、ウェイトを変更し、再度書き出します。

どちらの方法でも、デフォーマ モデルをオフロードしてから再ロードする場合などに、接続が一時的に切断されることがあります。その場合は、他方のモデルを更新するだけで、接続が自動的に回復します。

ネストされたリファレンス モデルを使用する

リファレンス モデルは、必要な深さまで、互いにネストさせることができます(ただし、循環リファレンスを作成することはできません)。

リファレンス モデルの階層には何も追加できないため、リファレンス モデルをネストさせるには、以下の一般的な手順を実行する必要があります。

  1. 最下位モデルを作成し、リファレンス モデルに変換するか、書き出して別のシーンに読み込みます。

  2. 複数の解像度が必要な場合は、次の手順に進む前にすべて追加しておきます。必要に応じて、解像度を追加し、いったんパスを空にして、後でパスを指定することもできます。新しいパスはデルタに保存され、必要に応じてコミットすることができます。

  3. 次のいずれかの操作を実行します。

    • ローカル モデルを作成し、最下位モデルまたは必要なその他のオブジェクトの親に指定してから、その親を変換するか書き出します。

      または

    • モデルおよび必要なその他のオブジェクトを選択し、[モデル]ツールバーから[作成](Create) [モデル](Model) [新規リファレンス モデル](New Referenced Model)を選択します。

  4. ネストの複数のレベルについて、この手順を繰り返します。

    モデルがネストされると、各モデルに個別のデルタが使用され、すべてのデルタが最上位のモデルの直下に保存されます。モデルがネストされたときに既にデルタが設定されていた場合、更新時にこれらの変更内容が親のデルタの前に再適用されますが、新しい変更内容は親モデルのデルタに保存されます。

リファレンス モデルとマテリアル

モデルを読み込むと、モデルのマテリアルが ModelName_DefaultLib_Ref というライブラリに追加されます。このライブラリはロックされており、以下の操作を行うことができません。

  • マテリアルをライブラリに追加またはライブラリから削除する。

  • ライブラリにあるマテリアルのシェーダとテクスチャを接続、または接続解除する。

マテリアルをシーンからリファレンス モデル内のオブジェクトおよびクラスタに適用することはできます。ただし、シーンまたは別のモデル内のオブジェクトをリファレンス モデルのライブラリ内のマテリアルに適用する場合、マテリアルがシーンの既定ライブラリ内で複製され、オブジェクトは複製されたマテリアルに適用されます。

イメージ クリップとリファレンス モデル

シーンに保存されたイメージ クリップは、リファレンス モデルのオブジェクトによる共有が可能です。リファレンス モデルに保存されたイメージ クリップは、シーンのオブジェクトによる共有はできませんが、他のリファレンス モデルのオブジェクトによる共有は可能です。

リファレンス モデルを読み込んだときに、同じクリップが他のリファレンス モデルに存在する場合、Softimage で自動的にイメージ クリップが共有されます。2 つのクリップで同一のイメージ ソースおよびパラメータ値を共有しており、アニメーションを持たない場合、それらのクリップは同じものとみなされます。イメージ ソースは常に共有されます。

リファレンス モデルとリジッド ボディ

リファレンス モデルでオブジェクトベース(ICE 以外)のリジッド ボディを使用するには、モデルを外部ファイルに書き出す前に、オブジェクトをアクティブ ボディまたはパッシブ ボディにする必要があります。リファレンス モデルを別のシーンに読み込んだら、リジッド ボディを必要な環境に適用することができます。

同じパラメータ上の複数のアニメーション ソース

デルタに同じパラメータの複数のアニメーション ソースが保存されている場合、ソースが必要な順序で適用されないことがあります。たとえば、F カーブ アニメーションとコンストレイントが同じ位置にある場合、最初にコンストレイントが適用され、次に F カーブが適用されることがあります。その結果、コンストレイントがデルタに保存されているにもかかわらず、コンストレイントが適用されていないように見えます。

この状況では、デルタから位置の F カーブを削除すれば、コンストレイントに干渉することはありません。または、次に適用される別のデルタにコンストレイントを配置することもできます。

ミキサ項目上のエクスプレッション

既定では、シェイプ ウェイト パラメータなどのミキサ項目上のエクスプレッションは、デルタにコピーされます。多くの場合これには何の支障もありませんが、リファレンス モデルを複製する場合、複製のパラメータは元のリファレンス モデルの値によって操作されます。さらに、ミキサ項目上のエクスプレッションはモデルの名前を変更すると壊れる可能性があります。

これは、書き出す前に元のモデル内でエクスプレッションをロックすることによって回避できます。「シーン エレメントをロックおよびタグ付けする」を参照してください。また、リファレンス モデルのデルタを、ミキサ項目への変更を記録しないように設定する必要もあります。

ウェイト マップとリファレンス モデル

コンストラクション スタックに[ウェイト ペインター]オペレータを持つウェイト マップを使用したリファレンス モデルを書き出した場合、そのモデルを更新すると、新しいペイント ストロークはすべて失われます。これを回避するには、モデルを書き出す前にウェイト マップをフリーズします。

SDK のサンプル: XSI アセット記述言語

SDK のサンプル ワークグループには XSIA アドオンが含まれています。このアドオンは、XML ファイル フォーマットを使用して、シーンの集計データのユーザ独自のインポータ/エクスポータの記述を例示します。詳細については、「XSIA インポータ/エクスポータ」(『SDK ガイド』)を参照してください。