5

XNA は蜂の膝のようなものですが、カスタム コンテンツ パイプラインを完全に理解することはまだできません。

MSDN の法線マップ サンプルのようないくつかの基本的なサンプルでは、​​.fbx ファイルの不透明なデータの法線マップ キーを適切な法線マップ テクスチャに割り当ててロードする方法を示しています。.fbx ファイルで定義されているかどうかにかかわらず、キーに名前を付ける必要があること、実際に不透明なデータが何であるかを彼らがどのように知っていたのかさえわかりません。

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

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

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

プロパティ ウィンドウでテクスチャを設定して、.fbx モデルの既存のテクスチャ参照をオーバーライドしようとしているわけではないことに注意してください。

4

1 に答える 1

3

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

インポーターを作成するときは、任意のファイルを任意の方法で解析し、必要な情報を指定した任意のクラス (オブジェクト) に格納します。クラスを自分で作成することも、XNA 内で特定のクラスを使用することもできます。このようにして、ファイルからデータを取得し、組み込みの ModelProcessor を使用してそれを 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 インポーターの動作に不満があるようです。この場合、ほとんどの場合、自分で作成する必要があります。ただし、独自のプロセッサを作成する必要はほとんどありません。最初のリンクのプロジェクトと同じように、ModelProcessor をデフォルトとして指定します。

于 2011-09-10T11:28:51.797 に答える