我刚开始学习OpenGL中的转换,我对将形状修改为不同位置,角度或大小的步骤感到困惑。
假设我想将(a)中的场景转换为房子(b)部分的场景,我该如何决定是缩放它,翻译它还是先旋转它?结果会有所不同吗?
谢谢。
答案 0 :(得分:2)
根据变换的顺序,结果肯定会有所不同。
以下是一些直接回答您问题的伪代码(假设每个函数都以x,y,z
作为参数):
translate(-6, 0, 0)
rotate(0, 0, 135)
scale(2, 1, 1)
现在让我们来看看为什么这个订单很重要!
接下来,让我们看看当我们逆时针旋转45°然后沿正X轴平移时会发生什么:
注意翻译是如何导致广场向右上角移动的?这是因为旋转变换也修改了局部轴。现在正X指向右上角。如果我们旋转180°,那么+ X将指向左侧而不是右侧。
现在让我们看看当我们以相反的顺序执行相同的转换时会发生什么:
这次翻译按预期将广场向右移动。之后,广场被旋转。
查看open.gl page on Transformations以获取更多详细信息,特别是围绕所有这些背后的数学。