Java-Gaming.org Java4K winners: [ by our judges | by the community ]         
Featured games (67)
games approved by the League of Dukes
Games in Showcase (∞)
games submitted by our members



News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  Print  
  [solved]First Person LookAt Coords /w some code  (Read 1006 times)
0 Members and 2 Guests are viewing this topic.
Offline Cakey

Full Member
**

Posts: 127



« on: 2009-03-16 21:44:28 »

I hate feeling needy and posting on this board like three times a week but I guess it's a good thing this board exists other-wise my programming problems wouldn't get solved Cheesy.
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
public Point3D translateByAngle(float oX, float oY, float oZ,
         float length,
         float angleX,float angleY,float angleZ){
      float rad, xOld, yOld, zOld;
      float x = length, y = 0,z = 0;
      //X ANGLE
     rad = angleX * (float)(Math.PI / 180);      
      xOld = x;zOld = z;
      z = (float)((zOld * Math.cos(rad)) - (xOld * Math.sin(rad)));
      x = (float)((zOld * Math.sin(rad)) + (xOld * Math.cos(rad)));  
      //Y ANGLE
     rad = angleY * (float)(Math.PI / 180);      
      yOld = y; zOld = z;
      y = (float)((yOld * Math.cos(rad))- (zOld * Math.sin(rad)));
      z = (float)((yOld * Math.sin(rad)) + (zOld * Math.cos(rad)));  
      //Z ANGLE
     rad = angleZ * (float)(Math.PI / 180);
      yOld = y; xOld = x;
      x = (float)((xOld * Math.cos(rad)) - (yOld * Math.sin(rad)));
      y = (float)((xOld * Math.sin(rad)) + (yOld * Math.cos(rad)));  
      return new Point3D(oX + x, oY + y, oZ + z);
   }

I'm using this code to calculate the point in 3-Space for my camera to look at. It pretty much takes the angle of the camera and the location of the camera and the distance of sight and calculates a new point(LookAt point).

Though there's some minor problems with it for what I am trying to do. such as if I rotate the Y-Axis the angle in which I am looking up at then changes. When I want it to stay at the same "pitch".

Is there a Z-Rotation for the camera? Is this not the series of equations I should be using? Is there a better way to do this?

My main problem is having my shooting script work with my camera. So I use that same method to shoot as well.

Thanks for reading, if you don't understand the problem I can post, you-tube video, a diagram a better explanation, and/or code. Just lemme know Cheesy

Offline Cakey

Full Member
**

Posts: 127



« Reply #1 on: 2009-03-18 15:20:41 »

To be more specific...


I know you guys have done first person perspective... How'd you all do it?

Offline cylab

JGO Kernel
*****

Posts: 1940
Medals: 27



« Reply #2 on: 2009-03-18 15:36:31 »

Don't apply a delta-rotation on the coordinates from the last frame. Instead store the overall rotation angles in member variables. Everything else depends on the order of the rotations.

Mathias - I Know What [you] Did Last Summer!
Games published by our own members! Go get 'em!
Offline Cakey

Full Member
**

Posts: 127



« Reply #3 on: 2009-03-18 15:58:35 »

On GameDev.net BobJahnova helped me out.

1  
2  
3  
tempX = -(float)(Math.cos(Xangle) * Math.sin(Yangle));
tempZ = (float)(Math.cos(Xangle) * Math.cos(Yangle));
tempY = (float) Math.sin(Xangle);

is the proper vector thing haha Thanks though cylab!

Offline cylab

JGO Kernel
*****

Posts: 1940
Medals: 27



« Reply #4 on: 2009-03-18 16:10:29 »

Maybe just use a vector math library Wink vecmath, openmali, joglutils...

Mathias - I Know What [you] Did Last Summer!
Offline Cakey

Full Member
**

Posts: 127



« Reply #5 on: 2009-03-18 16:37:48 »

Didn't even know such things existed haha. I'll have to look into those!

Offline DzzD

JGO Kernel
*****

Posts: 2134
Medals: 16



« Reply #6 on: 2009-03-19 09:54:29 »


hum... better that you do it yourself once, after use any libraries but for the first time do it yourself, this is really a simple problem what you need is only three method to rotate around X,Y,Z then use them in the correct order. usually for fps (if Y is up an Z going front of you) you just have to rotate around X then around Y.usually for FPS you wont rotate around Z but if you wich to do some kind of roll just rotate around Z at first.

Pages: [1]
  Print  
 
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Page created in 0.106 seconds with 20 queries.