Я новичок в OGRE и прочитал основные учебники, но не могу понять, как создать камеру на орбите с масштабированием колесика мыши.
вот мой код камеры
// Create the scene node(orbit camera)
node = mSceneMgr->getRootSceneNode()->createChildSceneNode("orbit", Ogre::Vector3(0, 100, -150));
node->attachObject(mCamera);
// create the second camera node(freecam)
node = mSceneMgr->getRootSceneNode()->createChildSceneNode("free", Ogre::Vector3(0, 100, 400));
// create the third camera node (3rd person robot cam)
node = mSceneMgr->getRootSceneNode()->createChildSceneNode("robocam", Ogre::Vector3(0, 100, -80));
И вот моя функция нажатия клавиш
bool BasicTutorial05::processUnbufferedInput(const Ogre::FrameEvent& evt)
{
Ogre::Vector3 transVector1 = Ogre::Vector3::ZERO;
if (cam1 == true)//when cam 1 is selected, bool cam1 will be true;
{
if (mKeyboard->isKeyDown(OIS::KC_S))
{
mSceneMgr->getSceneNode("orbit")->pitch(Ogre::Radian(-0.012f));
}
if (mKeyboard->isKeyDown(OIS::KC_W))
{
mSceneMgr->getSceneNode("orbit")->pitch(Ogre::Radian(0.012f));
}
if (mKeyboard->isKeyDown(OIS::KC_A))
{
mSceneMgr->getSceneNode("orbit")->yaw(Ogre::Radian(0.012f));
}
if (mKeyboard->isKeyDown(OIS::KC_D))
{
mSceneMgr->getSceneNode("orbit")->yaw(Ogre::Radian(-0.012f));
}
}
mSceneMgr->getSceneNode("orbit")->translate(transVector1 *evt.timeSinceLastFrame, Ogre::Node::TS_LOCAL);
}
и масштабирование колесика мыши
//zooming for orbit camera
Ogre::Vector3 transVector2 = Ogre::Vector3::ZERO;
if (mMouse->getMouseState().Z.rel != 0){
transVector2.z = -mMouse->getMouseState().Z.rel;
}
но я могу сортировать орбиту вокруг точки, где находится камера, но только тогда, когда я использую зум с колесиком прокрутки, вместо вращения вокруг точки, в которой она вращается, где находится камера.
Как я могу изменить это, чтобы это вращалось только в точке?
Создайте два узла для вашей камеры — первый target
и он находится в точке, где вы хотите вращаться.
Второй узел должен быть создан на некотором расстоянии от первого. Вы должны прикрепить его как дитя target
и прикрепите свою камеру к этому узлу. Наконец, вы должны направить камеру на целевой узел (первый).
С этой настройкой вам просто нужно поместить целевой узел в интересующую вас точку и повернуть его, как вы хотите. Положение камеры будет следовать за целью, потому что это его ребенок. Переместив узел камеры ближе к целевому узлу, вы можете изменить уровень масштабирования.