Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Jack Raynor

Treue Seele

  • »Jack Raynor« ist der Autor dieses Themas

Beiträge: 111

Wohnort: Korprulu Sektor BR-5-Tarsonis

Beruf: Schüler

  • Private Nachricht senden

1

20.05.2004, 17:27

Ausrichtung eines Modells

Hi,
ich will derzeit ein Modell benutzen, das beim Start, auf einen bestimmten Punkt gedreht wird (ich drehs um 90° (in Rad). Aber wenn ich das über SetRotation mache, dreht sich das ohne aufzuhören! Schreibe ich dann, nach der Move() Funktion, das die Rotation auf 0 gesetzt werden, soll, verändert sich überhaupt nichts! Was für eine Funktion/Vorgehensweise muss ich dafür benutzen? Habt ihr eine Idee?

Jack
Was wäre wenn in jedem von uns ein Held stecken würde? Was wäre wenn jeder von uns als Held geboren wäre? Hättest du den Mut Held zu werden?
Legenden des Tassadar, Kapitel 3, Absatz 5

Starcraft - Battle of Races

2

20.05.2004, 18:27

Ähm...benutzt du die TriBase Engine? Mit SetRotation kann so wenig anfangen ;)

Die tbObject und auch die tbModel hat keine SetRotation Methode. More input please!

Was macht SetRotation genau? Produziert sie auch die Rotationsmatrix oder setzt sie nur den Rotationsvektor? Hast du eine extra Update Methode? Wo wird deine Worldmatrix erstellt?
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Jack Raynor

Treue Seele

  • »Jack Raynor« ist der Autor dieses Themas

Beiträge: 111

Wohnort: Korprulu Sektor BR-5-Tarsonis

Beruf: Schüler

  • Private Nachricht senden

3

20.05.2004, 18:41

Also ich benutze die TB-E und da gibt`s ne SetRotation Methode! SetRotation setzt einfach die als Parameter übergebene Rotation auf die Rotation des Modells:

Quellcode

1
    inline void     SetRotation(const bsVec3& vRotation)    {m_vRotation = vRotation;}

Ich hab keine extra Update-Methode und die Worldmatrix wird, nachdem ein Licht gesetzt wurde, erstellt, danach folgen alle zu rendernde Modelle.

Jack
Was wäre wenn in jedem von uns ein Held stecken würde? Was wäre wenn jeder von uns als Held geboren wäre? Hättest du den Mut Held zu werden?
Legenden des Tassadar, Kapitel 3, Absatz 5

Starcraft - Battle of Races

4

20.05.2004, 18:55

Sorry, hatte nur in die cpp geschaut :rolleyes:

Allerdings hat die tbObject Klasse eine Update-Methode

Quellcode

1
void tbObject::Update()
Hier wird dann auch die Worldmatrix vom Objekt erstellt. Diese wird von den beiden Methoden

Quellcode

1
2
void tbObject::RotateAbs(const tbVector3& vRotation);
void tbObject::RotateRel(const tbVector3& vRotation);
aufgerufen.

Probier mal folgendes:
Benutze satt SetRotation einfach RotateAbs. Da hier die Update Methode am Schluss aufgerufen wurde, werden die änderungen direkt wirksam.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Jack Raynor

Treue Seele

  • »Jack Raynor« ist der Autor dieses Themas

Beiträge: 111

Wohnort: Korprulu Sektor BR-5-Tarsonis

Beruf: Schüler

  • Private Nachricht senden

5

20.05.2004, 19:31

Also ich dächte ja das RotateRel eher richtig ist! Ich habs auch probiert, aber irgendwie werden, da nur das Modell, aber nicht direkt die Axen gedreht. Das Modell bewegt sich in die gleiche Richtung nach der Drehung, wie in die Richtung davor! Ich habs mal über

Quellcode

1
Align(m_vXAxis);
probiert. Da wird das Modell aber immer noch nicht richtig gedreht!

Jack
Was wäre wenn in jedem von uns ein Held stecken würde? Was wäre wenn jeder von uns als Held geboren wäre? Hättest du den Mut Held zu werden?
Legenden des Tassadar, Kapitel 3, Absatz 5

Starcraft - Battle of Races

Anonymous

unregistriert

6

20.05.2004, 20:32

Mit SetRotation setzt man eine konstante Rotation !

Einmalige Rotationen macht man mit RotateAbs und ~Rel....

Naja und zur Bewegung kann ich so nicht viel sagen, denn das kommt jetzt auch drauf an wie Du dir Bewegung in der Move-Funktion abfragst bzw. ausführst....
also wenn man nach vorne drückst muss du natürlich relativ nach vorne gehen und das geht dann mit TranslateRel...
und mit Align setzt du diese Bewegungs-Achsen....Allerdings muss Du dort die Z-Achse und nicht die X-Achse übergebn oder dir selber eine neue Funktion schreiben die eine X-Achse annimmt......

Und nochwas : Align setzt nur die Achsen der Bewegung bzw. Rotation es führt keine Rotation aus !!!!! (das musste dann halt mit RotateAbs / ~Rel (je nachdem was Du bewerkstelligen willst))

Hoffe das hilft Dir schonmal weiter sonst beschreib nochmal genau die Stelle wos hapert und welchen Code du dort bisher nutzt....

Jack Raynor

Treue Seele

  • »Jack Raynor« ist der Autor dieses Themas

Beiträge: 111

Wohnort: Korprulu Sektor BR-5-Tarsonis

Beruf: Schüler

  • Private Nachricht senden

7

21.05.2004, 09:51

Danke! Jetzt klappts endlich. Und ich hab Align() deshalb die X-Axe übergeben, weil ich das Modell so drehen wollte, das es in die Richtung schaut, in der am Anfang die X-Axe verläuft!

Jack
Was wäre wenn in jedem von uns ein Held stecken würde? Was wäre wenn jeder von uns als Held geboren wäre? Hättest du den Mut Held zu werden?
Legenden des Tassadar, Kapitel 3, Absatz 5

Starcraft - Battle of Races

Anonymous

unregistriert

8

21.05.2004, 15:51

Schön dass es jetzt funzt...

Zitat von »"Jack Raynor"«

Und ich hab Align() deshalb die X-Axe übergeben, weil ich das Modell so drehen wollte, das es in die Richtung schaut, in der am Anfang die X-Axe verläuft!


Okay, dann ist das wieder logisch,
hab ich nicht beachtet.......

Werbeanzeige