Results 1 to 3 of 3

Thread: How to move in 3d world

  1. #1

    Thread Starter
    Fanatic Member pradeepkrao's Avatar
    Join Date
    Sep 2001
    Location
    New Jersey
    Posts
    534

    How to move in 3d world

    Hi,

    I am able to move my camera up and down.. by using...

    D3DXMatrixLookAtLH matView, CameraP, CameraTo, MakeVector(0, 1, 0)

    D3DDevice.SetTransform D3DTS_VIEW, matView

    How do I move my camera towards the object...??..

    I know by changing the cameraP and cameraTo would do it..
    But I am finding hard to calculate the new position of the camera.. can anybody help me out..

    Thanks,
    Pradeep
    Learn by others experience as you cannot live long to experience them all.
    www.freewebs.com/pradeepkrao

    LOOK AT MY GAMES AT MY WEB SITE.

  2. #2

    Thread Starter
    Fanatic Member pradeepkrao's Avatar
    Join Date
    Sep 2001
    Location
    New Jersey
    Posts
    534

    Solved..........

    Hi,

    I used my simple point projection logic.
    This is how I have done .....

    Now I am able to move my Camera anywere in 3d world and I can rome arround...

    When use hits the arrow keys I call the rotateCamera function ..

    VB Code:
    1. Public Sub rotateCamera(AngleA As Single, AngleB As Single)
    2. Dim ax As Single, ay As Single, az As Single
    3.  
    4. ax = CameraTo.X - CameraPos.X
    5. ay = CameraTo.Y - CameraPos.Y
    6. az = CameraTo.Z - CameraPos.Z
    7.  
    8.     CameraTo.X = ax + CameraPos.X
    9.     CameraTo.Y = (ay * Cos(DegToRad(AngleA))) - (az * Sin(DegToRad(AngleA))) + CameraPos.Y
    10.     CameraTo.Z = (az * Cos(DegToRad(AngleA))) + (ay * Sin(DegToRad(AngleA))) + CameraPos.Z
    11.  
    12.  
    13. CAngleA = CAngleA + AngleA
    14. CAngleB = CAngleB + AngleB
    15. If CAngleA > 360 Or CAngleA < -360 Then CAngleA = 0
    16. If CAngleB > 360 Or CAngleB < -360 Then CAngleB = 0
    17.  
    18. ax = CameraTo.X - CameraPos.X
    19. ay = CameraTo.Y - CameraPos.Y
    20. az = CameraTo.Z - CameraPos.Z
    21.  
    22.        
    23.     CameraTo.X = ax * Cos(DegToRad(AngleB)) + az * Sin(DegToRad(AngleB)) + CameraPos.X
    24.     CameraTo.Y = ay + CameraPos.Y
    25.     CameraTo.Z = az * Cos(DegToRad(AngleB)) - ax * Sin(DegToRad(AngleB)) + CameraPos.Z
    26.        
    27.    
    28. End Sub
    29.  
    30.  
    31.  
    32. Private Function DegToRad(Angle As Single) As Single
    33.     DegToRad = Angle * pi / 180
    34. End Function
    35.  
    36.  
    37. 'When I want to move my Camera ahead I have to change its position.. And respectively change the look at vector also...
    38. 'The following functions does it...
    39.  
    40. Private Function MoveCamera(direction As Integer)
    41.    
    42.     Select Case direction
    43.    
    44.     Case 1
    45.        
    46.         CameraPos.X = CameraPos.X - 0.1 * Sin(DegToRad(CAngleB))
    47.         CameraPos.Z = CameraPos.Z - 0.1 * Cos(DegToRad(CAngleB))
    48.        
    49.         CameraTo.X = CameraTo.X - 0.1 * Sin(DegToRad(CAngleB))
    50.         CameraTo.Z = CameraTo.Z - 0.1 * Cos(DegToRad(CAngleB))
    51.            
    52.     Case -1
    53.    
    54.         CameraPos.X = CameraPos.X + 0.1 * Sin(DegToRad(CAngleB))
    55.         CameraPos.Z = CameraPos.Z + 0.1 * Cos(DegToRad(CAngleB))
    56.        
    57.         CameraTo.X = CameraTo.X + 0.1 * Sin(DegToRad(CAngleB))
    58.         CameraTo.Z = CameraTo.Z + 0.1 * Cos(DegToRad(CAngleB))
    59.        
    60.     Case 2
    61.                
    62.         CameraTo.Y = CameraTo.Y - 0.005 * Cos(DegToRad(CAngleA))
    63.         If CameraTo.Y < -0.5 Then CameraTo.Y = -0.5
    64.         If CameraTo.Y > 0.5 Then CameraTo.Y = 0.5
    65.    
    66.     Case -2
    67.                
    68.         CameraTo.Y = CameraTo.Y + 0.005 * Cos(DegToRad(CAngleA))
    69.         If CameraTo.Y < -0.5 Then CameraTo.Y = -0.5
    70.         If CameraTo.Y > 0.5 Then CameraTo.Y = 0.5
    71.        
    72.     End Select
    73.    
    74. End Function

    Regards,
    Pradeep
    Learn by others experience as you cannot live long to experience them all.
    www.freewebs.com/pradeepkrao

    LOOK AT MY GAMES AT MY WEB SITE.

  3. #3

    Thread Starter
    Fanatic Member pradeepkrao's Avatar
    Join Date
    Sep 2001
    Location
    New Jersey
    Posts
    534

    Hae just forgot to put the main part of code

    After calling the rotateCamera or MoveCamera function
    Add the following lines of code...

    D3DXMatrixLookAtLH matView, CameraPos, CameraTo, MakeVector(0, 1, 0)

    D3DDevice.SetTransform D3DTS_VIEW, matView


    Regards,
    Pradeep
    Learn by others experience as you cannot live long to experience them all.
    www.freewebs.com/pradeepkrao

    LOOK AT MY GAMES AT MY WEB SITE.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width