新しいエフェクトとコンテントパイプライン

今までのXNAではコンテント・パイプライン内では以下のようにしてマテリアルを読み込んでいました。

  • もし、FBXかXファイルモデルが.fxファイルを参照している場合、EffectMaterialContentとしてインポートし、ゲーム内ではカスタム・エフェクトとなります。
  • それ以外であれば、BasicMaterialContentとしてインポートして、実行時にはBasicEffectとなります。
  • BasicMaterialContnetのテクスチャ、ディフューズカラー、スペキュラ係数といったプロパティはFBXやXファイルのマテリアルの値を設定します。
  • もし、BasicEffectがサポートしていないプロパティがあった場合は、BasicMaterialContent.OpaqueDataに格納されます。このデータはカスタムプロセッサー内で使用することができます。

モデルデータがエフェクトファイルを参照していない時にカスタムエフェクトを使いたい場合は以下の二つの方法があります。

Game Studio 4.0も同じですが、新しいプロセッサー・パラメーターを追加してあり、ビルトイン・エフェクトの中から選ぶことができます(ただし、元のモデルが.fxファイルを参照していない場合)。

image

これに加えて、コンテント・パイプライン内の型として、SkinnedMaterialContent、EnvironmentMapMaterialContentなどの型が追加されています。

選択するエフェクトによって以下の追加作業をする必要があります:

  • SkinnedEffectの場合はSetBoneTransformsを呼んで現在のアニメーションステートを設定する必要があります。
  • EnvironmentMapEffectの場合は、キューブマップテクスチャを用意する必要があります。これはランタイム時か、カスタムプロセッサー内で指定できます。Default EffectプロセッサーパラメーターにEnvironmentMapEffectを指定しても、この処理はしてくれません。なぜなら、どのキューブマップテクスチャを使うのか判らないからです。
  • DualTextureEffectを使っている場合、二番目のテクスチャはFBXのマテリアル情報から自動的に取得します。もしFBXに二番目のテクスチャがない場合はランタイム時か、カスタムプロセッサー内で指定する必要があります。(このサンプル内(英語)のDutalTextureProcessorが参考になります)

原文:
http://blogs.msdn.com/b/shawnhar/archive/2010/05/03/new-effects-in-the-content-pipeline.aspx