私はマウスの動きでカメラのビューを変更しようとしています。カメラが原点の周りをシーンの下を進むことなく円弧状に動かしたいと思っています。ドームのような眺め。Arcballカメラのズーム
以下は、目の座標を取得し、この半アーチボールのビューを作成するのに問題なく機能します。私はシーンの下で見ることができないように条件をハードコードしました。この状態の結果、シーンの下に行くのではなく、カメラが中央にズームインします。私はカメラがこの「ズーム」をするのを妨げる方法について私の心を包み込むことはできません。私がドームビューの最下部に着くと、私は左または右に移動することができます。距離は一定です。どんな指導?
void onMotion(int x, int y) {
camX = distance * -sinf(x*(M_PI/180)) * cosf((y)*(M_PI/180));
camY = distance * -sinf((y)*(M_PI/180));
camZ = -distance * cosf((x)*(M_PI/180)) * cosf((y)*(M_PI/180));
if (camY < 4)
camY = 4;
glutPostRedisplay();
}
距離がまったく変わっていますか?または、そうでない場合、あなたの視野は変化していますか?ズーム効果が発生する可能性もあります。 – user1118321
@ user1118321、距離は静的ではありません。 FOVが変化しているかどうかをどうすれば確認できますか? – rafvasq
視野は投影行列によって制御されます。それが変化していると、ズーム効果が生じる可能性があります。 – user1118321