1

そのため、割り当てのために、立方体を球体に変形する必要があります。必要なのは、立方体の表面に沿って多数の点を配置​​することだけです (接続する必要はなく、実際に立方体上にある必要はありませんが、接続すると見やすくなりますが、立方体を形成する必要があります)。それらは滑らかに球形に変換されます。

主な問題は、私が XNA 4.0 でポイントを作成する方法を学んだことがなく、OpenGL で行ったこととは非常に異なっていることです (以前のクラスで古いものを学びました)。

私が必要とする立方体の形を作るのを手伝ってくれる人はいますか? 各辺には 10x10 のポイントがあり、エッジ上のポイントはそのエッジのサーフェスによって共有されます。2 つの状態間でポイントを変換するには、開始状態、終了状態、および中間状態が必要になるため、構造は簡単にコピーまたは変更できる必要があります。

重要な可能性があるものを省略した場合は、お知らせください。

4

1 に答える 1

0

まず、Primitives3D サンプルに慣れる必要があります。必要なすべてのレンダリング API を示しています。

これが私がこの問題に取り組む方法です (MSDN でこれらのクラスとメソッドを調べることができます。詳細を理解するのに役立つことを願っています)。

  1. Vector3[](0,0) の周りに適切にテセレーションされた単位立方体を表すの配列を作成します
  2. andの 2 番目の配列を作成し、最初の配列から頂点をコピーするためにVector3[]使用します。Vector3.Normalizeこれにより、元の立方体と一致する頂点を持つ単位球が作成されます。
  3. の配列を作成しますVertexPositionColor[]。好きなように色データを入力してください。
  4. Vector3.Lerp最初の 2 つの配列をループ処理し、各要素を補間して 3 番目の配列の位置を設定するために使用します。これにより、アニメーション化できるパラメーターが得られます。これは、フレームごとに実行する必要があります (Updateおそらく最適です)。
  5. テッセレーションされた立方体の三角形のリストを記述するインデックスの配列 ( short[]) を作成します (そして、球体と 2 つの間のアニメーション)。
  6. BasicEffectをレンダリング用にセットアップします。これには、WorldViewおよびProjection行列の設定と、おそらく をオンにすることが含まれVertexColorEnabledます。照明が必要な場合は、詳細についてサンプルを参照してください (法線で頂点タイプを使用し、それらの法線を正しくアニメートする必要があります)。
  7. エフェクトを使用してレンダリングする方法は次のとおりです。foreach(EffectPass effectPass in effect.CurrentTechnique.Passes) { effectPass.Apply(); /* your stuff here */ }
  8. DynamicVertexBufferそれらを使用してandを作成し、描画することができますIndexBuffer。しかし、このような単純なものの場合DrawUserIndexedPrimitivesは、はるかに簡単です ( here はいくつかの詳細を含む最近の回答であり、 hereは完全な例を含む別のBasicEffect回答です)。

これらのオブジェクトは起動時にのみ作成する必要があることに注意してください (LoadContent適切な場所です)。レンダリング中は、単にそれらを使用しています。

3D レンダリングに問題があり、テキストまたはスプライトを描画している場合は、この記事で修正方法を確認してください。

于 2013-02-18T13:28:21.500 に答える