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

时间:2015-02-11 16:06:53

标签: c++ opengl matrix glm-math

我正在尝试创建一个正交视图(与最终的透视图分开)。我知道视图的比例,位置,它是向上的向量,以及它所看到的点。因此,仅使用glm::lookAt()创建视图矩阵似乎最简单,除非无法指定比例。

有没有办法引入glm::lookAt()缩放?我认为缩放由lookAt制作的矩阵是不可能的,因为缩放需要首先发生以获得“预期”结果(对象看起来更大或更小,比如放大或缩小相机)。我可能在那里错了。

如果在使用lookAt时无法实现,那么是否有一系列相同的glm函数?

1 个答案:

答案 0 :(得分:0)

就矩阵变换而言,您可以从缩放开始,然后应用glm::lookAt()矩阵。我不熟悉glm,但我之前使用过GLUT。你应该可以像这样进行矩阵乘法(我假设你已经将所有东西都转换成场景空间,定义了所有的变量等)。


    TransformedVector = glm::lookAt(cameraPosition,
                                    cameraTarget,  
                                    upVector) * 
                        glm::scale(scalingFactor, 
                                  scalingFactor, 
                                  scalingFactor) * 
                        OriginalVector;

如果此行为异常,请尝试更换glm::lookAt()glm::scale()订单。