2011-12-11 9 views
1

私のプロジェクトのための地形を生成するために取り組んでいますが、私が描くことができるModelクラスに含まれるものですが、特定のデータを内部で調べる必要があるので、しばしば、Gameクラスを扱うための基本的な機能が必要になります。 とにかく、私はXNAフレームワークに関するかなりの知識を持っていますが、どのように畳み込まれているので、何かを処理します。だから私の問題は、私はモデルを作ることができない、私はクラスや何かをインスタンス化することはできませんです。私はモデルのジオメトリを形成するための適切なデータを信じています。これは私が今必要としているものであり、後でそれをテクスチャリングすることも可能です。 ここからどこに行くのかわかりません。ゼロからモデルを作成する方法

XNAコンテンツパイプラインをファイルに読み込んで具体的に解析するには、通常、Content.Loadを使用しますが、地形を生成したいので、避けたいのです。私は、メッシュを構成したい三角形の頂点データとインデックスを計算することができますが、これまでのところ、Modelやモデルに含まれるオブジェクトをインスタンス化しようとする試みは失敗しました。 ビルドに使用できるファクトリクラスがある場合は、それが何であるかわからないので、他の人が私に正しい方向にポイントして、モデルを構築する方法の概要を教えてくれれば助かります。 これは答えではないかもしれませんが、Content.Loadの使用を中心にするか全く違う何かをする必要があるかもしれませんが、基本的に私の地形がファイルに収まらないようにします。読み込んだデータをランダム化するなどの操作を行うことができます。

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

答えて

4

Modelとそれに関連するクラス(例:ModelMesh)は便宜的なクラスです。彼らはモデルを描く唯一の方法ではありません。時には、特に "特別な"ことをするときに、Modelが使用するのと同じ低レベルメソッドを使用して、それらを完全に再実装する必要があることが予想されます。

は、ここにあなたが何をすべきかの簡単なバージョンです:すべての

まず、ロード時に、VertexBufferIndexBufferを作成し、適切なデータと各を埋めるために、それぞれの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(...); 
+0

はい:

次に、描画時に、これを行います何かのためのコード。それであなたが言及した便利なオブジェクトが残っています。私はそれらがなぜそこにあるのかについてもっと学びたいと思います。 MSDNには、Javaチュートリアルセンターとは異なり、Javadocのメソッドやそのような欠点があります。これははるかに役立ちます。 ここで最後のコマンドを使用するだけでいいですか?私はまた、他の通常読み込まれたモデルを描画したいと思うし、gfxデバイスバッファの管理が難しいと思います。 – Pysis

+0

低レベルと難しいことを混同しないでください。実際にはこれを行うのはかなり簡単です。デバイス上で必要なものを設定してから、 'Draw *'メソッドを呼び出してください。 XNAのMSDNドキュメントには少し欠けています。しかし、サンプルとApp Hubのサンプルは優れているので、疑わしいときは見てみることをお勧めします。これらのビルトインのコンビニエンスクラスを使用しない場合は、通常は経験が必要です。しかし、公共のコンストラクタを持たないオブジェクトを作成する必要があることは良い指標です。 –

関連する問題