3

さて、私は OpenGL でカメラを作成するのに役立つこのチュートリアルに従っていました: http://nehe.gamedev.net/data/articles/article.asp?article=08

それで私はそれに従い、苦労した後、最終的にカメラの3軸を表す3つのベクトルを持つソリューションを手に入れました。

しかし、問題は?その情報を使用して実際に正しい回転/平行移動を取得する方法がわかりません! 最初のパラメーターにカメラの位置を使用し、次にターゲットにカメラの Z 軸を使用し、アップパラメーターに Y 軸を使用して、gluLookAt を使用してみました。その結果、私が上下左右に移動しても、カメラは 1 点を見続けることはなく、回転はさらに奇妙な動作をします...

私は完全に間違ったアプローチを取っていますか?クォータニオンを使用して必要な変換を何らかの方法で計算することを検討しましたが、必要なパラメーターを取得する方法/開始方法がわかりません...基本的には、単純なFPSのようなカメラから始めたいだけです、動き回ったり、上/下や側面を見たりすることができます(以前は、見上げてから振り返るときを除いて、ほとんど機能していましたが、回転が台無しになりました...)

一般的または具体的なヘルプをいただければ幸いです。私は何時間もこれに取り組んできましたが、状況はまったく改善されていません...

要約すると... ヨー/ピッチ/ロールができるカメラを作るのに助けが必要です... 一点を見つめることに固執することはありません。

編集: わかりました、どうやら正しい順序で回転させると本当に役に立ちます! 愚かな私。いずれにせよ、カメラの 3 つの軸を使用して変換のクォータニオンを形成する方法を知りたいと思っています。

4

1 に答える 1

0

最初のパラメーターにカメラの位置を使用し、次にターゲットにカメラの Z 軸、アップパラメーターに Y 軸を使用して、gluLookAt を使用してみました。

パラメータの 2 番目のセットは、視線方向ではなく、視線位置です。カメラの位置を取得し、Z 軸でオフセットして、見たい方向の視線位置を取得する必要があります。

いずれにせよ、カメラの 3 つの軸を使用して変換のクォータニオンを形成する方法を知りたいと思っています。

はい。それらを行列に変換してから、行列を四元数に変換します。回転行列を四元数に変換するプロセスを説明するオンライン リソースが多数あります。

于 2011-09-24T18:05:18.577 に答える