1

私はプロジェクトの地形を生成する作業を行っています。これは、描画できる Model クラスに含まれますが、特定のデータを頻繁に調べる必要がある場合があるため、新しいクラスでも問題ありません。 Game クラスで動作する基本的な関数。とにかく、私は XNA フレームワークについてかなりの知識を持っていますが、処理が非常に複雑であるためです。したがって、私の問題は、モデルを作成するだけでなく、そのクラスなどをインスタンス化できないことです。モデルのジオメトリを形成するための適切なデータがあると私は信じています。これが今必要なすべてであり、後でテクスチャを作成する可能性があります。ここからどこへ行けばいいのかわからない。

XNA では通常 Content.Load を使用して、コンテンツ パイプラインをファイルに読み込ませて具体的に解析しますが、地形を生成したいので、それは避けたいと思います。メッシュを作成したい三角形の Vertex データとインデックスの配列を計算できますが、これまでのところ、Model やそれに含まれるオブジェクトなどのオブジェクトをインスタンス化しようとして失敗しました。それを構築するために使用できるファクトリ クラスがある場合、それが何であるかはわかりません。そのため、他の誰かが正しい方向に向けてモデルを構築する方法の大まかな概要を教えてくれれば、それは役に立ちます。それが答えでない場合は、Content.Load を使用するかどうかに関係なく、まったく別のことをする必要があるかもしれませんが、基本的には、実行間で一貫して地形をファイルに保存したくありません。メッシュ データを制御したいのです。ロード時にランダム化し、

では、モデルを完全にプログラムで生成し、画面に表示し、そのデータを公開するにはどうすればよいでしょうか?

4

1 に答える 1

4

Modelおよびその関連クラス (例: ModelMesh) は、便利なクラスです。モデルを描く唯一の方法ではありません。場合によっては、特に「特別な」ことを行う場合、 を使用するのと同じ低レベルのメソッドを使用して、それらを完全に再実装する必要があることが予想されModelます。

これがあなたがすべきことの簡単なバージョンです:

まず、ロード時に と を作成し、VertexBufferそれぞれをIndexBuffer使用SetDataしてそれぞれに適切なデータを入力します。

次に、描画時に次のようにします。

GraphicsDevice.SetVertexBuffer(myVertexBuffer);
GraphicsDevice.Indices = myIndexBuffer;

// Set up your effect. Use a BasicEffect here, if you don't have something else.
myEffect.CurrentTechnique.Passes[0].Apply();

GraphicsDevice.Textures[0] = myTexture; // From Content.Load<Texture2D>("...")

GraphicsDevice.DrawIndexedPrimitives(...);
于 2011-12-11T07:00:08.033 に答える