我在尝试将相机视图缩放到3D空间中的鼠标坐标时有点困惑。
我有鼠标的3D坐标。
我的缩放功能只是缩放到屏幕中心,但我希望能够像在Sketchup中一样进行缩放。
void CCamera::OnMouseWheel(float zDelta) {
Position -= Reference;
if (zDelta < 0 && length(Position) < 500.0f) {
Position += Position * 0.1f;
}
if (zDelta > 0 && length(Position) > 0.05f) {
Position -= Position * 0.1f;
}
Position += Reference;
CalculateViewMatrix();
}
void CCamera::CalculateViewMatrix() {
ViewMatrix = mat4x4(X.x, Y.x, Z.x, 0.0f, X.y, Y.y, Z.y, 0.0f, X.z, Y.z, Z.z, 0.0f, -dot(X, Position), -dot(Y, Position), -dot(Z, Position), 1.0f);
ViewMatrixInverse = inverse(ViewMatrix);
ViewProjectionMatrix = ProjectionMatrix * ViewMatrix;
ViewProjectionMatrixInverse = ViewMatrixInverse * ProjectionMatrixInverse;
}
void CCamera::Move(const vec3 &Movement) {
Position += Movement;
Reference += Movement;
CalculateViewMatrix();
}