回答編集履歴
3
誤記修正
answer
CHANGED
@@ -54,6 +54,6 @@
|
|
54
54
|
まぁ,
|
55
55
|
|
56
56
|
* 「"カメラの位置" という意味として扱っている数値の側を変更する」と考えて gluLookAt() に渡す引数値を変えてやる
|
57
|
-
* 「モデル群を逆方向に移動させてやればいいよね」と考えて,
|
57
|
+
* 「モデル群を逆方向に移動させてやればいいよね」と考えて,glTranslated() とかでやる
|
58
58
|
|
59
|
-
のどちらであろが,結局は単一のModelViewマトリクスをいじくっているだけで,やってることは同じなので,「頭の中で考えている話の捉え方が違う」だけですが.
|
59
|
+
のどちらであろうが,結局は単一のModelViewマトリクスをいじくっているだけで,やってることは同じなので,「頭の中で考えている話の捉え方が違う」だけですが.
|
2
追記
answer
CHANGED
@@ -23,4 +23,37 @@
|
|
23
23
|
---
|
24
24
|
|
25
25
|
目視点まわりの回転については,(centerX,centerY,centerZ)の値は保ち,
|
26
|
-
所望の回転軸周りの回転によって,基底ベクトルの方向と,座標(eyeX,eyeY,eyeZ)とを更新すれば良いでしょう.
|
26
|
+
所望の回転軸周りの回転によって,基底ベクトルの方向と,座標(eyeX,eyeY,eyeZ)とを更新すれば良いでしょう.
|
27
|
+
|
28
|
+
---
|
29
|
+
|
30
|
+
---
|
31
|
+
|
32
|
+
[追記]
|
33
|
+
|
34
|
+
> カメラを平行移動
|
35
|
+
|
36
|
+
というのは,
|
37
|
+
「カメラ位置はそのままにしておき,全てのモデルを(逆方向に)平行移動」することと同じなので,
|
38
|
+
そういう方向で物事を考えれば,
|
39
|
+
現在の ModelView マトリクスに,「逆方向に平行移動させる行列」を左から乗じるという形になります.
|
40
|
+
|
41
|
+
単純には,
|
42
|
+
|
43
|
+
```
|
44
|
+
glMatrixMode( GL_MODELVIEW );
|
45
|
+
glLoadIdentity();
|
46
|
+
glTranslated( 逆方向の並進移動量 );
|
47
|
+
gluLookAt( 既存の内容 );
|
48
|
+
```
|
49
|
+
|
50
|
+
とか書く感じですね.
|
51
|
+
|
52
|
+
---
|
53
|
+
|
54
|
+
まぁ,
|
55
|
+
|
56
|
+
* 「"カメラの位置" という意味として扱っている数値の側を変更する」と考えて gluLookAt() に渡す引数値を変えてやる
|
57
|
+
* 「モデル群を逆方向に移動させてやればいいよね」と考えて,glTransLated() とかでやる
|
58
|
+
|
59
|
+
のどちらであろが,結局は単一のModelViewマトリクスをいじくっているだけで,やってることは同じなので,「頭の中で考えている話の捉え方が違う」だけですが.
|
1
誤変換を修正
answer
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
> gluLookAt(eyeX,eyeY,eyeZ, centerX,centerY,centerZ, upX,upY,upZ)
|
12
12
|
|
13
|
-
として引数を与えることができている時点で,その時点におけるカメラ座標系の基底ベクトルは既知(
|
13
|
+
として引数を与えることができている時点で,その時点におけるカメラ座標系の基底ベクトルは既知(算出方法が既知)なわけですから,カメラ座標系の規定ベクトル方向に平行移動する処理は自明でしょう.
|
14
14
|
|
15
15
|
例えば,
|
16
16
|
カメラ座標系のx方向単位ベクトルが **u** であるとき,
|