XNA 2.0のコンテントパイプライン~その弐~
プロセッサパラメーター
上の画面はテクスチャのプロパティ画面です。Content Processorの脇に+のついた四角いマークに気づいたでしょうか?
クリックすると複数のパラメーターが表示されます。これが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テンプレートをソースコード追加時に指定できるようになりました。
カスタムプロセッサーにパラメーターを付ける
プロセッサパラメーターをカスタムプロセッサへ追加するのは簡単でプロパティを宣言するだけです。
[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
{
このプロセッサをコンパイルすると、プロパティ画面では以下のようにパラメーターの説明つきで分かりやすい表示になります(説明自体が分かりやすいかどうかは別問題ですが…)。
今まではどんなに小さなパラメーターでも直接コードで変更するか、インポーターを介して読まないといけなかったのですが、プロセッサパラメータを使うことでそういった煩雑な作業をする必要が大幅に減ることになるでしょう。
原文URL
Comments
Anonymous
December 21, 2007
PingBack from http://recoveryandforensic.net/?p=2849Anonymous
February 22, 2008
以前紹介した 英数字以外の文字列表示方法 はコンテントパイプラインの全体の流れを説明するという目的もあったので複雑なつくりになっていました。RPGやテキストベースのアドベンチャーゲームなどの大量のテキストデータを扱う場合は、こういったものは必須になってきますが、今回はXNAAnonymous
February 22, 2008
以前紹介した 英数字以外の文字列表示方法 はコンテントパイプラインの全体の流れを説明するという目的もあったので複雑なつくりになっていました。RPGやテキストベースのアドベンチャーゲームなどの大量のテキストデータを扱う場合は