Webgl Translation After Rotation Of The Camera (as An Fps)
I've already done some projects with c++ and OpenGL, now I'm creating a simple project with html5 and WebGL. The problem is, after I rotate the camera, the movement is always alon
Solution 1:
I solved, the problem was I forgot some components in the calculation of camera position. This is the correct code:
// movementsif(currentlyPressedKeys[A])
{
px -= DELTA_MOVE * Math.cos(ang * Math.PI / 180.0);
px -= DELTA_MOVE * Math.cos(roll * Math.PI / 180.0);
py -= DELTA_MOVE * Math.sin(elev * Math.PI / 180.0);
py += DELTA_MOVE * Math.sin(roll * Math.PI / 180.0);
pz -= DELTA_MOVE * Math.sin(ang * Math.PI / 180.0);
pz -= DELTA_MOVE * Math.sin(elev * Math.PI / 180.0);
}
if(currentlyPressedKeys[D])
{
px += DELTA_MOVE * Math.cos(ang * Math.PI / 180.0);
px += DELTA_MOVE * Math.cos(roll * Math.PI / 180.0);
py += DELTA_MOVE * Math.sin(elev * Math.PI / 180.0);
py -= DELTA_MOVE * Math.sin(roll * Math.PI / 180.0);
pz += DELTA_MOVE * Math.sin(ang * Math.PI / 180.0);
pz += DELTA_MOVE * Math.sin(elev * Math.PI / 180.0);
}
if(currentlyPressedKeys[W])
{
px += DELTA_MOVE * Math.sin(ang * Math.PI / 180.0);
px += DELTA_MOVE * Math.sin(roll * Math.PI / 180.0);
py -= DELTA_MOVE * Math.sin(elev * Math.PI / 180.0);
py += DELTA_MOVE * Math.sin(roll * Math.PI / 180.0);
pz -= DELTA_MOVE * Math.cos(ang * Math.PI / 180.0);
pz -= DELTA_MOVE * Math.cos(elev * Math.PI / 180.0);
}
if(currentlyPressedKeys[S])
{
px -= DELTA_MOVE * Math.sin(ang * Math.PI / 180.0);
px -= DELTA_MOVE * Math.sin(roll * Math.PI / 180.0);
py += DELTA_MOVE * Math.sin(elev * Math.PI / 180.0);
py -= DELTA_MOVE * Math.sin(roll * Math.PI / 180.0);
pz += DELTA_MOVE * Math.cos(ang * Math.PI / 180.0);
pz += DELTA_MOVE * Math.cos(elev * Math.PI / 180.0);
}
The mistery is how it worked in OpenGL, but now it's correct.
Post a Comment for "Webgl Translation After Rotation Of The Camera (as An Fps)"