• Create Account

FPS Camera

Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

5 replies to this topic

#1mrmohadnan  Members   -  Reputation: 278

Like
0Likes
Like

Posted 20 April 2013 - 09:51 AM

Hello every one ,

In previous post "http://www.gamedev.net/topic/640972-skinned-animation-problem/"I faced problem related to rotation the weapon around the with the camera and position the weapon in front of camera  , I solve it by :

1 : Before export the Model from Blender , I first make sure to position it in (0,0,0) , then make sure it's up axis is Y-axis and make sure it face x-axis .

but the problem now is :
1 :  When I make rotation around the pitch axis it did not behave pretty and good .
2 : When I make rotation around the pitch axis by 180 I see the model hands in front of my camera !! how and see through the Weapon and hand.

This is the edited code :

Vector3 forward = cci.Camera.WorldMatrix.Forward + new Vector3(0, -5, 0);
Matrix translatePlayer = Matrix.CreateTranslation(cci.Camera.WorldMatrix.Translation+ forward);
Matrix scalePlayer = Matrix.CreateScale(0.05f);
Matrix rotatePlayer = Matrix.CreateFromAxisAngle(cci.Camera.WorldMatrix.Left,
cci.Camera.Pitch) * Matrix.CreateFromAxisAngle(Vector3.Up, cci.Camera.Yaw);
staticModel.Transform = scalePlayer * rotatePlayer * translatePlayer ;


and here 2 explanation photos :
1 : When start the game :

2 : After I make rotation around the y-axis for example 130 degree then I make rotation around the pitch axis by 30 degree see what happens :

Edited by mrmohadnan, 20 April 2013 - 09:52 AM.

#2mrmohadnan  Members   -  Reputation: 278

Like
0Likes
Like

Posted 21 April 2013 - 06:40 AM

Hello again , I solve the rotation problem by :

            Vector3 forward = cci.Camera.WorldMatrix.Forward + new Vector3(0, -1, 0);

if (cci.Camera.Pitch <= MathHelper.ToRadians(-40))
{
}
if (cci.Camera.Pitch >= MathHelper.ToRadians(40))
{
}

Matrix translatePlayer = Matrix.CreateTranslation(cci.Camera.WorldMatrix.Translation + forward);
Matrix scalePlayer = Matrix.CreateScale(0.05f);

Matrix rotatePlayer = Matrix.CreateRotationX(cci.Camera.Pitch) *
Matrix.CreateFromAxisAngle(Vector3.Up, cci.Camera.Yaw);
staticModel.Transform = scalePlayer * rotatePlayer * translatePlayer ;


but , all what I want is to prevent hands to be visible when rotating down , I try this code  and did not works good ? so any solutions or suggestion ?



if (cci.Camera.Pitch <= MathHelper.ToRadians(-40))
{
}
if (cci.Camera.Pitch >= MathHelper.ToRadians(40))
{
}



Edited by mrmohadnan, 21 April 2013 - 06:47 AM.

#3eppo  Crossbones+   -  Reputation: 2299

Like
0Likes
Like

Posted 22 April 2013 - 05:06 AM

It might be a good idea to read up on nested transformation spaces. Link.

This can be solved a lot easier by parenting the gun to the hand by transforming its local transformation by the hand's world transform.

Matrix gunWorld = gunLocal * handWorld. (where handWorld = handLocal * playerWorld).

The camera can then be attached to the gun: cameraWorld = cameraLocal * gunWorld. -> cameraView = inverse(cameraWorld).

#4mrmohadnan  Members   -  Reputation: 278

Like
0Likes
Like

Posted 22 April 2013 - 09:10 AM

I see through hands !!! this is my problem  ? so any suggestions how to play with the pitch or other transformation to prevent this ?

#5belfegor  Crossbones+   -  Reputation: 2326

Like
1Likes
Like

Posted 22 April 2013 - 09:53 AM

Decrease your near clip plane.

Also, your model must be "properly" designed for first person view, if not you might need to reposition it a little bit down so that there is a small chance to intersects with your near clip plane.

Edited by belfegor, 22 April 2013 - 10:04 AM.

#6mrmohadnan  Members   -  Reputation: 278

Like
0Likes
Like

Posted 22 April 2013 - 12:48 PM

Thanks belfegor you helped me a lot ,  I will never forget your help , good luck.

Edited by mrmohadnan, 22 April 2013 - 12:49 PM.

Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

PARTNERS