1

ボクセルから平らな面を描画しようとしています。目標はそれを塗りつぶして描画することであり、多くの問題を抱えています。私が試したものはすべて、表面に穴が開いてしまいます。サーフェスには4つのコーナーがありますが、三角形にも同じ方法を使用できるようにしたいと思います。

これが私が試したことです:

  • 一方の平行な側からもう一方の側に沿って描画します
  • 平面の側面に沿って一方向(z方向)にのみ描画します

私は2で最も成功しましたが、平面にピッチまたはロールを追加すると失敗します(任意の高度が存在します)。

任意のヒント?私の実装はすべて正しいと確信しているので、コードはありません。間違っているのはアルゴリズムの選択だけです。

編集:

ちなみに、2番の穴は少なかったものの、飛行機は歪んでいて平らに見えませんでした。

EDIT2:

私は最初の決定に固執していますが、今の問題は、穴がいつあるかをどのように検出するかです。観察すると、ピッチとロールに関係なく、平面ごとに同じ数の穴があることがわかります。ここではヨーが原因です。

EDIT3:

この質問は残しておきますが、近くのブロックをテストして、空かどうかを確認することにしました。やりたくなかったけど、そうだね。あなたがよりエレガントな解決策を持っているなら、私はすべての耳です。

4

1 に答える 1

1

平面は無限であるため、角がありません。四辺形のポリゴンについて話しているのですか?四角い角はありますか?

ポリゴンの場合、三角形から始めます。三角形から他のポリゴンを作成することはできますが、その逆はできません。

次に、三角形を塗りつぶすための良いスタートは、特定のボクセルを塗りつぶす必要があるかどうかの正確なテストを考え出すことです。これは、2つの異なるポイントイントライアングルテストの例です

それができたら、さまざまな方法で進めることができます。たとえば、最も効率的ではありませんが、中心から領域成長し、隣接する各ボクセルをテストし、スタックを使用して再帰することができます。

于 2012-05-27T22:33:00.430 に答える