Mouse?Speed zur Kameradrehung

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Seoman

Betreff: Mouse?Speed zur Kameradrehung

BeitragDi, Mai 15, 2007 8:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo allerseits.
Nach einer seeehhhr langen Programmierpause und einer noch sehr viel laengeren Zeit von Foreninaktivitaet sitze ich zur Zeit in Australien und versuche mich an einfachster Grundsatzprogrammierung. Ein recht peinliches Comeback, muss ich sagen, da ich nichtmal mehr Kameradrehung hinbekomme - zumindest nicht ruckelfrei.

Die Yaw-Drehung scheint zu funktionieren, die Pitch-Drehung laesst meine Kamera ruckeln. Mausbewegung versuche ich mit mousexspeed und mouseyspeed abzufragen.

Langer Rede kurzer Sinn: Hier ist der Code, herruntergearbeitet auf die zwei Functions:

Code: [AUSKLAPPEN]

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Function mouse()


   my_cam_tpitch =  MouseYSpeed()
   my_cam_tyaw = MouseXSpeed()
   
   MoveMouse(GraphicsWidth()/2, GraphicsHeight()/2)

  MouseXSpeed()
  MouseYSpeed()

   
   
End Function

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Function movement()


  If KEYDOWN(31)=1 THEN MoveEntity my_cam,0,0, - my_speed   
  If KEYDOWN(17)=1 THEN MoveEntity my_cam,0,0, my_speed
  If KEYDOWN(32)=1 THEN MoveEntity my_cam, my_speed,0,0
  If KEYDOWN(30)=1 THEN MoveEntity my_cam, - my_speed,0,0
 
 
  my_cam_pitch# = EntityPitch(my_cam) + my_cam_tpitch
  my_cam_yaw# = EntityYaw(my_cam) -my_cam_tyaw

  RotateEntity my_cam, my_cam_pitch, my_cam_yaw,0
  PositionEntity my_cam, EntityX(my_cam), my_height, EntityZ(my_cam)
 


End Function


Ich weiss, dass ich irgendwo bei mir auf meinem Rechner zu Hause eine ganze Anzahl an einwandfreien Drehungen nach dem "oldmausx - MouseX()" Prinzip rumliegen habe, aber vor etwa 7 Stunden sah mein hiesiger Code auch noch so aus und er hat trotzdem geruckelt.

Und eigentlich sollte Mouse?Speed schliesslich auch funktionieren.

Wenn mein Fehler offensichtlich ist: Ich bitte um Nachsicht, es ist lange her. Ins BeginnerForum zu schreiben verbietet mir mein Stolz und der letzte Funken Hoffnung, dass es irgendwo doch keine allzu offensichtlichen Codeschwaechen sind, die mir Probleme bereiten.

Sollten ein Lob bei hilfreicher Antwort oder weitere Information meinerseits nicht allzu regelmaessig eintreffen, so bitte ich um Nachsicht, ich habe hier nur sehr sporadisch Zugang zum Internet.

Gruesse von der sonnigen anderen Seite der Welt,
Seoman
In Australien...

Projekte sind zur Zeit wieder eingefroren und auf Designlevel zurueckgestuft... Generalueberholungen notwendig Wink

skey-z

BeitragDi, Mai 15, 2007 19:13
Antworten mit Zitat
Benutzer-Profile anzeigen
ich habe auch immer die probleme, dass es ruckelt oder stockt, deshalb helfe ich mir so:

in der Hauptschleife nehme ich noch 2 weitere Variablen zur aktualisierung:

o(ld)mx = mx
o(ld)my = my

bevor ich die Maus selber abfrage, wenn nun eine Differenz zwischen dem alten und dem neuen Wert besteht, drehe ich die Kamera um einen bestimmten Wert. Funktioniert bei mir eigentlich ganz gut.
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

Seoman

Betreff: Re: Mouse?Speed zur Kameradrehung

BeitragDo, Mai 17, 2007 8:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Seoman hat Folgendes geschrieben:

Ich weiss, dass ich irgendwo bei mir auf meinem Rechner zu Hause eine ganze Anzahl an einwandfreien Drehungen nach dem "oldmausx - MouseX()" Prinzip rumliegen habe, aber vor etwa 7 Stunden sah mein hiesiger Code auch noch so aus und er hat trotzdem geruckelt.

Und eigentlich sollte Mouse?Speed schliesslich auch funktionieren.


Ich stell mich mal stur Razz Hat jemand eine Idee, warum Mouse_Speed() nicht funktioniert? Rein aus Interesse und aus der Hoffnung, mir 2 Variablen zu sparen Wink

Aber vielen Dank fuer deine Antwort, dann muss ich mir ja doch nicht sooo dumm vorkommen und bau es wieder mit oldmausx und y Wink

EDIT:

Schoen waer's gewesen, jetzt wird es peinlich. Nichtmal mit oldx klappts... Embarassed Vielleicht wisst ihr noch Rat. Wenn ich mal mein Prograemmchen auf das Wesentlichste runterschraube sieht es jetzt so aus:

Code: [AUSKLAPPEN]

Graphics3D 1024, 768, 32,1
SetBuffer BackBuffer()

;##
Global my_height# = 1.5
Global my_speed# = 0.08

Global my_cam = CreateCamera()
PositionEntity my_cam,64,my_height,64

Global my_cam_tpitch#, my_cam_tyaw#

Camerarange(my_cam, .1, 64)
CameraFogMode(my_cam, 1)
CameraFogRange(my_cam, 1, 64)
CameraFogColor(my_cam, 40,0,10)

Global my_camx#, my_camz#


;##

Global level_light = CreateLight()
RotateEntity level_light,90,0,0

Global level_terrain =CreateTerrain(128)


;##

MoveMouse(GraphicsWidth()/2, GraphicsHeight()/2)

Global mouse_oldx = MouseX()
Global mouse_oldy = MouseY()


;#######################

WHILE NOT KEYHIT(1)

 
   movement()
   mouse()


  UpdateWorld()
   RenderWorld()

   Flip(0)


Wend

End
;########################

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Function mouse()

   my_cam_tpitch# = MouseY() - mouse_oldy
   my_cam_tyaw# = MouseX() - mouse_oldx

  mouse_oldx = MouseX()
   mouse_oldy = MouseY()
   
End Function

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Function movement()


  If KEYDOWN(31)=1 THEN MoveEntity my_cam,0,0, - my_speed   
  If KEYDOWN(17)=1 THEN MoveEntity my_cam,0,0, my_speed
  If KEYDOWN(32)=1 THEN MoveEntity my_cam, my_speed,0,0
  If KEYDOWN(30)=1 THEN MoveEntity my_cam, - my_speed,0,0
 
  PositionEntity my_cam, EntityX(my_cam), my_height, EntityZ(my_cam)
 
  RotateEntity my_cam, EntityPitch(my_cam)+my_cam_tpitch, EntityYaw(my_cam)-my_cam_tyaw, 0
 


End Function



Laeuft das bei euch "ruckelfrei"? Bewegung funktioniert wunderbar, mit fps anzeige laeufts auf ein paar hundert (selbst mit schoenen Tuermchen ueberall in der Landschaft Wink) aber sobald es zur Drehung der Kamera kommt sieht es ruckelig aus. Die FPS stimmen und das Ganze ist durchaus fluessig, aber die Drehungen geschehen in Unterschiedlich grossen Schritten anstelle von weicher Bewegung... Ich bin ueberfragt, erloest mich Crying or Very sad [/code]
In Australien...

Projekte sind zur Zeit wieder eingefroren und auf Designlevel zurueckgestuft... Generalueberholungen notwendig Wink

The_Nici

BeitragDo, Mai 17, 2007 14:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Versteh ich das richtig, das ihr die Cam mit der Maus drehen wollt?

Ich hab mal was gefunden:
Code: [AUSKLAPPEN]

RotateEntity cam,EntityPitch(cam)+MouseYSpeed(),EntityYaw(cam)-MouseXSpeed(),0


Wenn ich Scheisse laber (mal wieder^^) dann sorry. =P

Iguan

BeitragFr, Mai 18, 2007 7:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Seoman! Bin zur zeit auch in australien (Byron Bay) Smile
wo bist du? ich habe leider keinen laptop hier um zu programmieren ;'-(

ich hatte auch schon das selbe problem! ich denke the_nici koennte recht haben!

cheers

Seoman

BeitragMo, Mai 21, 2007 3:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Sydney Wink

Und ich habe einfach ganz dreist von zu Hause aus mein Blitzbasic auf einen Server hochgeladen und hier wieder runtergezogen (Rechner der Gastfamilie^^)

Der Code von Nici hilft mir auch nicht Wink Habe aber hier in den Samplefiles gestoebert. CubeWater Demo ruckelt nicht. Ich hab auch bei meinem Code die MouseSpeed durch 4 geteilt und es hat trotzdem nicht geholfen oO

Hab dann aber gluecklicherweise diesen Code gefunden:

Code: [AUSKLAPPEN]

   Local x_speed#,y_speed#

   x_speed=(MouseXSpeed()-x_speed)/4+x_speed
   y_speed=(MouseYSpeed()-y_speed)/4+y_speed
   MoveMouse GraphicsWidth()/2, GraphicsHeight()/2

   
   TurnEntity my_cam,0,-x_speed,0
   TurnEntity my_cam,y_speed,0,0


Der funktioniert nicht nur ruckelfrei sondern erlaubt zusaetzlich schon erste Veraenderungen der Maussensivitaet Wink

Insofern ist mein Problem geloest Wink

Danke euch allen!! (Wenn mir nun irgendwer noch sagen koennte, warum ich mit der einfachen Variante Probleme hatte, muesste ich nicht einmal mehr rastlos auf der Suche nach der Antwort durch das Haus wandeln Wink )

mfg
Seoman
In Australien...

Projekte sind zur Zeit wieder eingefroren und auf Designlevel zurueckgestuft... Generalueberholungen notwendig Wink

The_Nici

BeitragMo, Mai 21, 2007 8:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]

Graphics3D 800,600
SetBuffer BackBuffer()

cam = CreateCamera()

cube = CreateCube()

MoveEntity cube,0,0,10

While Not KeyHit(1)
   RotateEntity cam,EntityPitch(cam)+MouseYSpeed(),EntityYaw(cam)-MouseXSpeed(),0
   MoveMouse(200,200)
   RenderWorld
   Flip
Wend


Funktioniert bei mir wunderbar. 0o
Der Code ist übrigens nicht von mir.

Seoman

BeitragSa, Mai 26, 2007 14:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, seltsam^^

Wie gesagt, ich sitze hier nicht an meinem Rechner, an meinem denke ich sollte es auch funktionieren (zumindest hat es das mal).

Waere natuerlich immernoch eine interessante Frage, ob Soft- und Hardwareunterschiede darauf dann Einwirkung haben... Aber immernoch sehr verwirrend bleibt meine Erfahrung mit der Cubed Demo....

Egal, ich werde es einfach alles ignorieren und mit meiner Onboard Graka hier weiter Spass haben^^
In Australien...

Projekte sind zur Zeit wieder eingefroren und auf Designlevel zurueckgestuft... Generalueberholungen notwendig Wink

The_Nici

BeitragSa, Mai 26, 2007 14:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Nochmals versucht, jetzt ruckelts auch...

Vll. nimmt BB die MouseYSpeeddingenz nicht so gut oder wie?

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group