各位大侠,最近在做一个系统在做的过程中遇到一个这样的问题,哪位大侠帮忙给指点一下吧。
    问题如下:用gluLookAt改变视点,然后重绘场景,怎么原来的场景中的物体的相对位置发生了变化,这是什么原因啊?

解决方案 »

  1.   

    视点变换可以通过gluLookAt()函数完成,那三组参数分别指定了相机的位置、瞄准方向的参考点和相机向上方向。 
    通常视点变换操作在模型变换操作之前发出,以便模型变换先对物体发生作用。这样,场景中物体的顶点经过模型转换后一定到所希望的位置,然后再对场景进行视点定位等操作。模型变换和视点变换共同构成模型视景矩阵。 
    gluLookAt (0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0); 
    1、改变前三个参数的值可以模拟人在实际环境中的移动; 
    2、改变中间三个参数的值,可以模拟人眼的转动,即所观察场景的变化。 
    3、后三个参数的值比较特殊,它所制定的不是一个点,而是一个方向,即决定将哪一个坐标轴作为向上的方向,如果向上方向与观察点到中心点的方向一致,结果将是不确定的。 
    楼主可以自己在网上查查gluLookAt 的一些说明与用法!
      

  2.   

    因为你多用了一次gluLookat,你程序里有错误代码,例如,你的程序已经有gluLookAt(0,10,10,0,0,0,0,1,0);
    结果没看到,依然利用camera类,就会有这种情况~