Results 1 to 8 of 8

Thread: Can anybody help me?

  1. #1
    Junior Member Newbie
    Join Date
    Jun 2009
    Location
    Turkey
    Posts
    7

    Can anybody help me?

    Hey i got a problem.

    I wrote a program just do basic manipulation animations on robot arm puma 560.

    I can send my code to seeing problem.

    Please help me with hurry. My msn address is that: promachine@windowslive.com

    Problem is that: i call some objects on my screen and i can't do depth testing on screen. I use glCallList to call objects. Please help me, this is my school project. I will try to advanced manipulations when i figured out this problem. Thanx
    Hey,let's blow something up

  2. #2
    Junior Member Newbie
    Join Date
    Jun 2009
    Location
    Turkey
    Posts
    7

    Re: Can anybody help me?

    it is simply read a xml(for SolidWorks object)...
    and manipulate the object

    this is the code:
    #include "Read3DXML.h"
    #include "StringTokenizer.h"

    #include <windows.h>
    #include <gl\glu.h>
    #include <gl\glut.h>

    //mouse <1>
    static GLfloat yrotation;
    static GLfloat xrotation;

    GLfloat mouseX;
    GLfloat mouseY;
    GLfloat zvalue = 0.0f;
    int mouseState;
    int mouseButton;
    //mouse </1>

    GLfloat rxV=0;
    GLfloat ryV=0;
    GLfloat rzV=0;

    GLuint m_co(){
    GLuint list = glGenLists(1);
    glNewList(list, GL_COMPILE_AND_EXECUTE);
    glColor3f(0.0f,1.0f,0.0f);
    glBegin(GL_LINES);
    glVertex3f(0.0f,0.0f,0.0f);
    glVertex3f(100.0f,0.0f,0.0f);
    glEnd();
    glColor3f(1.0f,0.0f,0.0f);
    glBegin(GL_LINES);
    glVertex3f(0.0f,0.0f,0.0f);
    glVertex3f(0.0f,100.0f,0.0f);
    glEnd();
    glColor3f(0.0f,0.0f,1.0f);
    glBegin(GL_LINES);
    glVertex3f(0.0f,0.0f,0.0f);
    glVertex3f(0.0f,0.0f,100.0f);
    glEnd();
    glEndList();
    return list;
    }

    GLuint makeShape(const char* name,GLfloat color){
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glEnable(GL_DEPTH_TEST);
    static int i=0;
    int stack=0;
    int control=0;
    vector<int>::const_iterator iter;
    i++;
    Read3DXML* shape = new Read3DXML(name,name);
    GLuint list = glGenLists(1)+i;
    glNewList(list, GL_COMPILE);
    glColor3f(color,color,color);

    for(iter = shape->faces_Tokenizer.begin();iter != shape->faces_Tokenizer.end();++iter){
    if(*iter == *(shape->faces_Tokenizer.end()-1)) break;
    glBegin(GL_TRIANGLES);
    for(int i=*iter;i<=(*(iter+1)-2);i=i+3){
    glNormal3f(shape->getN1().at(stack+shape->faceMap_.at(i)),shape->getN1().at(stack+shape->faceMap_.at(i+1)),shape->getN1().at(stack+shape->faceMap_.at(i+2)));
    glVertex3f(shape->getX().at(stack+shape->faceMap_.at(i)),shape->getY().at(stack+shape->faceMap_.at(i)),shape->getZ().at(stack+shape->faceMap_.at(i)));
    glVertex3f(shape->getX().at(stack+shape->faceMap_.at(i+1)),shape->getY().at(stack+shape->faceMap_.at(i+1)),shape->getZ().at(stack+shape->faceMap_.at(i+1)));
    glVertex3f(shape->getX().at(stack+shape->faceMap_.at(i+2)),shape->getY().at(stack+shape->faceMap_.at(i+2)),shape->getZ().at(stack+shape->faceMap_.at(i+2)));
    }
    glEnd();

    stack = stack + shape->posMap_.at(control);
    control++;
    }
    glEndList();
    return list;
    }

    void timer(int val){
    rxV=rxV+1;
    glutTimerFunc(1,timer,1);
    glutPostRedisplay();
    }

    void setup(){
    GLfloat ambientLight[] = {0.3f,0.3f,0.3f,1.0f};
    GLfloat diffuseLight[] = {0.7f,0.7f,0.7f,1.0f};
    GLfloat lightPos[] = {-400.0,0.0f,100.0f,1.0f};
    glLightfv(GL_LIGHT0,GL_POSITION,lightPos);
    glEnable(GL_DEPTH_TEST);
    glHint(GL_POLYGON_SMOOTH_HINT, GL_NICEST);
    glEnable(GL_CULL_FACE);
    glEnable(GL_LIGHTING);
    glLightfv(GL_LIGHT0,GL_AMBIENT,ambientLight);
    glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuseLight);
    glEnable(GL_LIGHT0);
    glEnable(GL_COLOR_MATERIAL);
    glClear(GL_DEPTH_BUFFER_BIT);
    glLineWidth(4.0f);
    glColorMaterial(GL_FRONT,GL_AMBIENT_AND_DIFFUSE);
    glClearColor(0.0f,0.2f,0.5f,1.0f);
    }



    void drawShape(GLuint shapeName,GLfloat dx,GLfloat dy,GLfloat dz,GLfloat anglex,GLfloat angley,GLfloat anglez){
    glPushMatrix();
    glTranslatef(dx,dy,dz);
    glRotatef(anglex,1.0f,0.0f,0.0f);
    glRotatef(angley,0.0f,1.0f,0.0f);
    glRotatef(anglez,0.0f,0.0f,1.0f);
    glCallList(shapeName);
    glPopMatrix();
    glLoadIdentity();
    }

    void display(){
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    GLuint shape1 = makeShape("A.xml",0.1);
    GLuint shape2 = makeShape("B.xml",0.4);
    GLuint shape3 = makeShape("C.xml",0.5);
    GLuint shape4 = makeShape("D.xml",0.6);
    GLuint shape5 = makeShape("masa.xml",0.7);
    GLuint shape6 = makeShape("masa2.xml",0.;
    GLuint co = m_co();
    glPushMatrix();
    glTranslatef(0.0f,0.0f,zvalue);
    glRotatef(xrotation,1.0f,0.0f,0.0f);
    glRotatef(yrotation,0.0f,1.0f,0.0f);
    glTranslatef(0.0f,0.0f,-2400.0f);
    glRotatef(135.0f,1.0f,0.0f,0.0f);
    glRotatef(-30.0f,0.0f,0.0f,1.0f);
    /*
    glTranslatef(0.0f,1400.0f,0.0f);*/
    glPushMatrix();
    glCallList(co);
    drawShape(shape6,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f);
    glDeleteLists(shape6,1);
    drawShape(shape5,1200.0f,0.0f,200.0f,0.0f,0.0f,0.0 f);
    glTranslatef(300.0f,0.0f,-600.0f);
    glRotatef(rxV,0.0f,0.0f,1.0f);
    glDeleteLists(shape2,1);
    drawShape(shape2,0.0f,0.0f,0.0f,180.0f,0.0f,0.0f);
    glTranslatef(380.0f,-700.0f,-300.0f);
    glPushMatrix();
    glRotatef(rxV,1.0f,0.0f,0.0f);
    drawShape(shape4,0.0f,0.0f,0.0f,0.0f,90.0f,0.0f);
    glPopMatrix();
    glTranslatef(0.0f,700.0f,0.0f);
    drawShape(shape3,0.0f,0.0f,0.0f,0.0f,90.0f,-90.0f);
    /*


    glTranslatef(380.0f,-700.0f,-300.0f);
    drawShape(shape4,0.0f,0.0f,0.0f,rxV,90.0f,0.0f);
    drawShape(shape3,680.0f,0.0f,-900.0f,0.0f,90.0f,-90.0f);
    drawShape(shape1,300.0f,0.0f,0.0f,180.0f,0.0f,0.0f );
    drawShape(shape6,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f);
    drawShape(shape5,1200.0f,0.0f,200.0f,0.0f,0.0f,0.0 f);
    */
    glPopMatrix();
    glPopMatrix();
    glutSwapBuffers();
    glutTimerFunc(1,timer,1);
    }

    void Reshape(GLsizei w,GLsizei h){
    GLfloat fAspect;
    fAspect = (GLfloat)w/(GLfloat)h;
    glViewport(0,0,w,h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    /*glOrtho(-2180,2180,-2180,2180,-2180,2180);*/
    gluPerspective(60.0f,fAspect,-1600.0f,0.0f);
    /*glFrustum(-1.0,1.0,-1.0,1.0,0.0,1600);*/
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    }

    void mouse(int btn, int state, int x, int y)
    {
    if (state == GLUT_DOWN){
    mouseState = state;
    mouseButton = btn;
    mouseX = x;
    mouseY = y;
    }else{
    mouseState = 0;
    }
    }

    void motion(int x, int y)
    {
    if (mouseState == GLUT_DOWN){
    if (mouseButton == GLUT_LEFT_BUTTON){
    yrotation -= (mouseX - x)*0.1; //about y-axis
    xrotation -= (mouseY - y)*0.1; //about x-axis
    }else if (mouseButton == GLUT_RIGHT_BUTTON){
    zvalue -= (mouseX - x)*10;
    }
    }
    mouseX = x;
    mouseY = y;
    glutPostRedisplay();
    }

    int main(){
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA | GLUT_DEPTH);
    glutInitWindowSize(800,600);
    glutCreateWindow("puma");
    glutMouseFunc(mouse);
    glutMotionFunc(motion);
    setup();
    glutDisplayFunc(display);
    glutReshapeFunc(Reshape);
    /*glutTimerFunc(10,timer,1);*/
    glutMainLoop();
    }
    Hey,let's blow something up

  3. #3
    Junior Member Newbie
    Join Date
    Jun 2009
    Location
    Turkey
    Posts
    7

    Re: Can anybody help me?

    i describe my problem:

    i call something to display but the first thing i called has displayed before the others and this is not good. Can i do depth testing for display lists...is glCallList support DOUBLE BUFFERING.
    Hey,let's blow something up

  4. #4
    Senior Member OpenGL Guru
    Join Date
    Oct 2004
    Posts
    4,660

    Re: Can anybody help me?

    Quote Originally Posted by kemal ACIKGOZ
    i call something to display but the first thing i called has displayed before the others and this is not good. Can i do depth testing for display lists...is glCallList support DOUBLE BUFFERING.
    Yes, there is nothing about display lists that precludes using depth testing or double buffering. Think of them as just a function call with a bunch of OpenGL calls in it.

  5. #5
    Senior Member OpenGL Guru
    Join Date
    Oct 2004
    Posts
    4,660

    Re: Can anybody help me?

    Your display() function is calling and executing m_co() every frame. This function creates, generates, and executes that display list every time it is called. I suspect this is related to your problem.

    You should generate your display list during init (COMPILE). Then simply execute it as desired when inside your display() function (CallList).

  6. #6
    Junior Member Newbie
    Join Date
    Jun 2009
    Location
    Turkey
    Posts
    7

    Re: Can anybody help me?



    so, how can i handle this problemmm. I try to use depth testing but this is happen everytime... i will disconnect from internet. If you know answer send me e-mail please.



    _______________________

    Hey,let's blow something up

  7. #7
    Senior Member Frequent Contributor yooyo's Avatar
    Join Date
    Apr 2003
    Location
    Belgrade, Serbia
    Posts
    872

    Re: Can anybody help me?

    gluPerspective(60.0f,fAspect,-1600.0f,0.0f) is wrong...
    zNear and zFar must be greater than 0.0 and zFar must be greater than zNear.

    http://www.opengl.org/documentation/...rspective.html


    Also, code is really bad.

  8. #8
    Junior Member Newbie
    Join Date
    Jun 2009
    Location
    Turkey
    Posts
    7

    Re: Can anybody help me?

    hey dude(Dark Photon). Thank you very much. Only person who helped me is you. ThanX. If you need help for anything just send me e-mail. For everything ... I am professional in Electronics.
    Hey,let's blow something up

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
Proudly hosted by Digital Ocean