お世話になっております。
座標系の変換についてお聞きしたいことがあり投函させて頂きました。
現座標系は、カメラから見て
- +X:前方
- +Y:右方向
- +Z:上方向
となっており、地面相当の平面がXY平面、高さがZになっています。
これを、OpenGLの座標系である右手座標系にしたいのですが、単純に、例えば位置設定関数の場合ですと、
c++
1const float sz = 20.0f; 2for( int i = 0; i < MAX_PLANES; ++i ) 3{ 4 Object *obj = getObject(i); 5 //obj->setPosition( (float)i * 10, sz * 10.0f, 0.0f ); // 現座標系での指定 6 obj->setPosition( (float)i * 10.0f, 0.0f, sz * 10.0f ); // 右手座標系(こう記述したい) 7}
といった感じで強引に設定を変更しても、当然ですが思った通りの表示結果が得られません(この場合、高さ方向にオブジェクトが配置されます)。
あとは、Projectionマトリクス、Viewマトリクスの設定はどうするのかとか、LookAt関数的なのはどうしたら良いのか、何か見落としているのか、系の変更について現状を把握できていない状態です(ortho関数で水平、もしくは垂直の値を入れ替えれば良いと聞きましたが、これはちょっと違う気がします)。
座標系の変換において気をつけるべき部分等ございましたらご教授願います。
開発環境ですが、SDL2/OpenGL/C++を使用しています。OSは特に問いませんが、Windows上のVisualStudioを利用して開発を行っております。シェーダーは#330を利用しています(特に特殊なことはやっておりません)。
よく使うVector3的なのはクラスとして独自で用意しております。
かなりざっくりとした質問になってしまいましたが、返答の際に足りない情報がありましたら可能な限り対応致します。
以上、よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/05 02:57