如何缩放使用 glm::lookat() 获得的矩阵?
Posted
技术标签:
【中文标题】如何缩放使用 glm::lookat() 获得的矩阵?【英文标题】:How to scale a matrix obtained with glm::lookat()? 【发布时间】:2015-02-11 16:06:52 【问题描述】:我正在尝试创建一个正交视图(与最终透视图分开)。我知道视图的比例、位置、向上向量以及它正在查看的点。所以似乎最简单的方法是简单地使用glm::lookAt()
来创建视图矩阵,除非无法指定比例。
有没有办法通过glm::lookAt()
引入缩放?我认为不可能缩放由lookAt制作的矩阵,因为需要首先进行缩放以获得“预期”结果(对象看起来更大或更小,例如放大或缩小相机)。不过我可能错了。
如果在使用lookAt时无法实现,是否有一系列等效的glm函数?
【问题讨论】:
你试过正常的缩放矩阵吗? 【参考方案1】:就矩阵变换而言,您可以从一个比例开始,然后应用glm::lookAt()
矩阵。我对 glm 不熟悉,但我以前用过 GLUT。您应该能够进行这样的矩阵乘法(我假设您已经将所有内容转换为场景空间,定义了所有变量等)
TransformedVector = glm::lookAt(cameraPosition,
cameraTarget,
upVector) *
glm::scale(scalingFactor,
scalingFactor,
scalingFactor) *
OriginalVector;
如果这种行为异常,请尝试交换 glm::lookAt()
和 glm::scale()
顺序。
【讨论】:
以上是关于如何缩放使用 glm::lookat() 获得的矩阵?的主要内容,如果未能解决你的问题,请参考以下文章