定向图形以使用 OpenGL 查看相机
Orientating Figures to look at the Camera with OpenGL
在我的opengl应用程序中,我想定向图形以观察相机,为此,我为所有对象定义了2个向量,正面和向上。
我使用gluLookAt来控制相机,所以我需要的矢量newFront和newUp很容易知道。
我用来控制每个图形方向的代码是:
m4D orientate(v3D newFront, v3D newUp)
{
double angle = angle_between(front, newFront);
v3D cross = normalize(cross_product(front, newFront));
m4D matrix = rotate_from_axis(angle, cross);
up = normalize(up * matrix);
angle = angle_between(up, newUp);
cross = normalize(cross_product(up, newUp));
return(rotate_from_axis(angle, cross) * matrix);
}
当矩阵堆栈只有这个矩阵时,这段代码效果很好,但是如果我推动以前的矩阵旋转(当然向前和向上旋转向量),它会失败。
我的错是什么?
当有一种更简单的方法时,为什么总是那些复杂的"我求解反向旋转并将其乘以模型视图"的广告牌/冒名顶替者解决方案?
设 M 为模型视图矩阵,从中确定广告牌矩阵。矩阵是 4×4 实值类型。左上角的 3×3 定义了旋转和缩放。对于广告牌来说,这部分是身份。
因此,通过将当前模型视图矩阵的左上角替换为恒等式,并保留其余部分,即
1 0 0 tx
0 1 0 ty
0 0 1 tz
wx wy wz ww
使用该矩阵进行进一步的转换,您可以获得所需的效果。如果应用了缩放,请将左上角的标识替换为缩放矩阵。
相关文章:
- 了解 GLM- openGL 中的相机转换
- OpenGL相机和相机空间转型的困惑
- OpenGL 相机移动程序顶点着色器问题
- OpenGL 正交相机变焦无法正常工作
- 在 opengl 中翻译相机时遇到问题
- 如何使用gluLookAt围绕OpenGL中的点旋转相机视图
- OpenGL - 让相机移动
- OpenGL使对象坚持到相机
- OpenGL-绘制相机空间后,将模型放置在世界空间中
- 将相机变换应用于 OpenGL
- 定向图形以使用 OpenGL 查看相机
- 如何使OpenGL相机旋转360度
- 用于相机的C++OpenGL四元数将其倒置
- C++OpenGl相机旋转使用四元数问题
- Opengl相机和乘法矩阵
- OpenGL相机太落后了
- OpenGL相机位置和天空盒
- 我的OpenGL相机运动的问题
- OpenGL 相机旋转不起作用
- OpenGL -相机轨道点与四元数