私は現在、カメラが常に原点を見て、左、右、上、下を押すだけでオブジェクトの周りを移動するクリスタルボールインターフェースカメラをセットアップしています。
これを変更して、カメラが 3D 環境を自由に動き回れるようにします。
現在、前述の CB インターフェイスとして実装されている LEFT と UP の 2 つの関数があります。
左右のキーで左右に機銃掃射し、上下でカメラを上げ下げします。変更するには具体的にどのようにすればよいですか?
また、カメラを前後に動かす適切な方法は何でしょうか? マウスをドラッグすることは、前後に移動することと同じになるのではないかと考えていましたか?
void Transform::left(float degrees, vec3& eye, vec3& up) {
eye = eye*rotate(degrees, up);
}
void Transform::up(float degrees, vec3& eye, vec3& up) {
vec3 ortho_axis = glm::cross(eye, up);
ortho_axis = glm::normalize(ortho_axis);
eye = eye*rotate(degrees, ortho_axis);
up = up*rotate(degrees, ortho_axis);
}