1

私は、質問と回答に数字(0〜99)が使用される数学ゲームに取り組んでいます(標準のビリヤードボールのように、通常は15になります)。

したがって、3DSMaxなどで99個の異なるボールをモデル化するよりも、プログラムで少なくとも数値を生成する方がはるかに賢明だと思います。

私はC#/ XNAで作業していますが、DX11 /C++でも説明を処理できます。

私はコードを探しているのではなく、アプローチを探しています。次のような箇条書きのようなものです(これが正しければ):

  • 白でストライプのある3DSでshpereを作成します。
    • または、ストリップを後で追加するテクスチャの一部にする必要がありますか?
  • DrawModel中に、ボールの色(ソリッドの場合)またはストライプ(ストライプの場合)を変更します
  • どういうわけか、ボールの他の部分と同じ品質のように見えるように、ボールに番号を追加します

おそらく、テクスチャを取得して、歪みなしで球の周りにラップする魔法の方法があります。そうすれば、テクスチャを生成して球に貼り付けることができます。しかし、ご想像のとおり、ここに行く方法がわかりません。

どんな方向にもありがとう!

4

2 に答える 2

1

テクスチャ マップに数値を印刷する必要があります。このテクスチャは事実上、球体の一部に貼り付けられる「デカール」です。このような単純な固定デカールを実装する簡単な方法は、ポイントがデカールの領域の内側にあるか外側にあるかを判断するピクセル シェーダーを記述することです。そうでない場合は、追加のテストを行って、ピクセルを白い背景にするか、色付きのストライプにするかを決定できます。

各頂点に適切なテクスチャ座標を指定することで、デカールを球体にマッピングできます。または、3D モデル座標からテクスチャ座標を計算するピクセル シェーダを作成することもできます。

いずれにせよ、球には常に歪みが生じます。平面図と球体を変換するという基本的な問題をすべて解決してくれる地図投影法をご覧になることをお勧めします。どちらも簡単に理解して実装できる「ノーモニック」投影と「正射投影」を見ることを特にお勧めします。

于 2013-03-07T23:09:13.397 に答える
0

XNA / MonoGame / ANX で取り組む場合、Reach プロファイルを使用しているか HighDef プロファイルを使用しているかによってアプローチが大きく異なります。

リーチ プロファイルでは、次のことをお勧めします。

  1. RenderTarget の作成
  2. レンダー ターゲットをボールの色にクリアする
  3. レンダー ターゲットに白いストライプを描画します
  4. レンダー ターゲットに数字を描画する
  5. 球メッシュを動的に作成する (または既存のものを使用する)
  6. Basic エフェクトと rendertarget テクスチャを使用して球体メッシュをレンダリングする

ハイ プロファイルでは、次のようなピクセル シェーダーを作成するケースです。

  1. 「白」のテクスチャ、「色」のテクスチャ、色、「数字」のテクスチャを取ります
  2. 白いテクスチャを白くレンダリングします
  3. カラー テクスチャを指定された色にレンダリングします
  4. 数字のテクスチャをレンダリングします

(Reach プロファイルの例と同様の手法を使用して数値テクスチャをレンダリングすることをお勧めします。テキストのレンダリングは面倒なので、可能な場合は組み込みのものを利用することをお勧めします)。(以前の) XNA チーム ( http://create.msdn.com ) によって提供された色変更の例があります。

于 2013-03-07T22:51:45.640 に答える