Seite 1 von 1

bug in RotateCamera()

Verfasst: 28.03.2005 23:24
von SK-Genius
PureBasic 3.93 (Demo)

Code: Alles auswählen

InitMouse()
OpenWindow(0, 0, 0, 800, 600, #PB_Window_ScreenCentered, "Test")
InitEngine3D()
InitSprite()
OpenScreen(800, 600, 16, "test")  ; Nr1
CreateCamera(0, 0, 0, 100, 100)  ; Nr2

CameraLocate(0, 0, 5, -20)
CameraLookAt(0, 0, 0, 0)

SkyDome("test.bmp", 10)
Repeat
  ClearScreen(0, 0, 0)
  RenderWorld()
  FlipBuffers()
  ExamineMouse() 
  RotateCamera(0, 0, MouseDeltaX(), 0)  ; Nr3
Until MouseButton(1)
na toll, da hat man PureBasic seit 3 tagen und stollpert schon über n buck.
man muss nur mal die maus paar mal heftik hin und her bewegen und schon verzehrt sich alles bis man nix mehr sieht.

RotateCamera() (makirung Nr3) kommt nicht damit der kombination von CameraLocate() (makierung Nr1) und CameraLookAt() (makierung Nr2) zurecht. ich vermute mal das RotateCamera die "ausrichtungsmatix" der kammera falsch berechnet.

Verfasst: 29.03.2005 00:24
von 125
3D in PB selbst ist eh unausgereift. Benutz Senseflare oder XTreme3D.
:|

Verfasst: 29.03.2005 04:18
von SK-Genius
bei dem versuch den bug zu umgehen bin ich gleich auf folgendes gestossen:

Code: Alles auswählen

InitMouse()
OpenWindow(0, 0, 0, 800, 600, #PB_Window_ScreenCentered, "Test")
InitEngine3D()
InitSprite()
OpenScreen(800, 600, 16, "test")
CreateCamera(0, 0, 0, 100, 100)

SkyDome("pics\_crate1.png", 10)
Repeat
  ClearScreen(0, 0, 0)
  RotateCamera(0, 0, MouseDeltaX(), 0)
  RenderWorld()
  RotateCamera(0, 0, -MouseDeltaX(), 0)
  FlipBuffers()
  ExamineMouse() 
Until MouseButton(1)
hierbei hab ich versucht die rehung gleich nach dem darstellen wieder rückgänig zu machen. pustekuchen, das rendern verfälscht die daten auf die die rotation zugreift. oder anders gesagt, nach RenderWorld weisst du nicht mehr wohin du dich gedreht hast. da bleibt einem ja nur noch übrig die welt um die kammera zu drehn, aber wer weiss ob der befehl nicht auch bugy ist. ich hab zumindest die schnautze voll von 3d in purebasic.

Verfasst: 29.03.2005 12:27
von 125
Ja,
Das ist der Stand von vor einem Jahr die Ogre version ist total veraltet.
Gibt 2 Gute Engines die du benutzen kannst:

Senseflare
und
Xtreme3D