2009-05-29 5 views
3

誰かが3Dサーフェスを描き、目に見えない線を隠す方法を知っていますか?3Dサーフェスを描画して非表示の線を隠す方法は?

Apple IIの本からいくつかのコードを読んでいて、BASICで約25行しかなかったし、山や水の波紋のような形のような3Dサーフェイスをプロットすることができました。目に見えない線が最初に表示されましたが、数行のコードを追加した後、見えない線も消えました。

誰かがこれを行う方法やウェブ上のリソースを知っていますか?

+0

:-)すべての基礎となる数学を忘れて使用して...私はいくつかのケースでは、ドットがに接続されていたと思いますラインを形成する –

答えて

5

これはポリゴンをどのように描画するかによって異なります。これらの問題の多くを解決するように設計されているため、OpenGLまたはDirectXについて少しお読みになることをお勧めします。それらを直接使用したくない場合は、すでにこれらのAPIの上に構築された多くの偉大なエンジンがあります。あなたがここに満たされたポリゴン(テクスチャー、固体など)を描いていると仮定すると

は、あなたが使用できる一般的なアルゴリズムのカップルです:

  • ソートカメラからの距離によってポリゴンと最初の離れたものfurtherestを描きます、それ以外の場合はPainters Algorithmとして知られています。このメソッドは古典的なDoomのような多くの古い3Dゲームでも使用されていましたが、効率的な並べ替えにはBSP Treeも使用されていました。

  • カメラから最も近い距離を画面上の各ピゼルに格納し、さらに遠くに描画しないでください(Z-Buffering)。この方法は、最新の3Dビデオカード、OpenGLとDirectXで十分サポートされています。

  • 自然に隠れた表面除去を持つray tracingアルゴリズムを使用してください。あなたが三角形メッシュをプロットした場合

+0

ええ。私たちが持っているハードウェアを使う意味があります。質問者が話しているコードは、描かれた線ですが、塗りつぶされたポリではありません。 – Nosredna

+0

質問は「誰かが3Dサーフェスを描く方法を知っていますか?」から始まります。どちらの方法でも、白い枠線で黒塗りのポリゴンを使用すると、ラインを偽ることは、各ラインの可視性を判断するよりもずっと簡単になります。 –

+0

ああ、私は100%同意します。しかし、もし彼がApple IIのやり方(現代のグラフ電卓は何をしているのか)を考えているのであれば、それを数十列にまとめるのはかなり簡単です。 – Nosredna

3

私はその本を覚えています。私が正しくリコールすれば、これらはサーフェスプロットであり、トリックは前後に線をプロットし、各xに対してプロットされた最小値と最大値を追跡することでした。おそらく、ライン引き出しはBresenhamであり、max以上またはmin未満でない限り、描画されたポイントをスキップするように修正されている可能性があります。

アルゴリズムについては、カーブを使うこともできます。線分だけではありません。多分、リップル画像は、パラメータとしてxとyを持つtrig関数の何らかの組み合わせです。

私はまだ私の頭の中にそれらのプロットを見ることができます。それが何だったのか知りたいです。

2

は、その後、それぞれの三角形のバックフェースカリングを行う必要がありますし、持っている三角形のエッジを描画しない後ろ向きノーマル。三角形の2つの連続する辺の外積として法線を計算します。

アウトラインのみをプロットする場合は、正面に垂直な三角形と背面に垂直な三角形の間にある辺のみをプロットします。

それとも、OpenGLは、デプスバッファをオンにし、そして実際に、それは点または線することができ

関連する問題