Drehachse verschieben

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Broghi

Betreff: Drehachse verschieben

BeitragFr, Feb 29, 2008 19:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich hab jetzt angefangen, mich mit Blitz3D zu beschäftigen.
Im Moment knobbel ich grad an der Kamerasteuerung für ne Art Schiebepuzzle. Ich kenn nur noch fast keine Syntax für die 3D-Befehle, von dem her währen Links zu guten Tutorials auch nicht fehl am Platz.

So nun zu meinem Problem:
-Wie kann ich die Drehachse eines Objekts verschieben, sodass es sich nicht um die eigene Achse dreht, sondern einen Kreis macht bzw. wie kann ich es direkt um ein anderes Objekt drehen lassen?

Hab weder in der BlitzHilfe noch im Forum was dazu gefunden.


Danke im Voraus
Wozu lernen wir überhaupt programmieren?
Damit der Computer für uns Aufgaben löst (die wir ohne ihn nie gehabt hätten!).

FireballFlame

BeitragFr, Feb 29, 2008 20:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit EntityParent a,b kannst du ein Objekt (a) an ein anderes (b) "anheften". Man nennt dan b das Parent-Objekt von a bzw. a ein Child-Objekt von b.
Wenn du nun b z.B. bewegst, bewegt sich a mit. Und wenn du b drehst, dreht sich a um b Razz

Wenn du nur den Drehpunkt eines Objektes verändern willst, machst du das genau so.
Du erstellst ein Pivot-Objekt mit CreatePivot(), setzt es an die Stelle, wo der Drehpunkt sein soll und machst es zum Parent von dem Objekt, das sich drehen soll. Anschließend kannst du den Pivot einfach drehen.
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit
 

Broghi

BeitragFr, März 21, 2008 23:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab inzwischen mal so weit ne kleine Kamerasteuerung geschrieben, die mir gefällt: Rechte Maustaste drücken und das Objekt verschieben.

Nur stört mich noch, dass, wenn ich die Rechte Maustaste drücke, das Objekt sofort an eine bestimmte Position verdreht wird. Dass heißt es "schnappt weg", und ich kann mir nicht denken, warum bzw. wie ich es anders machen soll.
der MouseSpeed sollte ja 0 sein, wenn man die Maus nicht bewegt, von dem her ist eigentlich nirgends eine Variablenänderung beim Mausklick.


Code: [AUSKLAPPEN]
;Camera-Control
   While MouseDown(2)=1
      FlushMouse
      pitch=pitch-MouseYSpeed()
      roll=roll+MouseXSpeed()
      
      Text 100,100, pitch+",  "+roll+Chr$(13)+MouseYSpeed()+",  "+MouseXSpeed(),1,1   
      
      if pitch>75 then pitch=75    ;limit pitch to 0<pitch<75
      if pitch<0 then pitch=0
   
      RotateEntity parkhaus, pitch,0,roll  ;rotate Parkhaus
            
       flip
      Renderworld
   wend


Ist bestimmt irgend ein blöder Fehler, wär nett wenn ihr mir helfen könntet.
Wozu lernen wir überhaupt programmieren?
Damit der Computer für uns Aufgaben löst (die wir ohne ihn nie gehabt hätten!).

NightPhoenix

BeitragSa, März 22, 2008 10:54
Antworten mit Zitat
Benutzer-Profile anzeigen
deine Schleife finde ich irgendwie seltsam ^^ ....
"Solange auf Maus (2) gedrückt, mache... Flip... RenderWorld"
ich weiß nicht ob das Absicht war, aber das geht auch anders Wink

Code: [AUSKLAPPEN]
Graphics3D 0,0,32,1
SetBuffer BackBuffer()


kamera=CreateCamera()
   PositionEntity kamera,0,0,-5

parkhaus=CreateCube()
licht=CreateLight(1)


While Not KeyHit(1)


   ;Camera-Control
      If MouseDown(2)
            FlushMouse
            pitch=pitch-MouseYSpeed()
            roll=roll+MouseXSpeed()
             

      
         If pitch>75 Then pitch=75    ;limit pitch to 0<pitch<75
         If pitch<0 Then pitch=0
      
         RotateEntity parkhaus, pitch,0,roll  ;rotate Parkhaus
       
      EndIf
      MoveMouse 300,300
   
UpdateWorld
RenderWorld
   Text 100,100, pitch+",  "+roll+Chr$(13)+MouseYSpeed()+",  "+MouseXSpeed(),1,1
Flip
Wend
End


Habs nicht getestet, müsste funktionieren
MfG.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group