新しいエフェクトとコンテントパイプライン
今までのXNAではコンテント・パイプライン内では以下のようにしてマテリアルを読み込んでいました。
- もし、FBXかXファイルモデルが.fxファイルを参照している場合、EffectMaterialContentとしてインポートし、ゲーム内ではカスタム・エフェクトとなります。
- それ以外であれば、BasicMaterialContentとしてインポートして、実行時にはBasicEffectとなります。
- BasicMaterialContnetのテクスチャ、ディフューズカラー、スペキュラ係数といったプロパティはFBXやXファイルのマテリアルの値を設定します。
- もし、BasicEffectがサポートしていないプロパティがあった場合は、BasicMaterialContent.OpaqueDataに格納されます。このデータはカスタムプロセッサー内で使用することができます。
モデルデータがエフェクトファイルを参照していない時にカスタムエフェクトを使いたい場合は以下の二つの方法があります。
Game Studio 4.0も同じですが、新しいプロセッサー・パラメーターを追加してあり、ビルトイン・エフェクトの中から選ぶことができます(ただし、元のモデルが.fxファイルを参照していない場合)。
これに加えて、コンテント・パイプライン内の型として、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
Comments
Anonymous
December 17, 2010
EnvironmentMapEffectはバグがあります。 動的に生成したキューブマップを参照すると X方向に反転した状態のテクスチャが貼られます。Anonymous
December 17, 2010
フォーラムの方に同様の質問があったので、そちらの方を参照してください。 forums.create.msdn.com/.../427027.aspx