Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

openB3d-Animation

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Domso



Anmeldungsdatum: 02.02.2011
Beiträge: 109

BeitragVerfasst am: 23.08.2013, 16:56    Titel: openB3d-Animation Antworten mit Zitat

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? neutral
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 23.08.2013, 18:51    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Domso



Anmeldungsdatum: 02.02.2011
Beiträge: 109

BeitragVerfasst am: 23.08.2013, 19:27    Titel: Antworten mit Zitat

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 traurig
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4594
Wohnort: ~/

BeitragVerfasst am: 23.08.2013, 19:40    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Domso



Anmeldungsdatum: 02.02.2011
Beiträge: 109

BeitragVerfasst am: 23.08.2013, 20:42    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Domso



Anmeldungsdatum: 02.02.2011
Beiträge: 109

BeitragVerfasst am: 25.08.2013, 10:01    Titel: Antworten mit Zitat

ok, hab das problem jetzt selber gelöst grinsen

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 lachen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz