0

ボクセル技術に基づく地形レンダリングアルゴリズムのこの例(http://www.flipcode.com/voxtut/)を見つけ、それを「フル3D」レンダラーに変換しました。つまり、ハイトマップでは、ペア(x、y)に対して1つのz(up)座標しかなく、「実際の3d」では多くの座標があります。

これを行うには、通常のx、yマップに新しい「z」レイヤーを追加します。たとえば、次のデータセットがあります。

data[x][y][0] = 0;
data[x][y][1] = 10;
data[x][y][2] = 50;
data[x][y][3] = 100;
data[x][y][4] = -1;

つまり、座標x、y、z(0 <= z<=10または50<=z <= 100)の可視ボクセルがあることを意味します。したがって、このデータセットは、フリップコードで説明されているのと同じように描画します。

これは私のプログラム(かなり遅い)であり、これは最終的なレンダリングです。

このアプローチにはいくつか問題があります。

  1. このアルゴリズムでは、オブジェクトは画面に平行な長いストライプで描画されます(これは、画面の水平座標に1を追加し、カメラと光線上の点の間の距離に一定のddを追加して画面を移動するためです)。描画可能なオブジェクトの間にスペースがある場合、これらの醜いジグザグもあります。これらのストライプの代わりに、他の何か(たとえば、立方体)を使用してオブジェクトを簡単に描画できますか?それとも、より良い品質を作る別の方法がありますか?

  2. 光線は画面上に列を描画しないため(代わりに垂直線分を描画します)、画面上のどのピクセルがすでに描画されているか、どのピクセルが描画されていないかを判別することは困難です。それと何か関係がありますか?

このトピックに関する論文や説明されているアルゴリズムはありますか?

4

0 に答える 0