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.