C++ 将相机缩放到3d世界鼠标坐标
我有点被困在试图将我的相机视图缩放到3D空间中的鼠标坐标上 我有鼠标的三维坐标 我的缩放功能只是缩放到屏幕中心,但我希望能够像您在Sketchup中那样进行缩放C++ 将相机缩放到3d世界鼠标坐标,c++,opengl,C++,Opengl,我有点被困在试图将我的相机视图缩放到3D空间中的鼠标坐标上 我有鼠标的三维坐标 我的缩放功能只是缩放到屏幕中心,但我希望能够像您在Sketchup中那样进行缩放 void CCamera::OnMouseWheel(float zDelta) { Position -= Reference; if (zDelta < 0 && length(Position) < 500.0f) { Position += Position * 0.
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();
}
void CCamera::onmouseheel(float zDelta){
位置-=参考;
如果(zDelta<0和长度(位置)<500.0f){
位置+=位置*0.1f;
}
如果(zDelta>0和长度(位置)>0.05f){
位置-=位置*0.1f;
}
位置+=参考;
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,-点(X,位置),-点(Y,位置),-点(Z,位置),1.0f);
ViewMatrixInverse=逆(ViewMatrix);
ViewProjectionMatrix=ProjectionMatrix*ViewMatrix;
ViewProjectionMatrixInverse=ViewMatrixInverse*ProjectionMatrixInverse;
}
void CCamera::Move(const vec3和Movement){
位置+=移动;
参考+=运动;
CalculateViewMatrix();
}
可能重复您为什么要重复您的请求?@Ripi2我更改了我的请求,不认为有人在看它。