如何缩放使用glm::lookat()获得的矩阵
How to scale a matrix obtained with glm::lookat()?
我正在尝试创建一个正交视图(与最终透视视图分离)。我知道视图的比例、位置、向上矢量以及它所观察的点。因此,简单地使用glm::lookAt()
创建视图矩阵似乎最简单,但无法指定比例。
有没有一种方法可以引入glm::lookAt()
的缩放?我认为不可能缩放lookAt生成的矩阵,因为缩放需要首先进行才能获得"预期"结果(对象看起来更大或更小,比如放大或缩小相机)。不过我可能错了。
如果在使用lookAt时无法实现,是否有一系列等效的glm函数?
就矩阵变换而言,您可以从缩放开始,然后应用glm::lookAt()
矩阵。我不熟悉glm,但我以前用过GLUT。你应该能够做这样的矩阵乘法(我假设你已经将所有内容转换到场景空间,定义了所有变量等)
TransformedVector = glm::lookAt(cameraPosition,
cameraTarget,
upVector) *
glm::scale(scalingFactor,
scalingFactor,
scalingFactor) *
OriginalVector;
如果这种行为特别,请尝试交换glm::lookAt()
和glm::scale()
顺序。
相关文章:
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 计算缩放多边形的比例,得到给定的多边形面积
- QwtPlot具有相等的轴和自动缩放
- 如何在directx/c++中进行平移/缩放操作
- 在Qt中实现无限可缩放的画布
- 是否可以为 QPixmap 派生类嵌入缩放方法?
- 形状对象的旋转和缩放不正确C++
- 如何在 OpenSceneGraph 中缩放/旋转/移动资产
- 如何在OpenGL(GLFW,很高兴)中进行2D缩放?
- 改变或缩放两个正态分布以具有特定的相关系数
- SDL2 调整窗口大小后如何缩放鼠标坐标?
- 如何在OpenGL中正确旋转和缩放对象?
- 仅当类型为 std::complex 时,才进行缩放
- 将 VS Code 用于跨平台可缩放C++项目
- 根据帧速率缩放/缩小数字
- 在 c++ 中缩放浮点值
- 如何防止 DirectX C++程序的拉伸/缩放
- 使用提升几何缓冲区缩放多边形时的冗余折点
- 为什么我不能使用 Sphere 来缩放字形?
- 如何缩放使用glm::lookat()获得的矩阵