XNAのカスタムコンテンツパイプライン、拡散テクスチャを手動で設定する方法は?

StackOverflow https://stackoverflow.com/questions/7365588

  •  28-10-2019
  •  | 
  •  

質問

XNAはミツバチの膝ですが、カスタムコンテンツパイプラインに完全に頭を包むことはできません。

MSDNの通常のマップサンプルのような基本的なサンプルには、.FBXファイルから適切な通常のマップテクスチャにロードするために、不透明なデータから通常のマップキーを割り当てる方法が示されています。 .fbxファイルで定義されている場合、キーの名前が何であるか、不透明なデータが実際に何であるかをどのように知っているかさえ知りません。

興味深いのは、コンテンツパイプラインに拡散テクスチャがどのように設定されているかを示すコードがないことです。「テクスチャ」という名前のシェードパラメーターを使用し、自動的に設定されることを意味するようです。ただし、パラメーターを他のものに変更すると、モデルはテクスチャのないロードをロードします。

拡散テクスチャをロードすることを暗黙的に知ることができます。たとえば、拡散テクスチャを異なる名前のシェーダーパラメーターで読み取り、存在しない場合はデフォルトのニュートラルホワイトテクスチャファイルをロードするにはどうすればよいですか?

さらに言えば、コンテンツパイプラインでモデルをカスタムロードすることを学習するための「Hello World」の例はありますか?

プロパティウィンドウにテクスチャを設定して、.fbxモデルの既存のテクスチャリファレンスをオーバーライドすることを検討していないことに注意してください。

役に立ちましたか?

解決

最初に理解することは、XNAが2つの個別のカスタムコンテンツパイプラインアイテムを作成できることです。1つはインポーターで、もう1つはプロセッサです。

輸入業者を書くとき、あなたはあなたが望む方法をファイルを解析し、あなたが指定した任意のクラス(オブジェクト)に必要な情報を保存します。クラスを自分で書くか、XNA内の特定のクラスを使用できます。この方法で、ファイルからデータを取得するインポーターを作成し、組み込みのモデルプロセッサを使用して、それをXNAモデルクラスオブジェクトにすることができます。

これがカスタムモデルインポーターのサンプルです。

http://create.msdn.com/en-us/education/catalog/sample/custom_model_importer

モデル以外のオブジェクトが必要な場合は、カスタムプロセッサを書き込みます。

プロセッサは、インポーターによって指定されたクラスオブジェクトを取得し、これをさらに別のクラスに変換します(あなたがそれを書いているので、任意のクラス、そして何らかの方法で指定します)。このクラスは、ゲームによって実行時に読まれる.xnbファイル(xnaバイナリ)の生成に使用されます。したがって、これらはすべて、コンパイル時間中にのみ実行され、ゲームのコンテンツをより適切に制御できるようになります。

これは、開始するための良いリンクです:

http://msdn.microsoft.com/en-us/library/bb447754(v=xnagamestudio.20).aspx

あなたの場合、あなたはデフォルトのFBXインポーターの動作に不満を抱いているように聞こえます。この場合、あなたはおそらくあなた自身を書く必要があります。あなたはおそらくあなた自身のプロセッサを書く必要はありません。私の最初のリンクのプロジェクトが完了したように、モデルプロセッサをデフォルトとして指定します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top