2

仮想の人と物体の間に平面があると想像してください。オブジェクトは、特定のxyzスケーリングと回転を備えたボックスです。飛行機はガラス窓のようなものです。人は飛行機を通して物体を見ています。カメラはシーン全体を別の角度から見ています。

反対側のオブジェクトの輪郭を窓に描いているかのように、オブジェクトの輪郭を平面に描きたいと思います。

頂点が平面上に正しく配置されるようにオブジェクトを変換するにはどうすればよいですか?

平面への点の正射影を行う方法を知っていますが、この場合、私は推測する透視投影が必要です。オブジェクトがさらに遠くに移動する場合、その投影も、視聴者の視点に応じてサイズと位置を調整する必要があります。

誰かが私がとる必要のあるステップを説明するだけなら、私はコードを理解できると思います。

4

2 に答える 2

1

一般的には、透視投影を行います。

しかし、それはあなたが頭を動かさなければならない理論と数学の塊を含みます。もっと簡単なことをしたい場合は、オブジェクト内のすべての頂点について、目を頂点に結ぶ線を計算してから、それを平面と交差させます。

于 2011-07-09T17:11:55.397 に答える
1
  1. 人間の目を中心とした3D座標系を作成します。ポイントをあるシステムから別のシステムに変換する関数を記述します。また、オブジェクトに関連付けられた別のシステムがある場合もあります。システムの作成は、他のデフォルトの座標系でシステムの原点と軸の座標を書き込むことに他なりません。例:System_human_eye = {Point3f Origin(10、0、3)、Xaxis(1、0、0)、Yaxis(0、1、0)、Zaxis(0、0、1)}

  2. 人間の目のシステムで、オブジェクトの頂点と平面法線の座標を見つけます。平面方程式はp.normal=Dです。ここで、Dは平面までの距離、pは平面点、法線は平面法線です。人間の目から頂点までの光線はk*[x、y、z]です。kが変化すると、光線に沿って移動します。今あなたがする必要があるのは、光線が平面と交差するまで光線に沿って移動することです。

    k * [x、y、z]。通常=D; kを見つけ、点p = k * [x、y、z]を復元すると、光線と平面の交点が得られます。

  3. すべての交差点を人間の目システムからカメラシステムに変換します。

  4. openGLまたはレイトレーシングを使用して、これらの座標を画面に投影します。直線は透視投影後も直線のままなので、オブジェクトが線で構成されている場合は直線を使用できます。したがって、必要なのは、ラインエンドポイントを投影し、それらを画面上のラインとして再接続することだけです。
于 2014-02-22T08:05:46.783 に答える