XNA 2.0のコンテントパイプライン~その弐~

プロセッサパラメーター

processor01

上の画面はテクスチャのプロパティ画面です。Content Processorの脇に+のついた四角いマークに気づいたでしょうか?

processor02

クリックすると複数のパラメーターが表示されます。これがXNA GS 2.0の新機能の一つであるプロセッサパラメーターです。XNA GSE 1.0では複数の複数のプロセッサを書く必要がありましたが、XNA GS 2.0ではひとつのパラメーターつきのプロセッサを書くだけで、どのようにコンテントがプロセスされるかを指定できるようになりました。

Textureプロセッサには以下のパラメーターが設定できます。

パラメーター名

用途

Color Key Color カラーキーの指定
Color Key Enabled この値がTrueの時にColor Key Colorと同じピクセルのアルファ値が0に変換される
Generate Mipmaps ミップマップ生成のコントロール
Resize to Power of Two 元のイメージを最も近い2の乗数のサイズにリサイズするかしないか
Texture Format 出力するテクスチャのフォーマット NoChange(変換なし)、Color(32ビットRGBA)、DxtCompressed(DXT圧縮形式)

Modelプロセッサでは以下のパラメータが設定できます。

パラメーター名

用途

Color Key Color カラーキーの指定
Color Key Enabled この値がTrueの時にColor Key Colorと同じピクセルのアルファ値が0に変換される
Generate Mipmaps ミップマップ生成のコントロール
Generate Tangent Frames タンジェントフレーム、つまりBiNormalとTangenチャンネルを頂点バッファに生成のコントロール
Resize Textures to Power of Two 全てのテクスチャイメージを最も近い2の乗数のサイズにリサイズするかしないか
Scale モデルのスケール変換
Swap Winding Order ポリゴンの右回り、左回りの頂点順番の反転
Texture Format 出力するテクスチャのフォーマット NoChange(変換なし)、Color(32ビットRGBA)、DxtCompressed(DXT圧縮形式)
X Axis Rotation 出力するモデルをX軸に沿って回転させる
Y Axis Rotation 出力するモデルをY軸に沿って回転させる
Z Axis Rotation 出力するモデルをZ軸に沿って回転させる

プロセッサパラメーターは自分で作ったプロセッサでも簡単に使えるようになっています。ちなみにコンテントパイプラインを拡張するのに便利な "Content Pipeline Extension Library (2.0)" テンプレートがXNA GS 2.0では追加されました。またカスタムプロセッサや、カスタムインポーターの雛形となるContent Processor、Content Importerテンプレートをソースコード追加時に指定できるようになりました。

cpextension

カスタムプロセッサーにパラメーターを付ける

プロセッサパラメーターをカスタムプロセッサへ追加するのは簡単でプロパティを宣言するだけです。

 [ContentProcessor(DisplayName = "ねこプロセッサ")]
public class NekoProcessor : ContentProcessor<TInput, TOutput>
{
    // プロセッサパラメーター
    public bool NekoMode
    {
        get { return nekoMode; }
        set { return nekoMode = value; }
    }

    bool nekoMode = false;

このままでは味気ないので、以下のようにアトリビュートを指定することによってプロパティ画面でより読みやすい状態にすることができます。これらのアトリビュートはSystem.ComponentModel内で宣言されています。

 // 規定値の指定
[DefaultValue(false)]

// 表示される文字列の指定
[DisplayName("ねこモード")]

// パラメーターの説明
[Description("Trueにすると、なんとなくねこっぽくなります")]
public bool NekoMode
{

このプロセッサをコンパイルすると、プロパティ画面では以下のようにパラメーターの説明つきで分かりやすい表示になります(説明自体が分かりやすいかどうかは別問題ですが…)。

processor04

今まではどんなに小さなパラメーターでも直接コードで変更するか、インポーターを介して読まないといけなかったのですが、プロセッサパラメータを使うことでそういった煩雑な作業をする必要が大幅に減ることになるでしょう。

原文URL

http://blogs.msdn.com/shawnhar/archive/2007/11/26/content-processor-parameters-in-xna-game-studio-2-0.aspx