【问题标题】:How to create Orbit Camera with zooming function如何创建具有缩放功能的轨道相机
【发布时间】:2014-04-20 10:17:46
【问题描述】:

我是食人魔的新手,已阅读基本教程,但无法理解如何使用鼠标滚轮缩放创建轨道相机。

这是我的相机代码

// 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;
}

但我可以围绕相机所在的点进行排序,但只有当我使用滚轮滚动变焦时,而不是围绕一个点旋转,它会在相机所在的位置旋转。 我如何改变它只在一个点旋转?

【问题讨论】:

  • ...你的问题在哪里?
  • 我如何改变它只在一个点旋转?目前它在相机所在的位置旋转,但是当我使用鼠标滚轮缩放时,它会在相机所在的位置旋转。

标签: c++ ogre ogre3d


【解决方案1】:

为您的相机创建两个节点 - 第一个是 target,它放置在您要旋转的点处。

第二个节点应该与第一个节点相距一段距离。您应该将其附加为target 的子节点,并将您的相机附加到此节点。最后,您应该将相机对准目标节点(第一个)。

使用此设置,您只需将目标节点放在您感兴趣的位置,然后随意旋转即可。摄像机位置将跟随目标,因为这是他的孩子。通过将相机节点移近目标节点,您可以更改缩放级别。

【讨论】:

    猜你喜欢
    • 2011-06-02
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 2017-07-29
    • 2018-11-16
    相关资源
    最近更新 更多