如何缩放使用glm::lookat()获得的矩阵

How to scale a matrix obtained with glm::lookat()?

本文关键字:lookat 何缩放 缩放 glm      更新时间:2023-10-16

我正在尝试创建一个正交视图(与最终透视视图分离)。我知道视图的比例、位置、向上矢量以及它所观察的点。因此,简单地使用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()顺序。