Как создать Orbit Camera с функцией масштабирования

Я новичок в 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;
}

но я могу сортировать орбиту вокруг точки, где находится камера, но только тогда, когда я использую зум с колесиком прокрутки, вместо вращения вокруг точки, в которой она вращается, где находится камера.
Как я могу изменить это, чтобы это вращалось только в точке?

0

Решение

Создайте два узла для вашей камеры — первый target и он находится в точке, где вы хотите вращаться.

Второй узел должен быть создан на некотором расстоянии от первого. Вы должны прикрепить его как дитя target и прикрепите свою камеру к этому узлу. Наконец, вы должны направить камеру на целевой узел (первый).

С этой настройкой вам просто нужно поместить целевой узел в интересующую вас точку и повернуть его, как вы хотите. Положение камеры будет следовать за целью, потому что это его ребенок. Переместив узел камеры ближе к целевому узлу, вы можете изменить уровень масштабирования.

0

Другие решения


По вопросам рекламы [email protected]