Bug CameraLookAt RotateCamera consécutifs

Archive.
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Bug CameraLookAt RotateCamera consécutifs

Message par djes »

Je suis en train de faire un petit jeu en 3d. J'ai vu qu'il n'y avait pas de commande pour que la caméra s'oriente autrement qu'en relatif.

Comme j'ai remarqué qu'il existait une commande lookat, j'ai pensé qu'il suffisait de faire ceci :

Code : Tout sélectionner

CameraLookAt(0, CameraX(0), CameraY(0), CameraZ(0)-10)
RotateCamera(0, anglex,angley, anglez)
pour résoudre le problème. (Càd orienter la caméra en face, puis la réajuster par rapport à un angle fixe)

Malheureusement, cela ne marche pas. L'image scintille, comme si lors de la lecture de la liste des commandes par le renderworld il y avait un flipbuffer après le CameraLookAt. On passe donc (une image sur deux) d'une caméra orienté en face, à une caméra ok.

Ensuite, j'ai remarqué que lors de l'initialisation de l'écran, il arrivait qu'il y ait un second changement de résolution (ça fait un saut pas très esthétique). Je crois que je pourrai trouver, mais si quelqu'un a la réponse ici, ce serait cool!

A part ça, où pourrais-je trouver de la doc sur la gestion des animations des objets par bones? En plus, le convertisseur lightwave génère du mesh 1.2, inutilisable!

Jusqu'à présent je n'avais fait que des applis windows avec pure, j'aimerais ne pas en rester là! Merci :P


Ci-dessous un code d'exemple (repris sur l'exemple fourni camera.pb)

Code : Tout sélectionner

;
; ------------------------------------------------------------
;
;   PureBasic - Camera
;
;    (c) 2002 - Fantaisie Software
;
; ------------------------------------------------------------
;

#CameraSpeed = 10

IncludeFile "Screen3DRequester.pb"

DefType.f KeyX, KeyY, MouseX, MouseY

If InitEngine3D()

  Add3DArchive("Data\", #PB_3DArchive_FileSystem)
  
  InitSprite()
  InitKeyboard()
  InitMouse()
  
  If Screen3DRequester()
    AmbientColor(RGB(0,200,0))  ; Green 'HUD' like color 
 
    CreateMaterial(0, LoadTexture(0, "r2skin.jpg"))
    CreateEntity(0, LoadMesh(0, "Robot.mesh"), MaterialID(0))
    AnimateEntity(0, "Walk")
    
    CreateCamera(0, 0, 0, 100, 50)  ; Front camera
    CameraLocate(0,0,0,100)
    
    Repeat
      Screen3DEvents()
      
      ClearScreen(0, 0, 0)
            
      If ExamineKeyboard()
        
        If KeyboardPushed(#PB_Key_Left)
          KeyX = -#CameraSpeed 
        ElseIf KeyboardPushed(#PB_Key_Right)
          KeyX = #CameraSpeed 
        Else
          KeyX = 0
        EndIf
                  
        If KeyboardPushed(#PB_Key_Up)
          KeyY = -#CameraSpeed 
        ElseIf KeyboardPushed(#PB_Key_Down)
          KeyY = #CameraSpeed 
        Else
          KeyY = 0
        EndIf

      EndIf
      
      If ExamineMouse()
        MouseX = MouseX()
        MouseY = MouseY()
      EndIf
      
      ;RotateEntity(0, 1, 0, 0)
      
      CameraLookAt(0, CameraX(0), CameraY(0), CameraZ(0)-10) 
      RotateCamera(0, MouseX, MouseY, RollZ)

      ;MoveCamera  (0, KeyX, 0, KeyY)
     
      RenderWorld()
      Screen3DStats()
      FlipBuffers()
    Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
  EndIf
    
Else
  MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
  
End