2014-04-20 4 views
0

나는 오우거를 처음 접했고 기본 자습서를 읽었지만 마우스 휠 확대/축소를 사용하여 궤도 카메라를 만드는 방법을 이해할 수 없습니다. 여기 확대/축소 기능을 사용하여 궤도 카메라를 만드는 방법

내 카메라 코드

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

... 귀하의 질문은 어디에 있습니까? –

+0

포인트를 한 번만 돌리면 어떻게 바꿀 수 있습니까? 현재는 카메라가있는 지점에서 회전합니다. 그러나 마우스 휠 줌을 사용하면 카메라가있는 위치가 회전합니다. – user2640299

답변

0

카메라에 대한 두 개의 노드를 만듭니다. 첫 번째 노드는 target이며 회전하려는 위치에 배치됩니다.

두 번째 노드는 첫 번째 노드와 약간의 거리를두고 만들어야합니다. target의 하위 노드로 연결하고이 노드에 카메라를 연결해야합니다. 마지막으로 카메라를 대상 노드 (첫 번째 카메라)로 향하게해야합니다.

이 설정을 사용하면 대상 노드를 원하는 지점에 놓고 원하는대로 회전하면됩니다. 그의 카메라 위치 때문에 카메라 위치가 목표물을 따라갑니다. 그리고 카메라 노드를 대상 노드 가까이로 이동하면 줌 레벨을 변경할 수 있습니다.