2

小さな4Dゲームをプログラムしようとしています。C++ と OpenGL を使用しています。この Web サイトでは、4d 画像を強化する方法について適切な説明が提供されています

彼らは、4d Hidden Surface Removal (HSR) アルゴリズムを適用するよう指示しています。
私はプログラミングとアルゴリズムの初心者であり、4D HSR も 3D HSR もどこから始めればよいかまったくわかりません。
誰かがそのようなアルゴリズムの経験を持っているなら、それを C++ に翻訳する方法を説明できますか?

ところで:私は 4d 空間を 3d で投影するので、ピクセルの変更ではなく、頂点を削除するためのアルゴリズムが必要になるか、少なくとも私が考えていることです...私は間違っている可能性があります...

4

1 に答える 1

0

多くの場合、3D 隠面除去は、面を描画するときに、描画する各ピクセルの深さ (「目」からの距離) も覚えていることを意味します。表面が既に描画されている表面を描画しようとすると、ピクセルが既に存在するピクセルよりも目に近い場合にのみ、ピクセルを描画します。3D グラフィックス ライブラリである OpenGL (3D シーンの説明を 2D ディスプレイに投影する) では、これはDepth Buffer Testと呼ばれます。

また、サーフェスがどの方向を向いているかを追跡することもできます。「目」から離れている場合は、まったく描かないでください。OpenGL では、これは call backface cullingです。記事で説明されている層状の透明な外観を作成する場合は、深度に従ってピクセルを並べ替え、最も深いものを最初に描画する必要があります。次に、現在のピクセルを古いピクセルの色と現在の表面の色の凸状の組み合わせに置き換えて、より近いものを上に描画します。

4d の場合、4d のものを投影することの意味を決定する必要があります。アニメ化された 3D モデルは、実際には 4D モデルだと思います。必要に応じて、このシミュレートされたラケットボール プレーヤーのように、すべてのフレームを一度に描画できます。 4Dラケットボール選手

この画像では、時間がグレースケール値で表されています。そのため、プレーヤーがコートを横切ってボールを打つ様子を、すべて 1 つの静止画像で見ることができます。もちろん、適切な 4 次元から 2 次元への投影は、おそらく一緒に描画された離散時間フレームの束を表示するのではなく、時間を橋渡しする頂点を接続して、個々のボールの束を表示する代わりに「チューブ」を表示します。ボールの軌道を表しています。しかし、あなたがリンクしている記事にそのようなものが記載されていますが、場合によっては、コミュニケーションが少ないかもしれません.

于 2011-08-25T16:08:33.887 に答える