2013-06-18 3 views
0

opengl에 문제가 있습니다. 전진/후진하면서 차량을 회전시키고 싶습니다. Here's a picture 정확히 내 문제를 보여줍니다. 현재 코드의 효과는 파란색으로 표시됩니다. 이동 한 후에는 현재 위치가 아닌 시작 위치로 회전합니다. 나는 빨간색으로 상황을보고 싶다 - 내 차량이 현재 위치 이상으로 회전하고 나중에 정확하게 앞뒤로 움직일 것.OpenGL의 차량 컨트롤?

내 현재 코드 : 당신은 회전하기 전에 번역 전화를 시도 할 수 있습니다

lxr=sin(angle); 
lzr=cos(angle); 

xr+=speed*lxr; 
zr+=speed*lzr; 

totalangle+=angle 

glRotatef(totalangle,0.0,1.0,0.0); 
glTranslatef(0.0,0.0,xr); 
drawVehicle(); 
+1

SO에 배지 ** 가능한 ** 아티스트가 있어야합니다. –

답변

2

. glRotatef는 뷰 행렬을 회전시키고 현재 뷰와 행렬 glTranslatef에 영향을줍니다.

0

원하는대로 차를 회전하려면 좌표계의 원점을 이동해야합니다.

1

이미지에서 나는 번역을하고 있다고 생각했지만 코드를 보았을 때 사실이 아님을 알았습니다.

따라서 사용자가 drawVehicle(); 함수에서 중심 (0,0)에 개체를 렌더링하지 않는 것이 분명합니다. 당신은 센터에서 렌더링하고, 회전시킨 다음 번역해야합니다.

또한 번역이 가짜입니다. 당신은 그냥 Y에서, Z 방향으로 번역됩니다

glTranslatef(0.0,0.0,xr); 

당신은 같은 것을 할 필요가 :

glRotatef(totalangle,0.0,1.0,0.0); 
glTranslatef(0.0,yOffset,0.0); 
drawVehicle(); // render around [0,0]