|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Domso
Anmeldungsdatum: 02.02.2011 Beiträge: 109
|
Verfasst am: 23.08.2013, 17:56 Titel: openB3d-Animation |
|
|
Hi zusammen
Ich experimentiere gerade ein wenig mit openb3d und animationen.
ziel war es, eine art keyframe-animation zu erstellen...
Eigentlich keine große sache, wenn man die start-, und enddrehung hat
grob sieht das dann so aus
Code: |
dif_rotation_x=(Ziel_rot_x-aktuelle_rot_x)/anzahl_frame
dif_rotation_y=(Ziel_rot_x-aktuelle_rot_y)/anzahl_frame
dif_rotation_z=(Ziel_rot_x-aktuelle_rot_z)/anzahl_frame
rotateEntity obj,aktuelle_rot_x+dif_rotation_x,aktuelle_rot_y+dif_rotation_y,aktuelle_rot_z+dif_rotation_z
|
Prinzipiell würde das so auch funktionieren, nur habe ich das problem, dass die winkel nur von -90 - +90 definiert sind, sprich
wenn man zb. die winkel (85,0,0) hat, und diese um 20 grad drehen würde, so hätte man nicht (105,0,0), sondern (75,180,180)
und da liegt eigentlich auch das problem, denn wenn man von
(85,0,0) zu (75,180,180) gehen will, dann dreht sich das objekt einmal komplett um (da es ja nun nicht die gewünschte bewegung (+20,0,0), sondern (-5,+180,+180) machen muss...)
meine frage wäre es, wie man das verhindern könnte? |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 23.08.2013, 19:51 Titel: |
|
|
Ich kenne mich zugegebenermaßen mit openb3d nicht aus, aber wäre nicht TurnEntity das Mittel der Wahl? _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Domso
Anmeldungsdatum: 02.02.2011 Beiträge: 109
|
Verfasst am: 23.08.2013, 20:27 Titel: |
|
|
eigentlich egal, man könnte auch statt
Code: |
rotateEntity obj,aktuelle_rot_x+dif_rotation_x,aktuelle_rot_y+dif_rotation_y,aktuelle_rot_z+dif_rotation_z |
Code: |
turnEntity obj,dif_rotation_x,0,0
turnEntity obj,0,dif_rotation_y,0
turnEntity obj,0,0dif_rotation_z
|
verwenden, was jedoch länger wäre ;O
aber das problem bleibt weiterhin |
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4597 Wohnort: ~/
|
Verfasst am: 23.08.2013, 20:40 Titel: |
|
|
Funktioniert die "Kurzfassung"
Code: | turnEntity obj, dif_rotation_x, dif_rotation_y, dif_rotation_z |
denn nicht?
Dass der nur mit einem 180°-Winkel arbeitet wundert mich allerdings schon. Ich habe hier nur die minib3d-Referenz vorliegen, da sind die Winkelangaben im Bereich von 0 bis 360. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
Domso
Anmeldungsdatum: 02.02.2011 Beiträge: 109
|
Verfasst am: 23.08.2013, 21:42 Titel: |
|
|
also man kann zwar die objekte um 360 grad drehen, aber wenn man die winkel abruft, dann rechnet er diese um
http://www.blitzforum.de/help/EntityPitch
turnEntity dreht immer relativ zur aktuellen drehung, sprich
liegt das objekt schief und man dreht es nach rechts, dann dreht er es schief nach oben... schwer zu erklären ;O |
|
Nach oben |
|
|
Domso
Anmeldungsdatum: 02.02.2011 Beiträge: 109
|
Verfasst am: 25.08.2013, 11:01 Titel: |
|
|
ok, hab das problem jetzt selber gelöst
vorher hatte ich die Winkel mit
Code: |
rot_x=EntityPitch(obj)
rot_y=EntityYaw(obj)
rot_z=EntityRoll(obj)
|
bestimmt...
jetzt
Code: |
rot_x+=dif_rot_x
rot_y+=dif_rot_y
rot_z+=dif_rot_z
|
Die Zielwinkel mussten natürlich dann auch so berechnet werden
So ist es jetzt egal, wenn er intern die Winkel umrechnet |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|