Rotations Fehler in Blitz3D?
Übersicht

![]() |
LukasBananaBetreff: Rotations Fehler in Blitz3D? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Leute,
bin ich der Einizige oder kennen noch andere das Problem mit der Rotation in Blitz3D? Die Y-Achse (Rotation: Yaw) scheint etwas anders zu rotieren als die anderen. Sie rotiert unabhängig der aktuellen Objekt-Rotation was bei den anderen nicht der Fall ist. Ist das ein Fehler in Blitz3D oder was ist das? Gruß LukasBanana |
||
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana Meine Projekte auf github.com: https://github.com/LukasBanana Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit TurnEntity dreht jedes Objekt abhängig von seiner Rotationsposition. Es kann allerdings ein Unterschied sein, ob man zuerst X- und dann die Y-Achse dreht oder zuerst Y und dann X. Wenn man beide 'gleichzeitig', also mit einem TurnEntity -Befehl, es macht, so weiß ich deren Reihenfolge nicht.
Tatsächlich gibt es Unterschiede - wenn man sie so nennen will - bei PointEntity etc... |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
LukasBanana |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also ich verwände nur RotateEntity, hatte vergessen es zu erwähnen, und da rotiert die Y-Achse, also "yaw", nicht richtig.
Woran liegt das, oder ist das einfach ein Fehler von Blitz3D? Das mit TurnEntity kenne ich auch, das verwände ich aber nicht da ich es für einen 3DWorldEdit brauche |
||
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana Meine Projekte auf github.com: https://github.com/LukasBanana Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also eigentlich gibt es kein richtig oder falsch. Das hängt auch nicht von Blitz ab, sondern der Berechnung der Matrizen. Aber vielleicht hilft dir folgende Kombi da weiter:
Anstelle zB: Code: [AUSKLAPPEN] RotateEntity mesh,X,Y,Z
dann mal versuchen: Code: [AUSKLAPPEN] RotateEntity mesh,0,Y,0
TurnEntity mesh,X,0,Z oder anders rum: Code: [AUSKLAPPEN] RotateEntity mesh,X,0,Z
TurnEntity mesh,0,Y,0 Solche Kombinationen werden zB auch ganz gerne bei Egoshootern zur Kamerabewegung verwendet. |
||
![]() |
LukasBanana |
![]() Antworten mit Zitat ![]() |
---|---|---|
OK, das könnte ich mir schon vorstellen,
aber wie gesagt will ich es in einem 3DWorldEdit verwänden, d.h. ich rufe andauernd die Funktion RotateEntity auf, nähmlich in der Funktion mit einer "For ... Each" Schleife welche alle Objekte aufruft, und wenn ich dann TurnEntity verwände dreht sich das Objekt unerwünschter Weise ![]() Oder wie kann man das in einem 3DWorldEdit einsetzten? |
||
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana Meine Projekte auf github.com: https://github.com/LukasBanana Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn ich es jetzt, nach langem, richtig verstanden habe, so willst du, dass die Position der Kamera stehenbleibt und nur bei Bedarf bewegt werden kann, aber jedes Objekt angepeilt werden kann? Dazu gibt es ql:PointEntity
edit1: Mir fällt auf, du schreibst 'verwänden' anstelle 'verwenden'. Was ist denn nun richtig oder der Unterschied beider? Word zeigt bei beiden keine Fehler an. edit2: SORRY!!!! Ich hab grad dein Beitrag mit einem anderem verwechselt, der irgendwie genau das gleiche fragt. Habe dazu die betreffende Zeile wieder entfernt... |
||
![]() |
LukasBanana |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also PointEntity weiß ich was es macht, und wo du es schon erwähnst kann ich es auch gut gebrauchen, aber eigentlich ist das nicht das was ich meine.
Wie bereits gesagt: ich programmiere einen 3DWorldEdit und da will ich ganz einfach ein angewähltes Objekt mit der Maus rotieren und das über die Funktion RotateEntity weil TurnEntity ein Objekt andauernd dreht und das ist für einen WorldEdit unpraktisch. kurzes Beispiel wie es bei mir (in etwa) aussieht: Code: [AUSKLAPPEN] ; ...
const ROTATE = 1 ; ... For obj.objects = Each objects ; ... If obj\cur_mode = ROTATE ; ... obj\yaw = obj\yaw + MouseXSpeed() ; ... End If ; ... RotateEntity obj\hEntity, obj\picth, obj\yaw, obj\roll ; 'yaw' rotiert grundsätzlich in B3D anders als 'pitch' und 'roll' ; ... Next Verstehst du wie ich das meine? TurnEntity währe hier völlig fehl am Platz. |
||
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana Meine Projekte auf github.com: https://github.com/LukasBanana Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok, ich komme langsam dahinter, wie du das wohl meinst. Ich nehme es jetzt so an. Deine Kamera befindet sich irgenwo im Raum. Mit PointEntity richtest du nun die Kamera auf ein Objekt welches du nun mit der Maus (als Beispiel) drehen lassen möchtest und das natürlich aus dem Sichtvektor der Kamera. Richtig? Das heisst, du willst mit einer Mausbewegung hoch/runter, dass sich das Objekt abhängig der Kameraposition für den User so aussehend vor/zurück dreht. Richtig?
Wenn ich richtig liege, so wird es nicht ganz so einfach sein, da du nun weitere Winkel mit berücksichtigen musst, die vorher garnicht da waren. Ich denke das hier dir http://blitzbasic.co.nz/Commun...opic=64319 weiter helfen könnte. Ich weiß, dass es echt ein schlechtes Beispiel ist, aber folgende Zeilen sind letztendlicb interessant: XAngleAdjust# = (Mx# / 20.0) * (180.0/Pi) ZAngleAdjust# = (Mz# / 20.0) * (180.0/Pi) TurnEntity ball,ZAngleAdjust#,0,-XAngleAdjust#,True Beim Rest verstehe ich nicht, warum man für so ein einfaches Beispiel ein kilometer langen Code da rein packen muss... edit1: Allgemein fiel mir eben auf, sollte man nicht in einer solchen Schleife MouseXSpeed() immer wieder neu auffrufen, weil der Wert nach dem ersten Abfragen gelöscht wird. Besser ist, den Wert von MouseXSpeed zuerst in eine Variable packen und dann verabeiten. Dann kann man sich auch sicher sein, dass jeder Typeeintrag den Wert auch abbekommt. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
also ich mach das immer so:
Code: [AUSKLAPPEN] yaw#=yaw#-MouseXSpeed()
pitch#=pitch#+MouseYSpeed() rotateentity cam,pitch#,yaw#,0 klappt wie egon! |
||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
LukasBanana |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naklar, ich ruf bei mir MouseXSpeed auch nicht dauernd auf, das war ja nur ein kurzes kleines Beispiel.
Aber ich weiß immer noch nicht was ihr mit euerm PointEntity wollt ![]() @hectic: Also, in einem Punkt hast du mir glaub ich jedenfals geholfen, und zwar dass die Rotation von Objekten in B3D gar nicht so einfach ist wenn man es perfeckt machen will. Ich habe jeden falls das Gefühl, dass die Funktion RotateEntity in B3D nicht besonders ganeu arbeitet. Aber ich werd mal versuchen mit dem Beispiel was anzu fangen und mit`ner Gleichung oder Umrechnung der Achsen zu arbeiten. Danke schon mal ![]() @StepTiger: ich verwände aber auch noch 'roll' und nicht nur die andern beiden Achsen ![]() |
||
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana Meine Projekte auf github.com: https://github.com/LukasBanana Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Doch RotateEntity arbeitet sogar sehr genau, nur halt anders als du es anscheinend haben möchtest.
Du erwähntest 3DWorldEdit, was vermuten lässt, dass PointEntity da Sinnvoll sein könnte. Ich weiß immer noch nicht ganz genau, was du willst. Lag ich mit meinen letzten Vermutungen richtig? P.S. Du kannst im übrigen mit nur zwei angegebenen Winkel jede Position eines Objekte andrehen.^^ Dieses wird u.a. bei dem Link auch so gemacht. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
LukasBanana |
![]() Antworten mit Zitat ![]() |
---|---|---|
OK, ich werd`s mal versuchen wie du es vorgeschlagen hast.
Danke an alle ![]() |
||
Mein YouTube Channel: http://www.youtube.com/user/SoftPixel
Mein Twitter Profil: https://twitter.com/LukasBanana Meine Projekte auf github.com: https://github.com/LukasBanana Meine Projekte auf bitbucket.org: https://bitbucket.org/LukasBanana |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group