变焦相机朝向3d世界鼠标坐标

时间:2017-03-30 22:51:46

标签: c++ opengl

我在尝试将相机视图缩放到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();
}

0 个答案:

没有答案