4

私は技術的な演習として 3D レンダリング プロジェクトに取り組んでおり、多くの 3D フレームワークで既に行われていることを再現できるかどうかを確認しています。モデルのロードから三角形を描画する準備ができているバッファーにプロットするまでのすべての方法です。

これが私がなんとか生産したもののサンプルです プログラム出力のレンダリング

スクリーンショットからわかるように、表面にテクスチャをプロットする際に問題が発生しました。私が見つけたこのウィキペディアのリンクは、アフィンと非アフィンについて説明しています。パースペクティブの正しいテクスチャ マッピングに関するこのリンクに類似した他のリンクが、より詳細に説明されています。

ピクセルをプロットするときに UV 座標を修正する方法がまだわかりません。

私のエンジンが三角形で現在どのように動作しているか: 3D 頂点データを 2D 画面データに変換する 描画三角形を呼び出します 0 と 1 の間の深さと描画三角形内のテクスチャの詳細を渡します 各垂直線は、三角形の 3 つのエッジに沿って補間することによって描画されます

リンクに変更を加えましたが、ゼロ除算エラーが発生します。それらを無視すると、何も描画されません。

質問

各ピクセルで選択された UV 座標を修正するにはどうすればよいですか。現在、各ピクセルで、見かけの UV である 0.0 から 1.0 までの深さを知っています。

どんな助けでも大歓迎です。前もって感謝します。

トム:)

アップデート:

解決策、Andreas Brinckの回答を使用してください。それは正常に動作します。以下は、現在動作しているスクリーンショットです。

正しいパースペクティブ テクスチャ マッピングの動作

4

1 に答える 1

2

三角形で u と v を補間する代わりに、u/z、v/z、および 1/z (頂点で計算) を補間し、(u/z) / (1/z) および (v/ z) / (1/z)。

于 2012-08-17T12:52:27.927 に答える