2012-06-14 2 views
1

저는 OpenGL (단지 작은 프로젝트)에서 racecar 게임을 만들고 있고, 카메라보기를 따라 차를 만들 때 문제가 있습니다.OpenGL의 카메라를 따라 객체를 만듭니다.

카메라가 앞으로 및/또는 뒤로 움직이면서 카메라를 따라가는 것은 어렵지 않았지만, 카메라를 회전 (오른쪽 또는 왼쪽보기)하여 자동차의 레메어를 계속 보았습니다. 내 말은 여전히 ​​앞뒤로 움직이지만 카메라 앞쪽에 있지 않습니다 (옆에 있습니다). 나는 문제가 당신이 아닌 modelPOR.Translate

을에하는 gluLookAt의 중심 위치를 변경하는 것이 생각

void updateCam() { 
    gluLookAt(posX,posY + 0.025 * std::abs(sin(headPosAux*PI/180)),posZ, 
     posX + sin(roty*PI/180),posY + 0.025 * std::abs(sin(headPosAux*PI/180)) + cos(rotx*PI/180),posZ -cos(roty*PI/180), 
     0.0,1.0,0.0); 

    listenerPos[0] = posX; 
    listenerPos[1] = posY; 
    listenerPos[2] = posZ; 

    source0Pos[0] = posX; 
    source0Pos[1] = posY; 
    source0Pos[2] = posZ; 

    GLfloat distD; 

    distD = posZ - 3.3; 


    //makes the car "follow" the camera 
    modelPOR.Translate(posX,posY,distD); 

} 

답변

1

: 여기

내 코드 (나는 그것을 구현하려고하는 부분)입니다 gluLookAt의 3 개의 매개 변수가 뷰의 중심을 설정하므로 자동차는 정확히 동일한 위치에 있어야하지만 자동차 위치를 수정하지 않고 센터를 수정해야합니다.

gluLookAt(posX,posY + 0.025 * std::abs(sin(headPosAux*PI/180)),posZ, 

    // center x 
    posX + sin(roty*PI/180), 
    // center y 
    posY + 0.025 * std::abs(sin(headPosAux*PI/180)) + cos(rotx*PI/180), 
    // center z 
    posZ -cos(roty*PI/180), 

    0.0,1.0,0.0); 

아마도 같은 값으로 자동차를 번역해야합니다. 그 때 그것은 중심에 둘 것이다.

그 코드에있는 것 같은 또 다른 문제는 자동차가 아니라 카메라를 회전시키는 것이므로 자동차가 카메라와 같은 방향을 가리 키지 않을 것입니다. (원하는 건지 아니면 elswhere합니까?)

하지만 정말로 카메라를 따라 차를 만들고 싶습니까? 아마 다른 방향으로 나아질 것입니다.

관련 문제