2011-09-09 3 views
5

XNAは蜂の膝ですが、私はまだカスタムコンテンツパイプラインの周りに頭を包むことはできません。XNAのカスタムコンテンツパイプライン、拡散テクスチャを手動で設定する方法は?

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

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

diffuseテクスチャを暗黙的に読み込む方法と、別の名前のシェーダパラメータで読み取る拡散テクスチャを読み込んで、デフォルトのニュートラルホワイトテクスチャファイルがない場合は読み込む方法を教えてください。

コンテンツパイプラインを使用してカスタムロードモデルを学習する "hello world"の例はありますか?

プロパティウィンドウでテクスチャを設定することで、.fbxモデルの既存のテクスチャ参照を上書きすることを検討していないことに注意してください。

答えて

3

最初に理解しなければならないのは、XNAでは2つの別々のカスタムコンテンツパイプラインアイテムが作成されるということです.1つはインポータであり、もう1つはプロセッサです。

インポータを書き込むときは、任意のファイルを解析し、指定する任意のクラス(オブジェクト)に必要な情報を保存します。自分でクラスを書くことも、XNA内の特定のクラスを使用することもできます。この方法では、ファイルからデータを取り込み、組み込みのModelProcessorを使用してXNA Modelクラスオブジェクトに変換するインポータを作成するだけです。ここで

はカスタムモデル輸入のサンプルです:

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

あなたがモデルよりも、いくつかの他のオブジェクトが必要な場合は、カスタムプロセッサを書く:

プロセッサはで指定されたクラスオブジェクトを取得しますインポータを呼び出し、それをさらに別のクラスに変換します(あなたがそれを書いているので、どのクラスでも指定します)。このクラスは、ゲームで実行時に読み込まれる.xnbファイル(XNAバイナリ)を生成するために使用されます。したがって、これはコンパイル時にのみ実行されるため、ゲームの内容をよりよく制御することができます。デフォルトFBXインポータの行動に不満があるように聞こえるあなたのケースのために

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

これは始めるのに良いリンクです。このような場合は、あなた自身で書く必要があります。あなたは自分のプロセッサを書く必要はほとんどありません。最初のリンクのプロジェクトが行ったのと同じように、ModelProcessorをデフォルトとして指定します。

+0

この回答ありがとうございます。私が見ていた多くの例が、必要と思われるものの半分しか行っていないように思えたので、私は同じことを思っていました。これは私にいくつかの研究時間を節約しました。 –

+0

これは、カスタムインポーター/プロセッサークラスが拡張している基本クラスに非常に精通していることを意味しています。私は最初のリンクを見ました。その例は簡単です。特に、過去にOBJインポータを書きました(FBX形式が挑戦だと思います)。私はそれを改良して、四角形を三角形に変換することさえできました。 –

関連する問題