我现在画了一个机器人,模拟它飞行,但是当它飞起来时到有些地方会失真。不知道如何变换视点。是应该使用gluLoolAt()进行变换吗?具体应该把它放在什么地方?谁能给我一个视点变换的小例子。

解决方案 »

  1.   

    我把gluLoolAt()放在onsize()函数中了。飞机的飞行是在ontimer函数中通过改变飞机的位置来实现飞行的。请问我这样写对吗?
    gluLoolAt(2.0+m_xPosition,2.0+m_yPosition,2.0+m_zPosition,
    m_xPosition,m_xPosition,m_xPosition,
    0.0,1.0,0.0);
    其中m_xPosition是飞机的移动距离。
    总感觉不是很对。因为只有在窗口变换时才调用onsize 函数。但是应该把它放在哪呢?
      

  2.   

    嗯,模拟是根据真实轨迹来吧~可以考虑用微分几何来表示轨迹,这样无论是插值还是表示复杂轨迹,都是一个不错的solution~
      

  3.   

    还有ontimer肯定不对啊~
    应该是OnIdle才对
      

  4.   

    去网上搜索下<学OpenGL编3D游戏>的程序,祝你好运!
      

  5.   

    gluLookAt 本质上就是设置一下OpenGL的变换矩阵
    需要在每次你改变摄像机位置的时候设置
    通常我们是每一帧都更新摄像机位置的
    所以应该每帧都调既然你在 OnTimer()中改变飞机位置
    你可以在 OnTimer()中每次改变飞机位置之后调一次即可