リファレンス モデルは、Softimage で作成され書き出されていますが、実際のところシーン ファイルには組み込まれていないモデルです。名前が示すように、リファレンス モデルは、お使いのハードディスクやネットワークなどの別の場所から参照されます。書き出しモデルに対する変更は、次にシーンを開いたとき、または参照を更新したときに反映されます。
たとえば、さまざまなシーンで使用する車をモデリングしているとします。詳細が完成する前に、他のアニメータがその車を使って、別のコンピュータでアニメート作業を開始する必要があるとします。車を [porsche.emdl] として書き出すと、アニメータはこれを自分のシーンに読み込めて、それと平行してモデリング作業も継続できます。車のモデリングが終了したら、モデルを再度書き出すことができます。これで、アニメータがシーンを再ロードしたりリファレンス モデルを更新すると、モデリング作業での変更はすべて自動的にシーンの車に反映され、モデルに適用したアニメーションは保持されます。
リファレンス モデルを使用すると、異なる詳細レベルで作業することもできます。アニメートで速い反応を得るために低解像度のモデルを、より精密なプレビューのために中解像度のモデルを、そして最終結果のために高解像度のモデルを使用できます。
リファレンス モデルは、外部ファイルへの 1 つまたは複数の参照から構成されています。.emdl ファイルに加えて、dotXSI(.xsi)ファイルおよび Collada(.dae または .xml)ファイルをリファレンス モデルとしてインポートできます。ソースをこれらのフォーマットで保持する場合は、この方法が便利です。
1 つのリファレンス モデルに、必要なだけの数の外部モデルへの参照を含めることができます。これによって、モデルに複数の解像度を定義することができます。
1 つのシーンのリファレンス モデル内のオブジェクトに加えた変更は、モデルのデルタに保存されます。同じデルタがすべての解像度によって共有されると、別の解像度にあるオブジェトおよびパラメータの名前が一致します。
リファレンス モデルは Explorer では白い人のアイコンで示されます。このノードの既定名は外部ファイルの名前によって異なりますが、必要に応じて変更できます。アクティブな解像度の名前は、モデル名の後ろに角括弧で囲まれて表示されます。デルタのターゲット モデル名は、デルタ名の後ろに表示されます。
リファレンス モデルを作成するには、既存の外部ファイルを読み込むか、「所定の位置にある」ローカル モデルを変換します。
バージョン 3.6 以前の .xsi ファイルを読み込む場合は、最初に .xsi 読み込みオプションを設定できます。
オプションを設定するには、Explorer のスコープを[アプリケーション]に設定し、[データ]フォルダを展開して[.xsi Import Options]ノードをクリックします。特定のオプションの詳細については、「[dotXSI 読み込みオプション]ダイアログ ボックス」(「プロパティ リファレンス」)を参照してください。
メイン メニューから[ファイル](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 ファイルをフォルダ ウィンドウからドラッグすることもできます。
1 つのモデルで、必要なだけの数の外部ファイル(「解像度」)を参照できます。たとえば、同じモデルの 3 つの解像度(低解像度、中解像度、高解像度)を設定し、作業中にこれらを切り替えることができます。一度にアクティブにできる解像度は 1 つだけです。
保存するように選択したローカルでの修正が再適用されます。「リファレンス モデルを変更およびアニメートする」を参照してください。
更新処理中に、適切なタイミングで指定されたイベントが実行されます。「イベントを使用する」を参照してください。
モデルで、選択された解像度に対応する .emdl ファイルが指定されていなければ、その解像度は変更されません。解像度を変更するための別の方法として、現在不要なモデルをオフロードすることもできます。「リファレンス モデルをオフロードする」を参照してください。解像度を変更するときに指定したパスでモデル ファイルが見つからない場合、モデルは自動的にオフロードされます。
リファレンス モデルがオフロードされると、外部ファイル内のデータはシーンに表示されません。これはモデルに対して直接作業していない場合に、メモリの必要量を減らし、反応速度を上げ、シーンのビューを簡略化するのに役立ちます。再びそのモデルでの作業が必要となったときは、解像度を再変更するだけですみます。「解像度を変更する」を参照してください。オフロードされたモデルは、Explorer 内で白いシルエットの人型アイコンで表示されます。3D ビューにはモデルのルート ヌルは表示されません。
リファレンス モデルのエレメントに対して実行できる操作には、いくつかの制限があります。リファレンス モデルが読み込まれると、そのエレメントはリファレンス モデル独自の方法に従ってロックされます。つまり、以下のような操作は行えません。
ジオメトリ スタック(デフォーメーション、トポロジ変更)、エンベロープ ウェイト スタック、テクスチャ投影スタックなど、オペレータ スタック内のオペレータを削除する。
[向きにデフォームをリンク]の適用などによって、新しいシェイプ ソースを作成する。もちろん、Animation Mixer 内の既存のシェイプ ソースのクリップを使用してアニメートすることも引き続き可能です。
リファレンス モデル内のライトにボリューミック プロパティをアタッチする。つまり、ライトをボリューミックにすることはできません。
シーンまたは別のモデル内のオブジェクトをリファレンス モデルのライブラリ内のマテリアルに適用する場合、マテリアルがシーンの既定ライブラリ内で複製され、オブジェクトは複製されたマテリアルに適用されます。
一方、それ以外は何でも変更できます。たとえば、次のことができます。
モデル階層内の任意のオブジェクトにある、既存のプロパティまたはオペレータ内の任意のパラメータを変更およびアニメートする。パラメータに白い開いたロック アイコンが表示されており、修正およびアニメートがまだ可能であることを示しています。しかし、モデル内のエレメントにユーザ ロックがある場合は、修正はできません。
他のオブジェクトを含んでいるエクスプレッションおよびコンストレイントは、名前で解決されます。シーンの他のオブジェクトの名前を変更する場合、デルタではエクスプレッションおよびコンストレイントは自動的には更新されません。
テーパ オペレータやバルジ オペレータなど、既存のオペレータのプロファイル カーブに対する変更は格納されず、モデルの更新時に失われることに注意してください。
テクスチャ 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/>
[外部接続](External Connections)は、シーンやその他のモデル内のオブジェクトへの接続(エンベロープ、セレクティブ ライト、リジッド ボディ環境、シーン ライブラリ内のマテリアルへの割り当て)を保存します。リファレンス モデル内のライトへのシーンのオブジェクトの関連付けは変更できません。
[新規プロパティ](New Properties)は、カスタム パラメータ セットなど、モデル階層内のオブジェクトに追加されたすべての新しいプロパティを保存します。
[クラスタ プロパティ](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)を選択します。
デルタは、リファレンス モデルおよびその子として関連付けられたリファレンス モデルのすべての解像度の変更内容を保存します。デルタは、手動で書き出し、読み込み、および適用できます。まだ、デルタおよびデルタ内のアイテムを編集または削除することも、デルタのターゲット モデルを変更することもできます。デルタに保存されたアイテムは、オブジェクトおよびパラメータの名前によって解決されます。
内部デルタを書き出して、別のシーンに読み込むことができます。モデルで外部デルタを使用している場合は、書き出す必要はありません。単に別のシーンで外部デルタを読み込みます(ただし、複数のシーンのモデルが同じ外部デルタを共有している場合は、1 つのシーンに加えられた変更内容が他のシーンにも影響します)。
デルタを読み込むと、リファレンス モデルに加えられた変更内容を、あるシーンから別のシーンに転送できます。
[モデル]ツールバーから[修正](Modify) [モデル](Model) [Delta の読み込み](Import Delta)を選択します。
ブラウザを使用して前に書き出したデルタ ファイルを選択し、[OK]をクリックします。
デルタが自動的に適用されます。既定では、デルタは内部に保存されます。デルタ ファイルに加えた変更内容は、外部ストレージを使用するようにデルタを変更しない限り、モデルには影響しません。
選択したモデルに既にデルタがある場合は、新しいデルタを適用するかどうかを確認するメッセージが表示されます。適用する場合は、既存のモデルのターゲットの設定が解除されます。適用しない場合は、デルタが読み込まれますが、ターゲットは設定されません。
モデルのデルタを直接編集するには、Explorer でデルタの下に保存されているいずれかのノードのプロパティ エディタを開き(たとえば、StoredPositions、StoredFCurves、マテリアル オーバーライドなど)、値を変更するか、各アイテムのアクティブ/非アクティブを切り替えるか、各アイテムを削除します。また、関連付けられている変更内容を保持しない場合は、これらのノードを削除することもできます。変更を加えたら、[Delta]プロパティ エディタの[アドバンス]タブで[Delta の適用](Apply Delta)をクリックするか、モデルを更新することによって、その影響を確認できます。
デルタのターゲットは、デルタの影響を受けるモデルです。デルタが階層内のどの位置にあるかに関係なく、どのモデルもデルタのターゲットになることができます。ターゲットを変更するには、[Delta]プロパティ エディタの[一般]タブにある[ターゲット](Target)パラメータに別のモデル名を入力するだけです。デルタのターゲット モデル名は、Explorer でデルタ名の後ろに表示されます。
複数のデルタは、プロパティ エディタの[アクティブ](Active)パラメータを使用して管理できます。モデルにアクティブなデルタがない状態で変更を加えると、新しいデルタが作成されます。または、[モデル]ツールバーで[修正](Modify) [モデル](Model) [空の Delta を追加](Add Empty Delta)を選択して、新しいデルタを作成することもできます。モデルに適用されるデルタをコントロールするには、[アクティブ]のオン/オフを切り替えます。デルタを非アクティブにした後で、モデルを更新し、モデルに含まれているアニメーションすべてのエフェクトを取り除く必要があることに注意してください。
イベントでは、リファレンス モデルの更新中の特定の時間に実行する操作を自動化することができます。モデルのプロパティ エディタで、実行するイベントを指定できます。
システムにインストールされた使用可能なイベントを、ドロップダウン リストから選択できます。[編集](Edit)をクリックすると、対応するスクリプト ファイルを Script Editor で修正できます。[イベント ウィザード](Events wizard)をクリックすると、新しいイベントを定義するためのテンプレートを作成できます。
リファレンス モデルをローカル モデルに変換できます。これによって外部ファイルとのリンクが切断され、シーンのローカル モデルは外部ファイルへの変更の影響を受けなくなります。
リファレンス モデルを選択し、[モデル]ツールバーで[修正](Modify) [モデル](Model) [リファレンス モデルをローカルにする](Make Referenced Model)を選択します。
既にシーンに存在するマテリアルがリファレンス モデルに含まれていることが認識された場合、それをコピーするか共有するかを確認するプロンプトが表示されます。このため、マテリアル名が同じで、さらに同じ番号とシェーダ タイプが同じ順序で存在する場合は、同じマテリアルであると判断されます。パフォーマンス上の理由から、パラメータ値は確認されません。
[すべての衝突するマテリアルに適用](Apply to all conflicting materials)をアクティブにして、モデル内の各マテリアルの異なるプロンプトを回避します。
リファレンス モデルに変更を適用すると、デルタに保存された変更内容が、外部モデル ファイルに再保存されます。これによって、リファンレス モデルに簡単に変更を追加できます。元のシーンから再度モデルを書き出す必要はありません。
ここで、特定の状況でリファレンス モデルを操作する場合のヒントと注意点をいくつか紹介します。
デフォーマとエンベロープは、異なるモデルに設定できます。同じことが、他のタイプのデフォーマ(ラティス、ウェーブ)とデフォーメ、またコンストレイント オブジェクトと被コンストレイント オブジェクトについても言えます。
最も簡単な方法は、2 つのモデル間にコンストレイント、エンベロープ、他のデフォーメーションなどを適用する前に、それらのモデルを書き出すことです。両方のリファレンス モデルをシーンに読み込み、オペレータを適用します。このようにして接続をデルタに保存すると、シーンをロードするたびに適切に再接続されるようになります。
また、両方のモデルを別のモデル内に配置して、そのモデルを書き出すこともできます(「ネストされたリファレンス モデルを使用する」を参照)。これによって、同じシーン内に両方の子モデルの複数のコピーを置くことができます。最上位モデルの複数の解像度を設定することもできます。たとえば、異なるリグにエンベロープされた複数のジオメトリなどです。
デフォーメーション関係またはコンストレイントが書き出し前の元のローカル モデル間に存在していた場合は、最初にそのデフォーマまたはコンストレイント オブジェクトを含むモデルを新しいシーンに読み込む必要があります。この操作を行わない場合、もう一方のモデルが読み込まれたときに、接続先となるモデルが存在しなくなってしまいます。モデルが読み込まれる順序は保存され、シーンを再度開くときに再利用されます。
ジオメトリ モデルの複数の解像度を使用している場合、これらを書き出す前にすべて、同じローカルのデフォーマ モデルにデフォームする必要があります。同様に、被コンストレイント オブジェクトを含むすべての解像度は、書き出す前に同じローカル モデル内のオブジェクトに拘束する必要があります。
同一のシーンでモデルの複数のコピーを使用する場合(リグのコピーにそれぞれエンベロープされたジオメトリの 2 つのコピーを使用する場合など)は、ジオメトリ モデルの[モデル]プロパティにある[再接続するモデル](Models to Reconnect to)に適切なデフォーマのリグの名前を入力します。
エンベロープのウェイト配分の変更など、エンベロープを修正する場合は、まずエンベロープとデフォーマを新しいシーンにローカル モデルとして読み込みます。その後、ウェイトを変更し、再度書き出します。
どちらの方法でも、デフォーマ モデルをオフロードしてから再ロードする場合などに、接続が一時的に切断されることがあります。その場合は、他方のモデルを更新するだけで、接続が自動的に回復します。
リファレンス モデルは、必要な深さまで、互いにネストさせることができます(ただし、循環リファレンスを作成することはできません)。
リファレンス モデルの階層には何も追加できないため、リファレンス モデルをネストさせるには、以下の一般的な手順を実行する必要があります。
モデルを読み込むと、モデルのマテリアルが ModelName_DefaultLib_Ref というライブラリに追加されます。このライブラリはロックされており、以下の操作を行うことができません。
マテリアルをシーンからリファレンス モデル内のオブジェクトおよびクラスタに適用することはできます。ただし、シーンまたは別のモデル内のオブジェクトをリファレンス モデルのライブラリ内のマテリアルに適用する場合、マテリアルがシーンの既定ライブラリ内で複製され、オブジェクトは複製されたマテリアルに適用されます。
シーンに保存されたイメージ クリップは、リファレンス モデルのオブジェクトによる共有が可能です。リファレンス モデルに保存されたイメージ クリップは、シーンのオブジェクトによる共有はできませんが、他のリファレンス モデルのオブジェクトによる共有は可能です。
リファレンス モデルを読み込んだときに、同じクリップが他のリファレンス モデルに存在する場合、Softimage で自動的にイメージ クリップが共有されます。2 つのクリップで同一のイメージ ソースおよびパラメータ値を共有しており、アニメーションを持たない場合、それらのクリップは同じものとみなされます。イメージ ソースは常に共有されます。
リファレンス モデルでオブジェクトベース(ICE 以外)のリジッド ボディを使用するには、モデルを外部ファイルに書き出す前に、オブジェクトをアクティブ ボディまたはパッシブ ボディにする必要があります。リファレンス モデルを別のシーンに読み込んだら、リジッド ボディを必要な環境に適用することができます。
デルタに同じパラメータの複数のアニメーション ソースが保存されている場合、ソースが必要な順序で適用されないことがあります。たとえば、F カーブ アニメーションとコンストレイントが同じ位置にある場合、最初にコンストレイントが適用され、次に F カーブが適用されることがあります。その結果、コンストレイントがデルタに保存されているにもかかわらず、コンストレイントが適用されていないように見えます。
この状況では、デルタから位置の F カーブを削除すれば、コンストレイントに干渉することはありません。または、次に適用される別のデルタにコンストレイントを配置することもできます。
既定では、シェイプ ウェイト パラメータなどのミキサ項目上のエクスプレッションは、デルタにコピーされます。多くの場合これには何の支障もありませんが、リファレンス モデルを複製する場合、複製のパラメータは元のリファレンス モデルの値によって操作されます。さらに、ミキサ項目上のエクスプレッションはモデルの名前を変更すると壊れる可能性があります。
これは、書き出す前に元のモデル内でエクスプレッションをロックすることによって回避できます。「シーン エレメントをロックおよびタグ付けする」を参照してください。また、リファレンス モデルのデルタを、ミキサ項目への変更を記録しないように設定する必要もあります。