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

1

17.03.2011, 18:47

[Ogre3D] Kamera drehen

Hallo Community,

der Topic mag vielleicht etwas merkwürdig klingen allerdings bekomme ich es in Ogre3D einfach nicht hin die Kamera ordentlich auszurichten.

Hier ist die Funktion mit der ich den Input abfange und meinen Panzer(Momentan ist es noch ein Rechteck) bewegen kann.
Damit habe ich keine Probleme allerdings wenn ich versuche die Kamera vor den Panzer auszurichten mit lookAt() funktioniert das irgendwie nicht die Kamera
bleibt immer in der Startrichtung.
Ich hab mal noch ein Bild hochgeladen damit ihr sehen könnt wie ich es eigentlich gerne hätte.
http://img718.imageshack.us/i/kamera.png/


Wenn Verbesserungsvorschläge habt wie man es z.B. einfacher mit Ogre3D machen könnte immer raus damit.

MfG Ninjasturm
MfG Ninjasturm

----------------------------
System: Windows 7 x64
IDE: Visual Studio 2010 Ultimate
Engine: Ogre3D


Favorisierte Programmiersprache: C++
Sonstige Programmiersprachen: AutoIT, PHP, Javascript
Sonstige Auszeichnungsprachen: HTML, CSS
---------------------------

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Ninjasturm« (17.03.2011, 18:53)


Fred

Supermoderator

Beiträge: 2 121

Beruf: Softwareentwickler

  • Private Nachricht senden

2

17.03.2011, 19:05

Also ich würde dir empfehlen den Camera-Node als ParentNode für die Camera zu setzen. Dann kannst du nämlich die Camera relativ zum SceneNode ausrichten und kannst dann den SceneNode drehen und hast so relativ simpel eine Drehung der Kamera.
Bei mir sieht das in etwa so aus:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
       // Kamera erstellen
    camera_ = game_env_.smgr->createCamera(camera_name);

    camera_node_ = target_node_->createChildSceneNode(camera_->getName() + "_camera_node");

        camera_node_->attachObject(camera_);
    camera_node_->setInheritOrientation(false);
    target_node_->setInheritOrientation(false);
    camera_->setPosition( Ogre::Vector3( 0, high_ * zoom_ * 0.02, zoom_ ) );
    camera_->lookAt(target_node_->getPosition());

So blickt die Kamera zu jeder Zeit auf den Target-Node(das Zielobjekt). Wenn sich das Ziel dann bewegt, bewegt sich die Kamera mit, weil der camera_node bewegt wird, weil dieser ein Child von target_node ist. Und schließlich ist dann die Kamera selbst vom camera_node abhängig.
Um die Kamera um das Objekt zu drehen reichen bei mir dann zwei Zeilen:

C-/C++-Quelltext

1
2
OIS::MouseState mouse_state = game_env_.imgr->get_current_mouse_state();
camera_node_->yaw(Ogre::Degree(-mouse_state.X.rel * game_env_.render_time * 2));

So könnte man mit der Maus die Kamera um das Objekt drehen.

3

17.03.2011, 19:26

Danke für die Hilfe, ich werde es morgen mal ausprobieren.
MfG Ninjasturm

----------------------------
System: Windows 7 x64
IDE: Visual Studio 2010 Ultimate
Engine: Ogre3D


Favorisierte Programmiersprache: C++
Sonstige Programmiersprachen: AutoIT, PHP, Javascript
Sonstige Auszeichnungsprachen: HTML, CSS
---------------------------

Werbeanzeige

Ähnliche Themen