本人毕业设计需要使用opengl制作动画,不知如何实现动画,请高人指教!
先给出一个一条线段示例,起始点是(0,0,0),终点是(5000+x,5000+y,5000+z)
现在需要做一个简单动画如下表表示:时间(s)  0.1  0.2  0.3 ....  假设到2秒为止
 x       100  200  300 .... 
 y       100  200  300 ....
 z       100  200  300 ....下面是这条线段的代码,希望有高人能在这段代码的基础上帮我添加实现动画的语句,谢谢!#include <windows.h>
#include <windows.h>
#include <GL/glut.h>
#include <math.h>float x=0;
float y=0;
float z=0;void model(void) 
{
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
gluLookAt(-100,-100,40,100,0,0,0,0,100);
glLineWidth(1);
glBegin(GL_LINES);//坐标轴
   glColor3f(1,1,1);
   glVertex3f(0,0,0);//X轴
   glVertex3f(100000,0,0);
   glVertex3f(0,0,0); //Y轴
   glVertex3f(0,100000,0);
   glVertex3f(0,0,0);//Z轴
   glVertex3f(0,0,100000);
glEnd();glLineWidth(5);
glBegin(GL_LINES);
   glColor3f(0,1,1);
   glVertex3f(0,0,0);  
   glVertex3f(5000+x,5000+y,5000+z);
glEnd();glFlush();
}
void reshape(int w,int h)
{
 glViewport(0,0,w,h);
 glMatrixMode(GL_PROJECTION);
 glLoadIdentity();
 glOrtho(-15000,15000,-10000,20000,-30000,30000);
}void init()
{
 glClearColor(1.0,1.0,1.0,1.0);
 glColor3f(0.0,0.0,0.0);
}int main(int argc, char *argv[]) 
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE);
glutInitWindowPosition(200,100);
glutInitWindowSize(600,600);
glutCreateWindow("DESIGN");
glutReshapeFunc(reshape);
glutDisplayFunc(&model);
glutMainLoop();
init();
return 0;
}

解决方案 »

  1.   

    最简单的就是在model里改变绘制参数
      

  2.   

    最简单的办法是下载那个VC++ 6.0 35MB的绿色版。里面集成了一个OpenGL的模版。Next Next Next,编译,1分钟搞定。
      

  3.   

    我希望可以循环调用那个model函数,只改变x,y,z值,应该用什么语句?
      

  4.   

    main函数里加一句
    glutIdleFunc(model);
    试试
    如果不行你就查一下glutIdleFunc的用法
    你这个需求就是和它有关
      

  5.   

    用直线的参数方程即可,如果直线的起点是 p1,终点是p2的话,那么直线可以表示为l = p1 + t*(p2-p1)其中t就是参数,如果要动画显示出这个直线,只需要在渲染直线的时候改变参数t即可//定义直线端点 P1和P2
    // P = P1+(P2-P1)*t; //定义参数t
    static double t; glBegin(GL_LINES);
    glVertex3f(p1.x, p1.y, p1.z);
    glVertex3f(p.x, p.y, p.z);
    glEnd(); //可以任意设置参数范围,比如[0,1]
    if(t>=1.0) t=1.0;
    t+=0.02;