2012-02-14 14 views
3

私はレイトレーサに取り組んでおり、かなり斬新であると思われるものを考え出しましたが、Vector3の対応する2Dスクリーン座標にマッピングすることに苦労しています。私は検索して、対象についていくつかの異なるテイクを見つけましたが、彼らはいつも私に間違った結果を与えてしまいます。3Dを変換する - > 2D座標

考える: 私は

が持つ画面に戻ってマッピングする空間内の3D点を表すベクトルを(右、左、上、位置のためのベクターからなる)

透視カメラ:

私は(x、y)の座標とカメラオブジェクトを取る機能を持っており、それが

欲しいベクトル(x、y、z)を私に​​戻っています:逆を行うには 機能を - すなわちタク私は3次元世界座標とカメラを返し、(x、y)座標を返します。

これを行うにはいくつかの方法を試しましたが、すべてが間違ったデータを返します。

ありがとうございました!

+0

あなた 'Camera'オブジェクトは、あなたの透視行列、またはFOVと縦横比を与えていますか? – cmannett85

答えて

0

あなたが探しているのは、投影行列です。このマトリックスで3Dポイントを乗算して、2Dの表示面に投影します。ここではコンピュータ画面です。

私はあなたがOpenGLを使用していない知っているが、このリンクはOpenGLは、このような行列を構築する方法を正確に概説:

http://www.songho.ca/opengl/gl_projectionmatrix.html

関連する問題