teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2016/07/07 09:22

投稿

masaya_ohashi
masaya_ohashi

スコア9210

answer CHANGED
@@ -1,6 +1,17 @@
1
1
  長らくOpenGLを触っていないので、詳しい手順を書くことは出来ませんが、特定の点を中心に回転するカメラ、ということでしたら、以下の手順でビュー行列を計算するとできるのではないでしょうか。
2
2
 
3
+ 0. カメラの基準点Aへ移動する平行移動行列T1を求めます。
3
4
  0. 回転角から回転行列Rを求めます。
4
- 0. カメラの距離の移動分の平行移動行列Tを求めます。
5
+ 0. カメラの距離の移動分の平行移動行列T2を求めます。
5
- 0. 行列Rと行列Tを掛けあわせ、行列RTとします。
6
+ 0. 行列T1、R、T2を掛けあわせ、行列Vとします。
6
- 0. 行列RTの逆行列を求めます。これがビュー行列となる…と思います。
7
+ 0. 行列Vの逆行列IVを求めます。これがビュー行列となる…と思います。
8
+
9
+ ###追記
10
+ もしかして、一定角から一定角まで動いた画像を、魚眼レンズで覗いたような1枚のパノラマとして描画したい、ということでしょうか?だとすれば開始角度をa、終了角度をbとしたとき、
11
+ 0. glClearでまっさらにする
12
+ 0. glViewportで画面の左端だけを描画するようにする
13
+ 0. aの角度で描画する
14
+ 0. glViewportで少しだけ右に描画範囲を動かす
15
+ 0. aの角度に少し角度を足して描画する
16
+ 0. この手順をbの角度まで繰り返す
17
+ こんなかんじになる…かもしれません。ちょっと私もやったことがないのでこれで動くか自信はないですが…